powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / управление чужим окном
8 сообщений из 33, страница 2 из 2
управление чужим окном
    #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
8 сообщений из 33, страница 2 из 2
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / управление чужим окном
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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