![]() |
Handle ermitteln
Hi Leute,
habe mal eine Frage zu FindWindow: Ist es irgendwie möglich, die Funktion mittels eines Dateinamen anstatt lpClassName aufzurufen? Gibt es dafür eine andere Funktion, wie ich das Handle eines Programms mittels seines Dateinamen herausfinden kann? z.B. wenn ich eingebe:
Delphi-Quellcode:
dann klappt das wunderbar.
FindWindow('notepad',nil)
Wenn ich aber z.B. das Handle vom Windows Media Player haben will:
Delphi-Quellcode:
oder
FindWindow('wmplayer',nil)
Delphi-Quellcode:
funktioniert nicht.
FindWindow('Windows Media Player',nil)
Deshalb wollte ich es über den FileName machen, aber da komme ich nicht weiter... :gruebel: |
Re: Handle ermitteln
Hallo,
Bei mir findet es den MP so:
Delphi-Quellcode:
FindWindow('WMPlayerApp','Windows Media Player');
Zitat:
Zudem koennen zu einem Prozess mehrere Fenster gehoeren. Dann muesstest du noch das richtige finden. |
Re: Handle ermitteln
Danke erstmal, werd ich gleich ausprobieren.
Ich wollte es halt nur allgemein, also für JEDES Programm machen, deshalb über FileName... |
Re: Handle ermitteln
Zitat:
Meinetwegen kann der ganze Prozess beendet werden. Wie würde das denn gehen? Also Handle eines Prozesses erhalten ??? |
Re: Handle ermitteln
Zitat:
Was genau moechtest du mit den Handles machen? |
Re: Handle ermitteln
Also:
Ich starte zunächst ein Programm per ShellExecute. Dieses Programm läuft im Hintergrund, also SW_Hide. Da der Nutzer deshalb dieses Programm dann nur im Taskmanager beenden kann, will ich es eben so beenden:
Delphi-Quellcode:
Da das Programm im Normalfall der Windows Media Player ist, funzt der Code auch.
PostMessage(FindWindow('WMPlayerApp','Windows Media Player'),WM_SYSCOMMAND,SC_Close,0);
Der Benutzer soll aber das Programm auch ändern können (also ein anderes Programm für die Musikwiedergabe), und eben dann habe ich ein Problem mit dem Beenden... Zitat:
|
Re: Handle ermitteln
Kannst du nicht über
![]() |
Re: Handle ermitteln
Ich will das Programm schon "ordentlich" beenden, also nicht killen.
Ich weiß zwar nicht, wie CreateProcess funktioniert, aber ich habe das schon ausprobiert: Hab mir eine globale Integer-Variable genommen, in der das Handle meines Prozesses gespeichert wird. Danach wollte ich dann das Programm zu diesem Handle beenden:
Delphi-Quellcode:
Der Code hat aber leider nicht funktioniert...
//Programm starten und Handle speichern
FillChar(Info, SizeOf(Info), 0); Info.cbSize := SizeOf(Info); Info.Wnd := Application.Handle; Info.fMask := SEE_MASK_NOCLOSEPROCESS; Info.lpVerb := PChar('open'); Info.lpFile := PChar('C:\Programme\Windows Media Player\wmplayer.exe'); Info.nShow := SW_Hide; ShellExecuteEx(@Info); x := exInfo.hProcess; //x habe ich als globale Integer-Variable deklariert //dann Beenden: PostMessage(x,WM_SYSCOMMAND,SC_Close,0); |
Re: Handle ermitteln
Ein Prozess-Handle ist ja auch kein Fensterhandle.
Also damit es mit einem Dateinamen funktioniert: 1. Alle Prozesse auflisten (Forensuche) 2. Die dazugehörigen ProzssIDs und Dateinamen holen 3. Alle Fenster(handles) holen (Forensuche) 4. Vergleichen welches Handle zur ProzessID passt mit ![]() |
Re: Handle ermitteln
Schaut euch mal
![]() |
Re: Handle ermitteln
Danke, aber ich glaube, ich werde mich bei meinem Programm doch auf den Windows Media Player beschränken, da ich noch
![]() Bei dem ganzen handelt es sich um einen Bildschirmschoner, bei dem ich im Hintergrund Musik mit dem Windows Media Player wiedergeben will. Wer keinen Windows Media Player installiert hat, muss eben auf die Hintergrundmusik verzichten... |
Re: Handle ermitteln
Zitat:
|
Re: Handle ermitteln
Warum unbedingt ein FDremdprogramm benutzen? Wie wäre es mit der
![]() |
Re: Handle ermitteln
PlaySound() mit all ihren Parametern?
|
Re: Handle ermitteln
Nein, nein, nein....
Bei TMediaPlayer und bassdll gehen glaub ich immer nur eine Datei. Und bei PlaySound sogar nur WAV und nicht einmal MP3's. Und wer will schon immer den gleichen Song haben? Schonmal was von Playlist gehört? |
Re: Handle ermitteln
Wer hindert dich daran deinen eigenen MP3-Player mit Playlist zu implementieren?
|
Re: Handle ermitteln
Wie geht das?
|
Re: Handle ermitteln
du spielst einfach ein lied nach dem anderen ab !?
|
Re: Handle ermitteln
Bitte erstell für eine neue Frage einen neuen Thread mit einen sinnvollen Titel. Desweiteren könnte dir auch schon die Suche weiterhelfen.
|
Re: Handle ermitteln
Wozu muss der WMP offen sein, mit der Wunschplaylist des Users, und du bringst ihn nur zum Abspielen.
Wenn der User Musik haben möchte drückt er schon selber auf Play. Lass die Musik einfach weg. |
Re: Handle ermitteln
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz