Все никак не пойму как отметить галочку или нажа кнопку на другом окне. Знаю, что нужно использовать FindWindow... Знаю, что можно делать SendMessage (например закрыть окно)... Есть окно с заголовком "Превед кроссафчег", на окне кнопка Закрыть и галочка с названием "Завершить процесс". Как можно нажать кнопку и отметить галочку ??? Просьба не отправлять на MSDN и не писать просто названия функций... Код (Text): .386 .model flat,stdcall option casemap:none include windows.inc include kernel32.inc includelib kernel32.lib include user32.inc includelib user32.lib .data lpWindowName db "Превед кроссафчег",0 .data? hWnd HWND ? .code start: invoke FindWindow,0,addr lpWindowName mov hWnd,eax invoke SendMessage,hWnd,WM_SYSCOMMAND,SC_CLOSE,0 invoke ExitProcess,0 end start
Сначала получаешь хендлы обеих кнопок (checkbox и pushbutton) одним из способов, которые найдешь на форуме или в гугле. Потом отправляешь первой SendMessage(..., BM_SETCHECK, ...) и второй - SendMessage(..., BM_CLICK, ...)
Найди хендлы родителя. А потом нужно перебрать все дочерние окна (КНОПКИ и всякая другая е...). Можно отправить WM_SETWINDOWTEXT (короче поменять заголовок окна) на кнопке выскочит надпись. Я делал так: В каждое дочернее окно отправлял строку с хендлом самого окна. Тут и сразу видно что и где почем. А еще проще запустить ТУЗЛУ которая мониторит все окна под курсором и выводит ХЕНДЛЫ и пр. ерунду и тд. и т.п. ... Привет!
У меня есть WindowFinder... Выводит счисла типа 000a06b4, но вроде они разные каждый раз (( Покажите рабочий исходник
окна кнопок спокойно ищутся либо через FindWindow, либо через перечисление дочерних окон окна программы через EnumChildWindows а потом SendMessage( ) и все дела
MSDN у меня на компе есть :p Работает, но почему-то только после второго нажатия. Что делать?? Код (Text): .386 .model flat,stdcall option casemap:none include windows.inc include kernel32.inc includelib kernel32.lib include user32.inc includelib user32.lib .data lpWindowName db "Îøèáêà ïðèëîæåíèÿ",0 lpszClass db "Button",0 lpszWindow db "ÎÊ",0 .data? hwndParent HWND ? hwndChild HWND ? .code start: invoke FindWindow,0,addr lpWindowName mov hwndParent,eax invoke FindWindowEx,hwndParent,0,addr lpszClass,addr lpszWindow mov hwndChild,eax invoke SendMessage,hwndChild,BM_CLICK,0,0 invoke ExitProcess,0 end start
REALiSTiC MSDN у меня на компе есть ... Например, MSDN BM_CLICK Message: "If the button is in a dialog box and the dialog box is not active, the BM_CLICK message might fail. To ensure success in this situation, call the SetActiveWindow function to activate the dialog box before sending the BM_CLICK message to the button."
Аналогичная проблема, только надо нажеть не кнопку, а тулбар, и в чужой проге. Посылал сообщение WM_LBUTTONDOWN/UP тулбару на нужную координату - ноль на массу; SetActivateWindow игнорируется естественно, WM_ACTIVATE с WA_ACTIVE/WA_CLICKACTIVE также(посылал как родительскому окну так и тулбару). Прога куда надо кликать написана на VB5. Благодарен за любые подсказки.