powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / управление чужим окном
33 сообщений из 33, показаны все 2 страниц
управление чужим окном
    #35137018
max_111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Необходимо в стандартном окне выбора файла указать путь к файлу и нажать кнопку "Открыть".
Подскажите как это сделать?

авторобсуждалось - в поиск
ничего нет подходящего
...
Рейтинг: 0 / 0
управление чужим окном
    #35137197
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стандартное окно где ? В нотепаде ?
sendkeys, dde и т.д.
Или же пишите подробно. Что и зачем.
...
Рейтинг: 0 / 0
управление чужим окном
    #35137282
max_111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в ie на странице эмулирую клик по обьекту iput file, в открывшееся окно выбор файла мне нужно вставить путь к файлу и нажать кнопку сохранить.
...
Рейтинг: 0 / 0
управление чужим окном
    #35137609
max_111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
up
...
Рейтинг: 0 / 0
управление чужим окном
    #35137640
max_111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот попробывал что то слепить из примера, но не хочет
...
Рейтинг: 0 / 0
управление чужим окном
    #35137642
max_111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Any) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx& Lib "user32" _
Alias "FindWindowExA" (ByVal hWndParent As Long, ByVal hWndChildAfter As Long, ByVal lpClassName As String, ByVal lpWindowName As String)

Private Const WM_SETTEXT = &HC

Private Sub Command1_Click()
Dim lhWnd As Long
Dim Fhwnd As Long
Fhwnd = FindWindow(vbNullString, "Form1")
lhWnd = FindWindow(Fhwnd, Text1.hwnd)
SendMessage lhWnd, WM_SETTEXT,  0 , "Новый текст"
End Sub
...
Рейтинг: 0 / 0
управление чужим окном
    #35138142
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
max_111в ie на странице эмулирую клик по обьекту iput file, в открывшееся окно выбор файла мне нужно вставить путь к файлу и нажать кнопку сохранить.
Зачем в IE эмулировать, если им можно управлять. Разместите его на форме и через DOM управляйте им.
...
Рейтинг: 0 / 0
управление чужим окном
    #35138243
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
max_111в ie на странице эмулирую клик по обьекту iput file, в открывшееся окно выбор файла мне нужно вставить путь к файлу и нажать кнопку сохранить.Это абсолютно лишнее.
Код: plaintext
document.getElementById("если есть").value="c:\file.txt"
...
Рейтинг: 0 / 0
управление чужим окном
    #35138279
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разве input file разрешает так делать ? Так же можно все файлы с компа юзера утащить.
...
Рейтинг: 0 / 0
управление чужим окном
    #35138329
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм, действительно не позволяет. Я был уверен, что нельзя лишь скрипту.
...
Рейтинг: 0 / 0
управление чужим окном
    #35157487
max_111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
big-duke Разместите его на форме и через DOM управляйте им.
Это в смысле как?
...
Рейтинг: 0 / 0
управление чужим окном
    #35159356
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Размещаете на форме webbrowser и через его DOM управляете им.
...
Рейтинг: 0 / 0
управление чужим окном
    #35159465
max_111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
big-dukeРазмещаете на форме webbrowser и через его DOM управляете им.

не представляю себе как это возможно...

может все таки поможете по первому посту авторНеобходимо в стандартном окне выбора файла указать путь к файлу и нажать кнопку "Открыть".
...
Рейтинг: 0 / 0
управление чужим окном
    #35159731
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
управление чужим окном
    #35161364
max_111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
То что я понял, это то, что вы пытаетесь обьяснить мне, что заполнить этот обьект невозможно и события клик у него нет. Ссылки ведут на HTML и JavaScript, но мне вроде это не надо...
Я спршивал о том как заполнить "текстовое поле" и нажать кнопку "открыть" програмно, на VB, а как мне показалось, вы пытаетесь мне обьяснить это на HTML и скриптах, код я тоже выложил выше, внем я могу определить окно по его названию, но вот обьект "текстовое поле" и кнопку "отправить" у меня определить не получается. Вот это я и хотел узнать.
...
Рейтинг: 0 / 0
управление чужим окном
    #35161421
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Текстовые поля и кнопки в броузере - не окна , поэтому FindWindow и иже с ним не пройдут. Управление этими объектами осуществляется либо через DOM, либо (раз уж input file защищен) через тупое позиционирование курсора и
Код: plaintext
Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long) 
...
Рейтинг: 0 / 0
управление чужим окном
    #35161452
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин, затупил. Диалог стандартный, так что FindWindow, EnumChildWindows, SendMessage + WM_SETTEXT и т.д.
...
Рейтинг: 0 / 0
управление чужим окном
    #35161518
