Autor Téma: FindWindow  (Přečteno 181 krát)

Marek.L

  • Host
FindWindow
« kdy: 05-10-2017, 19:32:24 »
Zdravím.
Můj první pokus s něčím takovým.

Kód: Delphi [Vybrat]
  1. var
  2.   WndHandle : HWND;
  3. begin
  4.   WndHandle := FindWindow('NOTEPAD',Nil);
  5. end;

Je to ok a vidím Handle co mí vratí tato funkce.

Když to však zkusím na nějaký jiný prográmek, nefunguje to.
Jsem třeba spustil WinBox.
hWordWindow := FindWindow ('winbox', nil);
Funkce mi vrací handle 0

Co dělám špatně?

Offline Viktor Marek

  • Mladík
  • **
  • Příspěvků: 65
  • Karma: 0
    • Verze Delphi: Delphi 5
Re:FindWindow
« Odpověď #1 kdy: 05-10-2017, 20:57:42 »
Zkus zjistit Caption okna WinBoxu touto funkcí.

//Zjištění Captionu aktivního okna
Function GetActiveTitle: string;
  var PC: array[0..$FFF] of Char;
        Handle: HWnd;
begin
  Handle:=GetForegroundWindow;
  SendMessage(Handle, WM_GETTEXT, $FFF, Longint(@PC));
  Result:=StrPas(PC);

Offline Delfin

  • Hrdina
  • ****
  • Příspěvků: 433
  • Karma: 22
  • SW konzultant
    • Verze Delphi: 2009, Tokyo
Re:FindWindow
« Odpověď #2 kdy: 05-10-2017, 21:18:42 »
Aplikaci typu Spy++ si zjisti nazev tridy okna (class name, ne caption je to co predavas jako 1. parametr). Nebo bezpecneji proiteruj top level okna a zeptej se jakemu patri procesu. Otazkou zustava proc ten handle cizi aplikace vlastne chces.
« Poslední změna: 05-10-2017, 21:21:46 od Delfin »
A co chudinky ovce? Koupíš jim snad plovací vesty? Nebo jim nasadíš chůdy? Ještě lepší, kdybys je zkřížil s delfíny na ovce hopkavé!

 

S rychlou odpovědí můžete používat BB kódy a emotikony jako v běžném okně pro odpověď, ale daleko rychleji.

Jméno: E-mail:
Ověření:
Kolik je šest plus čtyři (slovem):