Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi FindWindow ? ? (https://www.delphipraxis.net/18485-findwindow.html)

DeMo 19. Mär 2004 13:00


FindWindow ? ?
 
Ich weiß das ihr das wahrscheinlich schon 1000 mal besprochen habt !
Aber ich habe das ganze forum danach durchsucht aba nichts wirklich hilfreiches gefunden, wo soll cih den sonst hin :?

Also meine frage ist eigentlich simple, also eigentlich brauche ich nur hilfe ! Den ich weiß nicht wie man findwindow benutzt und wozu das eigentlich ist ! Also in allgemeinen weiß ich es ja , es übergibt mir die handle eines progs !jop aba ich weiß leider net was ich damit anfangen kann , gut ich weiß das man mit der handle das andere prog steuern kann aba wie? :gruebel: Und was muss ich da beachten ??

Es wäre toll wen ihr mir das an folgenden beispiel erklären könntet ! also ich will auf Windows MediaPlayer zugreifen ! und dann einfach auf die play tasete drücken ? Geht das? Wenn ja wäre ich dankbar wen mir jemand es erklären könnte !

ein gutes tut würde mir auch helfen ! danke im vorraus !
und nochmal sorry , aba ich wusste net wo ich sonst hin soll ^^ !

mfg DeMo

toms 19. Mär 2004 13:35

Re: FindWindow ? ?
 
Hi,

Ich habe mal ein Tutorial
darüber geschrieben.

Kurz gesagt,
besitzt jedes Fenster und Windows Control (Button, Editfeld usw) ein Handle.
Ein Handle ist eine 32-bit Zahl, (eigentlich ein Zeiger auf ein Objekt)

Wozu braucht man ein Fenster Handle?

Alle API Funktionen zum manipulieren von Fenstern verlangen ein Fenster Handle.
z.B ein Fenster verstecken, minimieren usw.

Wenn ein Fenster od. Control neu erstellt wird, wird ihm zugleich ein Fenster Handle zugewiesen.
(d.H, das Handle eines Fensters ändert sich immer)

Zusätzlich zu einem Fenster Handle
besitzt jedes Fenster einen Klassennamen und einen Fensternamen (kann auch ein leerer String sein)

Mit der FindWindow API kann man nun ein Fenster anhand seines Klassennamens, Fensternamens
(in allen Kombinationen) suchen und bekommt sein Fensterhandle zurück.

Bsp: Handle von Notepad ermitteln.

// handle zum Fenster // Klassenname von Notepad
Delphi-Quellcode:
var
    hWordWindow: HWND;
begin
  hNotepadWindow        := FindWindow('notepad', nil);
end;
Wenn man nun das Handle von Notepad bekommen hat, kann man Notepad
z.B mit der ShowWindow API verstecken:

Delphi-Quellcode:
ShowWindow(hNotepadWindow, SW_HIDE);

DeMo 19. Mär 2004 13:51

Re: FindWindow ? ?
 
Danke vielmals

toms schrieb:
Zitat:

Source:
Code:
var
    hWordWindow: HWND;
begin
  hNotepadWindow        := FindWindow('notepad', nil);
end;
hNotepadWindow ist doch nur ein schreibfehler und sollte eigentlich hWorldWindow wie oben definiert heißen oder?

Aba nochmal vielen dank das tut ist auch sehr hilfreich ! THX ^^
Noch eine frage :

Muss das Fenster(bzw Programm)offen sein ? damit ich die handle bekomme ? oda kann ich auch die handle von nicht aktiven progs bekommen ??

mfg DeMo

Luckie 19. Mär 2004 13:53

Re: FindWindow ? ?
 
´Nicht aktiv ja. Aber wa snicht existiert, kann auch kein Handle haben. ;)

DeMo 19. Mär 2004 14:13

Re: FindWindow ? ?
 
Aso klingt logisch ^^

aber hier wieso geht da net ??

Code:
var
  Form1: TForm1;
  hWinamp: HWND;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  hWinamp:= findwindow('Winamp',0);
  if hWinamp <> 0 then
    ShowMessage(' Habe Handle ^^')
  else
    ShowMessage(' Hat net Geklappt -__-');
end;
also das prog geht aba er bekommt die Handle net, also erscheint die nachricht "hat net geklappt -__-". warum ?? ist der name falsch ?? oda muss es anders rum sein ich weiß net was da falsch ist ! :wall:
Bitte um hilfe

toms 19. Mär 2004 14:30

Re: FindWindow ? ?
 
Zitat:

aber hier wieso geht da net ??
Weil 'Winamp' sehr wahrscheinlich ein anderer Klassenname hat.

DeMo 19. Mär 2004 14:47

Re: FindWindow ? ?
 
jop ok hast rechta aba wen ich das win api als namen nehme und nicht alls classen namen also :

hWinamp:= findwindow(0,'Winamp');


geht es auch net ! also ??

APP 19. Mär 2004 15:09

Re: FindWindow ? ?
 
Hallo DeMo,
wie schon toms geschrieben hat benötigt

Zitat:

Zitat von PSDK
HWND FindWindow(
LPCTSTR lpClassName,
LPCTSTR lpWindowName
);

als Paramter entweder den KlassenNamen oder den KOMPLETTEN FensterNamen des zu suchenden Controls.

Zu lpWindowName:
Bsp.: Wenn dein Fenster "Editor - Neu.txt" heißt, kannst Du nicht nur nach "Editor" suchen.


Um den KlassenNamen vom Winamp herauszufinden, kannst Du ein Tool benutzen (z:B. hier http://www.x-spy.net/de/index.html),
dass Dir den KlassenNamen jedes beliebigen Fensters/Controls liefert.

kiar 19. Mär 2004 15:15

Re: FindWindow ? ?
 
hallo armin,

der link ist schon länger tod.

habe es ebend wieder probiert.

raik

Motzi 19. Mär 2004 15:36

Re: FindWindow ? ?
 
Zitat:

Zitat von kiar
der link ist schon länger tod.

Nein, der Link ist nicht tot.. es gibt nur schon seit einiger Zeit Probleme mit der Domain, die nicht wirklich nachvollziehbar sind. Bei mir (dem besitzer der Domain) und meinem Freund (auf dessen Server die Seite liegt) funktioniert die Domain nämlich problemlos, bei einige (vor allem aus Deutschland) wiederum gar nicht. Mein Freund auf dessen Server das ganze liegt wohnt auch in Deutschland, was das ganze aber nur noch misteriöser macht.. :?

Du kannst aber mal die Subdomain http://motzi.fs-tools.de benutzen, die hat bis jetzt noch immer funktioniert.

Außerdem hab ich mir vor kurzem einen neuen Webspace besorgt auf den dann auch die X-Spy-Seite umziehen wird. Ich hoffe dass dann damit auch die Domain-Probleme entgültig verschwinden... :?


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:05 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz