![]() |
WinAmp beenden?
Hi möchte Winamp automatisch beenden. Jetzt habe ich den Code :
Delphi-Quellcode:
gefunden.
var
run:boolean; Speed:integer; Programm:string; procedure SetRun(Value:boolean;Rate:integer;ProgrammName:string); var ThreadHandle: THandle; ThreadID: DWORD; procedure killProgramm; begin while Run do begin sleep(Speed); if FindWindow(NIL,PChar(Programm))<>0 then PostMessage(FindWindow(NIL,PChar(Programm)), wm_close, 1, 1); end; end; begin Speed:=Rate; Programm:=ProgrammName; if Run=Value then exit; Run:=Value; if Value then begin sleep(1); ThreadHandle:=CreateThread(nil, 0, TFNThreadStartRoutine(@killProgramm),@ProgrammName, 0, ThreadID); if ThreadHandle<>0 then CloseHandle(ThreadHandle); end; end; Er funzt auch einwandtfrei. Nur als zu schliesendes Programm kann ich nciht WinAmp eingeben, da es ja im Titel immer den Liednamen hat. Wie kann ich das ändern, bzw, was muss ich für einen Code benutzen? Danke im Vorraus |
Re: WinAmp beenden?
Hat da niemand eine Idee?
Es wäre dringend (für Sylvester) |
Re: WinAmp beenden?
Hi DJ-SPM,
du fragst mitten in der Nacht, ob dir jemand helfen könnte und eine Stunde später fragst du nochmal? Außerdem ist Silvester erst morgen :mrgreen: Also, ich habe da jetzt schnell mal was zusammen geschrieben. Funktioniert bei WinAMP 5 auf alle Fälle, bei den älteren Version weis ich das nicht so genau, aber so wie es aussieht, dürfte es da auch gehn.
Delphi-Quellcode:
Falls diese Funktion bei anderen WinAMP-Versionen nicht geht, musst du dir das FindWindow von denen holen, ich mache das immer mit
procedure TForm1.Button1Click(Sender: TObject);
var WinAMP : HWND; begin WinAMP:=findwindow(PChar('Winamp v1.x'),nil); if(WinAMP<>0) then begin PostMessage(WinAMP, WM_CLOSE, 0, 0); end; end; ![]() Musst nur mal probieren und bescheid geben. |
Re: WinAmp beenden?
Hi!
Ich mach es folgendermaßen, müsste eigentlich für alle Winamp-Versionen gehen:
Delphi-Quellcode:
hier die verwendeten Funktionen:
procedure TForm1.WinAmp1Click(Sender: TObject);
var hHandle: THandle; str: string; i: integer; LPARRAM : DWord; begin EnumWindows (@EnumWindowsProc,Integer(@LPARRAM)); for i:=0 to Listbox1.Items.count-1 do begin hHandle := FindWindow(nil, PChar(Listbox1.Items[i])); str:=gettext(hhandle); if pos('Playlist', str)<> 0 then begin dosomething //hhandle ist hier das Handle auf winamp
Delphi-Quellcode:
Dann hast du das Handle auf Winamp und das geht dann (getested bei Winamp 3 - 1.0).
function EnumWindowsProc(const hWnd : Longword; Param: lParam): LongBool; stdcall;
var Buffer: array[0..1024] of Char; begin Result := True; GetWindowText(hWnd, Buffer, sizeof(Buffer)); if lstrlen(Buffer) = 0 then begin exit; end else begin Form1.listbox1.items.Add (buffer); end; end; function GetText(Wnd: HWND): string; var textlength: Integer; Text: PChar; begin textlength := SendMessage(Wnd, WM_GETTEXTLENGTH, 0, 0); if textlength = 0 then Result := '' else begin GetMem(Text, textlength + 1); // Änderung -> if Assigned(Text) then try SendMessage(Wnd, WM_GETTEXT, textlength + 1, Integer(Text)); // Result := Text; // Änderung -> SetString(Result, Text, lstrlen(Text)); finally FreeMem(Text); end; end; end; Alternativ steht in der Titelzeile eigentlich immer (playing), wenn er grad spielt. Man kann auch danach suchen! Hoffe, das hilft! Ciao fkerber P.S.: Es gibt auch noch ne WinAmp Api, oder? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:14 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