max_111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я это и спрашивал в первом посте. Наверно меня не поняли...
Вот я добился как найти окно "выбора файла", могу его переименовать, но к нужным оьбектам ну никак не въеду...
Вот проект прикрепил, может вам так будел легче мне деревянному объяснить...
...
Рейтинг: 0 / 0
управление чужим окном
    #35162673
Letter_D
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В Form2:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Private Sub Command1_Click()
Dim lhWnd As Long
Dim Fhwnd As Long
Dim Fhwnd2 As Long
Fhwnd = FindWindow(vbNullString, "Выбор файла")
Fhwnd2 = FindWindowEx(Fhwnd,  0 , "ComboBoxEx32", vbNullString)
SendMessage Fhwnd2, WM_SETTEXT,  0 , ByVal "Новый текст"
End Sub
...
Рейтинг: 0 / 0
управление чужим окном
    #35162755
max_111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо.
А как вы узнали что к текстовому полю нужно обратится ComboBoxEx32 ?
...
Рейтинг: 0 / 0
управление чужим окном
    #35162782
Letter_D
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотрел класс нужного окна.
У меня, как и у многих здесь, для просмотра всех процессов и окон своя прибамбасина есть... :))
...
Рейтинг: 0 / 0
управление чужим окном
    #35162820
max_111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
это типа SPY++ ?
вот для отправки текста используют WM_SETTEXT , а для того чтобы нажать кнопку что нужно отправить?
...
Рейтинг: 0 / 0
управление чужим окном
    #35162836
Letter_D
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Const BM_CLICK = &HF5
...
Рейтинг: 0 / 0
управление чужим окном
    #35162851
max_111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите пожалуйста где можно узнать эти все "команды"(хотябы часть)?
...
Рейтинг: 0 / 0
управление чужим окном
    #35163174
max_111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пытаюсь нажать на кнопку "открыть", но ругается что несовпадение типов

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Dim lhWnd As Long
Dim Fhwnd As Long
Dim Fhwnd2 As Long
Fhwnd = FindWindow(vbNullString, "Выбор файла")
Fhwnd2 = FindWindowEx(Fhwnd,  0 , "ComboBoxEx32", vbNullString)
SendMessage Fhwnd2, WM_SETTEXT,  0 , ByVal "Текст"

lhWnd = FindWindowEx(Fhwnd,  0 , "Button", "Открыть")
SendMessage lhWnd, BM_CLICK,  0 ,  0 
подсвечивает
SendMessage lhWnd, BM_CLICK, 0, 0

Что я сделал не так?
...
Рейтинг: 0 / 0
управление чужим окном
    #35163250
Letter_D
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
SendMessage lhWnd, BM_CLICK,  0 ,  0 &

Кроме того имя кнопки не "Открыть", а " & Открыть"
...
Рейтинг: 0 / 0
управление чужим окном
    #35163320
max_111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МЕГАреспект и огромное спасибо!!!

Последний вопрос: а зачем(почему) нужно поставить & после 0 ?
Еще раз спасибо.
...
Рейтинг: 0 / 0
управление чужим окном
    #35164930
Letter_D
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто в данном случае "0" надо было передать как Long.

А вообще интересная фича при объявлении SendMessage.
Последний параметр официально декларируется As Any, но можно объявить его и по другому.
Более того, помнится, на Relib.com (не помню тему) обсуждался глюк SendMessage (не работало!), который устранили только тем, что последний параметр объявили As String.
:))
...
Рейтинг: 0 / 0
управление чужим окном
    #35164935
Letter_D
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тьфу, непонятно написал.
Не саму передаваемую переменную описали. Это-то проблем бы не вызвало :)
Имел в виду, что при декларировании функции последний параметр изначально описали:
Declare Function SendMessage ... lParam As String ) As Long
...
Рейтинг: 0 / 0
управление чужим окном
    #35164944
max_111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я так понял из-за того что в имени кнопки есть & ?
авторlhWnd = FindWindowEx(Fhwnd, 0, "Button", "&Открыть")
Спасибо тебе за разьяснения и помощь, буду изучать открывшиеся для меня возможности
...
Рейтинг: 0 / 0
управление чужим окном
    #35165487
max_111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ступил.
Всем огромное спасибо
...
Рейтинг: 0 / 0
управление чужим окном
    #35192079
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересная проблема !

Имею код (ниже)
Типа АВТОДОЖИМАТЕЛЬ кнопки для Outlook2003
Есть поток ожидания для диалог. окно (работает ТОЛЬКО в режиме RunTime)

