![]() |
Problem mit Parameter an eine laufende Instanz übergeben
Hi allesamt,
ich hab da ein Problem bei dem ich selber keinen Ausweg finde. Und zwar möchte ich meinem Programm auch Parameter übergeben, wenn es bereits läuft. Und das Programm natürlich nicht nochmal starten. Ich hab da auch ein scheinbar 100% passendes Tutorial auf SwissDelphiCenter gefunden --> ![]() Aber nachdem ich es nun eingebaut habe, startet die Applikation komplett nichtmehr. Ich poste unten den gesamten Quellcode der Programm-Datei. Wenn ich einen Breakpoint auf das erste begin setze, dann hält er dort auch an. Will ich dann mit F8 einen Schritt vor gehen, dann schließt sich das Programm sofort und ich lande wieder in der IDE. Die Funktionen im Hauptformular sind natürlich vorhanden. Ich hoffe jemand hier kann mir helfen. thx schonmal, Steffen
Delphi-Quellcode:
program MusicPlayer;
uses Forms, Windows, Messages, AC_Main in 'AC_Main.pas' {frmMain}, AC_OptGen in 'AC_OptGen.pas' {frmOptGen}, AC_Const in 'AC_Const.pas', AC_Sound in 'AC_Sound.pas', AC_About in 'AC_About.pas' {frmAbout}, AC_Wake in 'AC_Wake.pas' {frmWake}, AC_Search in 'AC_Search.pas' {frmSearch}, AC_Shortcuts in 'AC_Shortcuts.pas' {frmShortcuts}; {$R *.res} const cMutexID = 'EW-MusicPlayer'; var Mutex : THandle; HAPPLICATION : HWND; HMAINFORM : HWND; StartParams : String; CountParams : Integer; AtomSend : Integer; begin Mutex := CreateMutex(nil, True, cMutexID); if (Mutex <> 0) and (GetLastError = 0) then begin Application.Initialize; Application.CreateForm(TfrmMain, frmMain); Application.CreateForm(TfrmOptGen, frmOptGen); Application.CreateForm(TfrmAbout, frmAbout); Application.CreateForm(TfrmWake, frmWake); Application.CreateForm(TfrmSearch, frmSearch); Application.CreateForm(TfrmShortcuts, frmShortcuts); Application.Run; if (Mutex <> 0) then CloseHandle(Mutex); end else begin HAPPLICATION := 0; HMAINFORM := 0; Application.Initialize; repeat HAPPLICATION := FindWindowEx(0,HAPPLICATION, 'TApplication', PChar('EW-MusicPlayer')); until HAPPLICATION <> Application.Handle; if HAPPLICATION <> 0 then begin Windows.ShowWindow(HAPPLICATION, SW_Normal); Windows.SetForegroundWindow(HAPPLICATION); HMAINFORM := FindWindowEx(0,0,'TfrmMain', nil); if (HMAINFORM <> 0) then begin StartParams := ';'; for CountParams := 1 to ParamCount do StartParams := StartParams + ';' + ParamStr(CountParams); try AtomSend := GlobalAddAtom(PChar(StartParams)); SendMessage(HMAINFORM,WM_ACTIVATEEWMP,Length(StartParams),AtomSend); finally GlobalDeleteAtom(AtomSend); end; end; end; Halt; end; end. |
Re: Problem mit Parameter an eine laufende Instanz übergeben
Dann dürfte es einen Fehler im "Initialization"-Code einer der Units geben. Der wird nämlich vor dem "begin" ausgeführt.
Ist da irgendwas mit Multithreading in dem Programm? |
Re: Problem mit Parameter an eine laufende Instanz übergeben
hi,
danke für die Antwort. Das Problem hat sich irgendwie von selbst gelöst. Ich weiss nicht wie ichs gemacht hab. Plötzlich ging es wieder. hoffe das bleibt so greetz, Steffen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:28 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