powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Нажать кнопку меню в другой программе?
10 сообщений из 35, страница 2 из 2
Нажать кнопку меню в другой программе?
    #33322402
Значит заголовок окна неправильно записываешь.

У меня все прекрасно находит.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" ( _
  ByVal lpClassName As String, _
  ByVal lpWindowName As String) As Long

Sub x()
    Dim hwnd As Long
    
    hwnd = FindWindow(vbNullString, "Безымянный - Блокнот")
    
    MsgBox hwnd
End Sub

Можно также найти блокнот по классу окна, Например:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Declare Function FindWindow Lib "user32" Alias "FindWindowA" ( _
  ByVal strClassName As String, _
  ByVal lpWindowName As Any) As Long

Function IsAppLoaded(ByVal varClassName As Variant) As Long
   If IsNull(varClassName) Then
      IsAppLoaded =  0 
   Else
      IsAppLoaded = FindWindow(CStr(varClassName),  0 &)
   End If
End Function

Вызываешь так:
Код: plaintext
IsAppLoaded("notepad")
...
Рейтинг: 0 / 0
Нажать кнопку меню в другой программе?
    #33322489
Andres 1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может, лучше искать по классу? Вроде у Блокнота класс окна "Notepad"
Код: plaintext
1.
 hwnd = FindWindow("Notepad", vbNullString)
...
Рейтинг: 0 / 0
Нажать кнопку меню в другой программе?
    #33322493
Andres 1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пользователь2Можно также найти блокнот по классу окна,
Опоздал я :)
...
Рейтинг: 0 / 0
Нажать кнопку меню в другой программе?
    #33322883
vallot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я пошел другим путем, но и тут вопросы!!!
'---------------------------------------------------
Private Sub Command1_Click()

Dim RetVal
'---------------------------------------------------
RetVal = Shell("Notepad.exe", vbNormalFocus)
' AppActivate RetVal
'-----------------------------------------------------
SetCursorPos 30, 40
Нажать левую кнопку на мышке-как это записать?
End Sub
...
Рейтинг: 0 / 0
Нажать кнопку меню в другой программе?
    #33323033
Andres 1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vallot
Нажать левую кнопку на мышке-как это записать?
Краткое описание - получить hwnd top-most окна по этим координатам, послать ему (окну) сообщение WM_LBUTTONDOWN, потом WM_LBUTTONUP
...
Рейтинг: 0 / 0
Нажать кнопку меню в другой программе?
    #33323718
vallot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Public Declare Function GetMenu Lib "user32" (ByVal Hwnd As Long) As Long
Public Declare Function GetMenuItemID Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long
Public Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long, ByVal nPos 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 FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal Hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam 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 SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long
'---------------------------------
Private Sub Command1_Click()
Dim Hwnd As Long
Dim RetVal

Const MK_LBUTTON = &H1
Const MK_LBUTTONUP = нету числа
Const WM_LBUTTONDOWN = &H201

'---------------------------------------------------
RetVal = Shell("Notepad", vbNormalFocus)

SetCursorPos 30, 40 - установить курсор

Hwnd = FindWindow(vbNullString, "Untitled - Notepad") - найти хэндл

SendMessage Hwnd, WM_LBUTTONDOWN(MK_LBUTTON, 30, 40)
SendMessage Hwnd, WM_LBUTTONDOWN(MK_LBUTTONUP, 30, 40)--тоже
непонятно как записать правильно, вроде все эти параметры нужны???
End Sub
...
Рейтинг: 0 / 0
Нажать кнопку меню в другой программе?
    #33324126
vallot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну вот как мне самоучке не запутаться, судите сами.
Мне нужно кликнуть левой кнопкой мышки (курсор установлен), мне предлагают использовать команду
WM_LBUTTONDOWN. Отлично, иду на сайт MSDN, нахожу
синтаксис:
авторWM_LBUTTONDOWN fwKeys = wParam;
xPos = LOWORD(lParam);
yPos = HIWORD(lParam);

fwKeys=MK_LBUTTON

Вроде все понятно, но идем дальше:


Public Declare Function PostMessage Lib "user32" Alias "PostMessageA" _
(ByVal Hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long

PostMessage Hwnd, WM_LBUTTONDOWN, MK_LBUTTON, lParam
А параметр lParam состоит еще из двух параметров- x,y !
Получается лишнее количество параметров по сравнению с обьявлеными параметрами!!!А примеров нет, вот методом тыка и бьюсь,
результата нет!!! Поэтому я и прошу с примерами!!!
...
Рейтинг: 0 / 0
Нажать кнопку меню в другой программе?
    #33327101
vallot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все, что хотел сделать в Металиксе, я сделал в Notepad
и все сработало, но в самом Металиксе не идет!
------------------------------------------------------
Потому что в Notepad можно найти хэндлы меню,кнопок,вообщем все, что находится на главном окне Notepad, а в Металиксе нет!
---------------------------------------------------
Проверил с помощью Winspector окно Металикса - не отражается хэндл меню и кнопок! Есть только хэндл главного окна и тулбаров, что делать не знаю! (Кстати Solid Edge так же построен).
Что делать, не знаю!? Как кнопки или меню нажимать,какими командами?
Как их определить? Можно с SetcursorPos установить курсор прямо
на кнопку, но как потом нажать?
...
Рейтинг: 0 / 0
Нажать кнопку меню в другой программе?
    #33339517
vallot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Наконец то я сделал то, что хотел!
Сейчас то я уже понял, что Andres 1 прямо "на тарелочке" все выложил,
но у меня сразу не получилось и я начал метаться, прочел по этой теме
все что мог, но зато теперь мне все понятно (так я думаю :) )!
Всем кто помогал большое спасибо!
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Нажать кнопку меню в другой программе?
    #37195290
savva25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ребята подскажите как сделать чтоб при запуске virtual pc 2007 запускалась ОС сразу плиз оч надо ! Ос одна.
...
Рейтинг: 0 / 0
10 сообщений из 35, страница 2 из 2
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Нажать кнопку меню в другой программе?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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