Win Api (delphi)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by STLcRash, 14 Dec 2010.

  1. STLcRash

    STLcRash New Member

    Joined:
    4 Jun 2009
    Messages:
    39
    Likes Received:
    0
    Reputations:
    0
    Задача такая: Получить HWND flash игры. (vkontakte.appXXXXXXXX).
    Игра подгружается в программу через twebbrowser.
    Раньше находил её HWND через координаты на экране. Теперь программа работает с флешкой в плностью фоновом режиме старый способ никуда не годится. Мне посоветовали через FindWindowEx сделать, но ничего не выходит...
    Добавил и старый способ и новый.
    По "старому" методу всё работает на ура, новый не находит. Посоветуйте пожалуйста, как быть?

    Code:
    Function GetHinstanse(WD:HWND): LongInt;
    Begin
      Result:=GetWindowLong(Wd, GWL_HWNDPARENT);
    End;
    
    
    procedure TForm1.GetHWNDClick(Sender: TObject);
    var
    PT:TPOINT;
    PARENT,BrowserH,HWndFromFindWindowEx:hwnd;
    Nm:Array[0..255] of Char;  // буфер для имени
    Cs: Array[0..255] of Char; // буфер для класса
    begin
    KEI_LIST.lines.Add(#13);//разделитель
    PT.x:=400; PT.Y:=400;
    Pt := ClientToScreen(Pt);
    BrowserH:=windows.WindowFromPoint(PT);//получаем HWND из координат
    GetWindowText(BrowserH,Nm,255);       //заголовок
    GetClassName(BrowserH, Cs, 256);      //класс
    KEI_LIST.lines.Add('---VG.SWF------');
    KEI_LIST.lines.Add(IntToStr(BrowserH));
    KEI_LIST.lines.Add(string(Nm)+'|'+string(Cs));
    KEI_LIST.lines.Add('----PARENT-----');
    PARENT:=GetHinstanse(BrowserH);             //ищим родительское окно
    KEI_LIST.lines.Add(IntToStr(PARENT));
    GetWindowText(GetHinstanse(PARENT),Nm,255); //заголовок
    GetClassName(GetHinstanse(PARENT), Cs, 256);//класс
    KEI_LIST.lines.Add(string(Nm)+'|'+string(Cs));
    KEI_LIST.lines.Add('---FindWindowEx--');
    HWndFromFindWindowEx:=FindWindowEx(FindWindow('Shell DocObject View', ''),0,'MacromediaFlashPlayerActiveX',nil);
    GetWindowText(HWndFromFindWindowEx,Nm,255);       //заголовок
    GetClassName(HWndFromFindWindowEx, Cs, 256);      //класс
    KEI_LIST.lines.Add(IntToStr(HWndFromFindWindowEx));
    KEI_LIST.lines.Add(string(Nm)+'|'+string(Cs));
    KEI_LIST.lines.Add('-----------------');
    end;
    Результат:
    В чем может быть проблема?

    Пробовал и так:
    Code:
    procedure TForm1.GetHWNDClick(Sender: TObject);
    var
    PT:TPOINT;
    PARENT,HWndFromFindWindowEx:hwnd;
    Nm:Array[0..255] of Char;  // буфер для имени
    Cs,Cs1: Array[0..255] of Char; // буфер для класса
    begin
    KEI_LIST.lines.Add(#13);//разделитель
    PT.x:=400; PT.Y:=400;
    Pt := ClientToScreen(Pt);
    BrowserH:=windows.WindowFromPoint(PT);//получаем HWND из координат
    GetWindowText(BrowserH,Nm,255);       //заголовок
    GetClassName(BrowserH, Cs, 256);      //класс
    cs1:=cs;
    KEI_LIST.lines.Add('---VG.SWF------');
    KEI_LIST.lines.Add(IntToStr(BrowserH));
    KEI_LIST.lines.Add(string(Nm)+'|'+string(Cs));
    KEI_LIST.lines.Add('----PARENT-----');
    PARENT:=GetHinstanse(BrowserH);             //ищим родительское окно
    KEI_LIST.lines.Add(IntToStr(PARENT));
    GetWindowText(GetHinstanse(PARENT),Nm,255); //заголовок
    GetClassName(GetHinstanse(PARENT), Cs, 256);//класс
    KEI_LIST.lines.Add(string(Nm)+'|'+string(Cs));
    KEI_LIST.lines.Add('---FindWindowEx--');
    HWndFromFindWindowEx:=FindWindowEx(FindWindow(Cs, nil),0,cs1,nil);
    GetWindowText(HWndFromFindWindowEx,Nm,255);       //заголовок
    GetClassName(HWndFromFindWindowEx, Cs, 256);      //класс
    KEI_LIST.lines.Add(IntToStr(HWndFromFindWindowEx));
    KEI_LIST.lines.Add(string(Nm)+'|'+string(Cs));
    KEI_LIST.lines.Add('-----------------');
    end;
    Тот - же результат... :mad:
     
  2. AlexTheC0d3r

    AlexTheC0d3r Elder - Старейшина

    Joined:
    25 Jul 2008
    Messages:
    388
    Likes Received:
    179
    Reputations:
    18
  3. 0pTik

    0pTik Banned

    Joined:
    18 Jul 2010
    Messages:
    240
    Likes Received:
    85
    Reputations:
    17
    Inq Soft Window Scanner
     
  4. STLcRash

    STLcRash New Member

    Joined:
    4 Jun 2009
    Messages:
    39
    Likes Received:
    0
    Reputations:
    0
    Спасибо, нашел выход, надо было плясать от самой формы и в итоге добраться до флешки.