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 -->
hier
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.