Что нового

ControlGetHandle на WinAPI. Как это выглядит?

EqKeeper

Новичок
Сообщения
29
Репутация
1
Доброго времени суток! Есть простенький скрипт:
$wnd = WinGetHandle("MainWindow")
$wnd1 = ControlGetHandle($wnd, "", "Internet Explorer_Server1")
$ctrl = ControlGetHandle($wnd1, "", "MacromediaFlashPlayerActiveX4")
Какими методами WinAPI можно реализовать ControlGetHandle?

Пробовал так:
IntPtr wnd1 = WinAPI.FindWindowEx(wnd1, IntPtr.Zero, "Internet Explorer_Server", null);
IntPtr ctrl = WinAPI.FindWindowEx(wnd2, IntPtr.Zero, "MacromediaFlashPlayerActiveX4", null);
Но FindWindowEx ничего не находит. =\ (хэндл == 0).
Дескриптор главного окна ($wnd = WinGetHandle("MainWindow")) верный в обих случаях.
 

VladUs

Скриптер
Сообщения
621
Репутация
182
EqKeeper [?]
Но FindWindowEx ничего не находит.

Вот результат поиска Handle кнопки "1" на калькуляторе
Код:
$hForm = WinGetHandle("Калькулятор Плюс")
$hwndControl = DllCall("User32.Dll","hwnd","FindWindowExW","hwnd",$hForm,"hwnd",0, "Wstr", "Button","Wstr", "1")
ConsoleWrite(  $hwndControl[0] & @CRLF)


А вот это откуды Вы взяли ?
Код:
IntPtr wnd1 = WinAPI.FindWindowEx(wnd1, IntPtr.Zero, "Internet Explorer_Server", null);
IntPtr ctrl = WinAPI.FindWindowEx(wnd2, IntPtr.Zero, "MacromediaFlashPlayerActiveX4", null);
Но FindWindowEx ничего не находит. =\ (хэндл == 0).
Данный код не будет работать в Autoit.
 
Автор
E

EqKeeper

Новичок
Сообщения
29
Репутация
1
Хм... а кто такое FindWindowExW? В user32.dll, вроде бы, есть только FindWindowEx? Нет? Можно какую-нибудь документашку по ней? Или это все таже FindWindowEx, просто в AutoIT называется иначе?

Ну, я пишу программу на C#. Нужно свершить страшное с одним контролом чужого окна. На AutoIt я это быстренько сделал вышеозначенным способом. Попытался реализовать тоже самое на C#, используя WinAPI - не получилось. =\ Просто не находит объекта с классом Internet Explorer_Server. =\ А AutoIT находит... =\
 

VladUs

Скриптер
Сообщения
621
Репутация
182
EqKeeper [?]
Можно какую-нибудь документашку по ней?
http://msdn.microsoft.com/en-us/library/ms633500(VS.85).aspx


Ну, я пишу программу на C#
Вот ресурс, в котором переведено огромное количество функций WinApi на язык Visual Basic .Net и C# .Net с примерами. Показано, как правельно вызывать неуправляемый код. Отличный источник для тех кто работает на этих языках.
http://pinvoke.net/default.aspx/user32/FindWindow.html
 
Верх