implementation
Uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TMutex =
class(TObject)
end;
var
mHandle: THandle;
aCopyData: TCopyDataStruct;
pCh_wholeDeliveryParam: PChar;
s_paramFile,s_paramDest,s_paramFormCaption:
string;
i_ParamCountLoop:integer;
initialization
s_paramFormCaption := EmptyStr;
s_paramFile := paramstr(1);
s_paramDest := ParamStr(2);
// Einlesen der Titelzeile Parameter
for i_paramCountLoop := 3
to ParamCount
do
begin
if s_paramFormCaption = '
'
then
s_paramFormCaption := ParamStr(i_paramCountLoop)
else
s_paramFormCaption := s_paramFormCaption + '
' + ParamStr(i_paramCountLoop);
end;
// MUTEX erstellen damit später erkennbar ob schon eine Anwendung
//gestartet wurde
mHandle := CreateMutex(
Nil, True, PChar(s_paramFormCaption));
if GetLastError = ERROR_ALREADY_EXISTS
then
//Die Bedingung trifft zu, wenn die FurtherApp schon existiert.
//Dies ist der Fall, wenn das Programm bereits gestartet
//wurde.
Halt;
finalization
// wenn bereits eine Anwendung besteht dann Übergabe der eingegebenen Params
if mHandle <> 0
then
begin
// Prüfen ob die eingegebene Datei existiert
if (fileexists(s_paramFile))
then
pCh_wholeDeliveryParam := pchar(s_paramFile+ '
;' +s_paramDest+ '
;' +
s_paramFormCaption)
else
// wenn nicht dann "nichts" für die Datei übergeben
pCh_wholeDeliveryParam := pchar('
'+ '
;' +s_paramDest+ '
;' +
s_paramFormCaption);
with aCopyData
do begin
dwData := 0;
cbData := StrLen(pCh_wholeDeliveryParam) + 1;
lpData := pCh_wholeDeliveryParam;
end;
SendMessage(FindWindow('
TForm_CallAcro',
nil), WM_COPYDATA, Application.Handle,
Longint(@aCopyData));
CloseHandle(mHandle);
Application.Terminate;
end;
end.