Hallo,
ich benutze folgenden Code in meiner Anwendung, um die Anwedung nur einmal zu starten und um sie in den Vordergrund zu bringen. Dass funktioniert alles super, nur beim Übertragen eines Paramters habe ich ein paar Probleme:
Zunächst die oneinst:
Oneinst
Nun habe ich vor SetForegroundWindow(Wnd); folgenden Code eingefügt:
Delphi-Quellcode:
var
MyCopyDataStruct: TCopyDataStruct;
begin
If ParamStr(1) <> '' then with MyCopyDataStruct do
begin
dwData:=SecondInstID; // ID mit der sich das zweite Programm meldet
cbData:=Length(PChar(ParamStr(1))) + 1;
lpData:=PChar(ParamStr(1));
SendMessage(Wnd, WM_COPYDATA, 0, LPARAM(@MyCopyDataStruct));
end;
end;
Dann habe ich in meiner
Unit die Prozedur für das Abfangen des Paramters eingebaut:
Delphi-Quellcode:
procedure TForm1.WMCOPYDATA(var Msg: TWMCopyData);
var
sText: array of Char;
begin
If Msg.CopyDataStruct.dwData = SecondInstID then //siehe Oben
begin
SetLength(sText,Msg.CopyDataStruct.cbData);
StrLCopy(PChar(sText), Msg.CopyDataStruct.lpData, Msg.CopyDataStruct.cbData);
NewAVObject(PChar(sText));
end;
end;
Mein Problem liegt nun darin, dass diese Prozedur gar nicht auferufen wird.
Hat jemand eine Ahnung woran das liegen könnte?
Gruß
Mazel