Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Topics - psyzum

Pages: [1]
1
$hw = wndfind("VNC Viewer") (hget(50,60))
131870(131862)
как мне получить хвнд по виндфинд а не по хгету, второй хвнд!?
или могу как то просканировать на все хвнд окон?

я это вижу как то так, но как снять хвнд  :o
 скрипт на поиск цифр есть на сайте
[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]

2
когда выбрать окно, то клики отрабатывает!
код простой, а работать не хочет в фоне(свёрнутом или не активным)
привязку делал к окну.
Так почему не работает в фоне VNC Viewer!?помогите решить проблему
k-meleon и Palemoon(браузеры) опробовал,работает в фоне
виндовоз XP
Code: [Select]
$hwnd = WNDFIND("ImPAD0314 - VNC Viewer")
//WNDSTATE(WNDFIND("ImPAD0314 - VNC Viewer"), 1)  //ñâåðíóòü îêíî ðàçâåðíóòü îêíî îêíî
//WNDPOS (WNDFIND("ImPAD0314 - VNC Viewer"), 0, 0) // êîîðäèíàòà
//WNDSIZE (WNDFIND("ImPAD0314 - VNC Viewer"), 123, 125) // øèðèíà, âûñîòà îêíà

$x = 992 // Êîîðäèíàòà ïî X
$y = 692 // Êîîðäèíàòà
$y1 = 647 // Êîîðäèíàòà ïî Y

postmessage($hwnd,0x0201,0x0001,$x+($y*65536))
waitms(50)
postmessage($hwnd,0x0202,0x0001,$x+($y*65536))
waitms(50)
postmessage($hwnd,0x0201,0x0001,$x+($y1*65536))
waitms(50)
postmessage($hwnd, 0x0202, 0x0001, $x + ($y1*65536))
waitms(50)

Pages: [1]