Когда подаеться команда нажать кнопку "&Справка" - все прекрасно
hBut = FindWindowEx(hwnd, ByVal 0&, "Button", "&Справка")

Изменяю кнопку - "Да" (обратить внимание название без амперсанта &)
hBut = FindWindowEx(hwnd, ByVal 0&, "Button", "Да") - не работает
указатель на окно возвращает правильно - проверяно............
перенос фокуса осуществляеться - заметно по окну ...

Общее впечатление что константа (Public Const BM_CLICK = &HF5)
Call SendMessage(hBut, BM_CLICK, 0&, 0&)
Не совсем проходит для этой кнопки

P.S. - полагаю следует обратить внимание, что кнопка не "ГОРЯЩАЯ"

Господа - граждане - товарищи, подскажите кто знает, который код
надо послать Public Const BM_CLICK = ??????????????

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Public Const BM_CLICK = &HF5
Public Const GW_HWNDNEXT =  2 
Public Const WM_SETFOCUS = &H7

Public Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwprocessid As Long) As Long
Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Public Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
Public Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Public Declare Function IsWindowEnabled Lib "user32" (ByVal hwnd As Long) As Long
Public Declare Function SetFocus Lib "user32" (ByVal hwnd As Long) As Long
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Function CreateThread Lib "kernel32" (ByVal lpThreadAttributes As Any, ByVal dwStackSize As Long, ByVal lpStartAddress As Long, lpParameter As Any, ByVal dwCreationFlags As Long, lpThreadID As Long) As Long
Public Declare Function TerminateThread Lib "kernel32" (ByVal hThread As Long, ByVal dwExitCode As Long) As Long
Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Public Declare Function MessageBox Lib "user32" Alias "MessageBoxA" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Sub SendFile(Whom As String, Path As String, Note As String)
  Dim Outlook As Object, Message As Object, lHandle As Long, lThreadId As Long
  Set Outlook = CreateObject("Outlook.Application")
  Set Message = Outlook.CreateItem(olMailItem)
  Message.To = Whom
  Message.Attachments.Add Path
  Message.Subject = Note
  lHandle = CreateThread(ByVal  0 &, ByVal  0 &, AddressOf Execute, ByVal  0 &, ByVal  0 &, lThreadId)
  Message.Send
  Call TerminateThread(lHandle, ByVal  0 &)
  Call CloseHandle(lHandle)
  Set Message = Nothing
  Outlook.Quit
  Set Outlook = Nothing
End Sub

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Public Sub Execute()
  Dim hwnd As Long, hBut As Long, bKey As Boolean, G As Long
  Do
    hwnd = GetHandleWindow("Microsoft Office Outlook", "#32770")
    DoEvents
  Loop Until hwnd >  0 
  Do
    'hBut = FindWindowEx(hwnd, ByVal 0&, "Button", "&Справка")
    hBut = FindWindowEx(hwnd, ByVal  0 &, "Button", "Да")
    DoEvents
  Loop Until hBut >  0 
  Do
    bKey = IsWindowEnabled(hBut)
    DoEvents
  Loop Until bKey
  Call SendMessage(hwnd, WM_SETFOCUS,  0 &,  0 &)
  Call SendMessage(hBut, BM_CLICK,  0 &,  0 &)
End Sub

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Public Function GetHandleWindow(fNaim As String, fClass As String, Optional fWnd As Long =  0 ) As Long
  Dim hwnd As Long, pWnd As Long, sNaim As String, sClass As String
  hwnd = FindWindow(vbNullString, vbNullString)
  Do While hwnd <>  0 
    sNaim = String( 255 , vbNullChar)
    Call GetWindowText(hwnd, sNaim, Len(sNaim))
    sClass = String( 255 , vbNullChar)
    Call GetClassName(hwnd, sClass, Len(sClass))
    If fWnd =  0  Then pWnd =  0  Else Call GetWindowThreadProcessId(hwnd, pWnd)
    If Left(sNaim, InStr(sNaim, vbNullChar) -  1 ) = fNaim And Left(sClass, InStr(sClass, vbNullChar) -  1 ) = fClass And pWnd = fWnd Then Exit Do
    hwnd = GetWindow(hwnd, GW_HWNDNEXT)
  Loop
  GetHandleWindow = hwnd
End Function
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
управление чужим окном
    #36427460
brumbrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
max_111,

в константах переменную пропиши
...
Рейтинг: 0 / 0
33 сообщений из 33, показаны все 2 страниц
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / управление чужим окном
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]