$hw = wndfind("VNC Viewer") (hget(50,60))
131870(131862)
как мне получить хвнд по виндфинд а не по хгету, второй хвнд!?
или могу как то просканировать на все хвнд окон?
я это вижу как то так, но как снять хвнд
скрипт на поиск цифр есть на сайте
[spoiler]
$hw = wndfind("VNC Viewer")
SendMessage($hw, WM_GETTEXT, (WPARAM)256, (LPARAM)Text)
[/spoiler]
вот параметры окон
1[spoiler]
<?xml version="1.0" encoding="UTF-8"?>
<!--
Properties for window TvnWindowClass (0x0002031E)
Created by Window Detective
-->
<window>
<windowClass>
<name>TvnWindowClass</name>
<classExtraBytes>0</classExtraBytes>
<windowExtraBytes>0</windowExtraBytes>
<brush>
<handle>0x01100060</handle>
<style value="0" name="BS_SOLID"/>
<hatch value="0" name="HS_HORIZONTAL"/>
<colour red="255" green="255" blue="255"/>
</brush>
</windowClass>
<handle>0x0002031E</handle>
<parentHandle>0x00010014</parentHandle>
<windowText>ImPAD0314 - TightVNC Viewer</windowText>
<dimensions>
<rect x="-4" y="-4" width="252" height="252"/>
</dimensions>
<clientDimensions>
<rect x="0" y="30" width="244" height="214"/>
</clientDimensions>
<styleBits>382664704</styleBits>
<extendedStyleBits>256</extendedStyleBits>
<font>none</font>
<windowPropsList>
<windowProp>
<name>0x0000A918 (Atom)</name>
<data>0x00345F48</data>
</windowProp>
</windowPropsList>
<ownerProcessPath>F:\all\SOFT\TightVNC\tvnviewer.exe</ownerProcessPath>
<ownerProcessId>3496</ownerProcessId>
<ownerThreadId>3500</ownerThreadId>
</window>
[/spoiler]
2[spoiler]
<?xml version="1.0" encoding="UTF-8"?>
<!--
Properties for window TvnWindowClass (0x00020316)
Created by Window Detective
-->
<window>
<windowClass>
<name>TvnWindowClass</name>
<classExtraBytes>0</classExtraBytes>
<windowExtraBytes>0</windowExtraBytes>
<brush>
<handle>0x01100060</handle>
<style value="0" name="BS_SOLID"/>
<hatch value="0" name="HS_HORIZONTAL"/>
<colour red="255" green="255" blue="255"/>
</brush>
</windowClass>
<handle>0x00020316</handle>
<parentHandle>0x0002031E</parentHandle>
<windowText>ImPAD0314 - TightVNC Viewer</windowText>
<dimensions>
<rect x="0" y="59" width="244" height="185"/>
</dimensions>
<clientDimensions>
<rect x="0" y="59" width="244" height="185"/>
</clientDimensions>
<styleBits>1442840576</styleBits>
<extendedStyleBits>0</extendedStyleBits>
<font>none</font>
<windowPropsList>
<windowProp>
<name>0x0000A918 (Atom)</name>
<data>0xFFFFFFFF</data>
</windowProp>
</windowPropsList>
<ownerProcessPath>F:\all\SOFT\TightVNC\tvnviewer.exe</ownerProcessPath>
<ownerProcessId>3496</ownerProcessId>
<ownerThreadId>3500</ownerThreadId>
</window>
[/spoiler]
может по параметрам можно определять хвнд
вот можно же искать окна
[spoiler]
procedure Tform1.GetAllWindow;
Var
Wd : HWnd;
begin
ListBox1.Items.Clear; // Очистим список перед началом поисков
Wd:=FindWindow(0,0); // Найдем первое окно верхнего уровня любого класса
While (Wd<>0) do // Если такое окно существует
Begin
ListBox1.Items.Add(IntToStr(Wd)); // Добавим описатель в виде текста в список
Application.ProcessMessages; // Дадим возможность поработать другим
Wd:=GetNextWindow(Wd,GW_HWNDNEXT); // Найдем следующее окно в системе.
End;
end;
function EnumProc (Wd: HWnd; Param: LongInt): Boolean; stdcall; // Обязательно stdcall !!!
Var
Nm:Array[0..255] of Char; // буфер для имени
Cs: Array[0..255] of Char; // буфер для класса
Begin
GetWindowText(Wd,Nm,255); // считываем текст заголовка окна
GetClassName(Wd,Cs,255); // считываем название класса окна
ListBox1.Items.Add(String(Nm)+'/'+String(Cs)); // Добавляем название окна и класс в список
EnumProc := TRUE; // продолжать искать окна…
end;
function EnumProc (Wd: HWnd; Param: LongInt): Boolean; stdcall; // Обязательно stdcall !!!
Var
Nm:Array[0..255] of Char; // буфер для имени
Cs: Array[0..255] of Char; // буфер для класса
Ch:Char; //символ обозначающий, что окно минимизиравано
Begin
GetWindowText(Wd,Nm,255); // считываем текст заголовка окна
GetClassName(Wd,Cs,255); // считываем название класса окна
If IsIconic(Wd) then Ch:='+'
Else Ch:='-';
// Добавляем название окна и класс в список первый символ + означает, что окно - иконка
If Wd<>Form1.Handle then ListBox1.Items.Add(Ch+' '+String(Nm)+'/'+String(Cs));
EnumProc := TRUE;
end;
[/spoiler]