Hmm.. Ich bin nicht sicher, ob hier das richtige Forum ist.
Naja, ich erzähle einfach mal, was das Problem ist:
Von meinem Programm darf immer nur eine Instanz laufen. Startet man eine zweite, so wird eine Botschaft mit dem 1. Parameter an die erste geschickt, damit diese sich um die entsprechende Datei kümmert. Das übliche halt. Jetzt möchte ich aber, dass die erste Instanz nach Erhalt der Botschaft wieder sichtbar wird, falls sie minimiert ist. Ich dachte eigentlich, dass das trivial wäre, aber aus irgendeinem Grund ist es das nicht. Kurzum, ich kriege es nicht hin.
Hier der Code mit der Reaktion auf die Botschaft:
Delphi-Quellcode:
procedure TMeinForm.WMCopyData(var Message: TWMCopydata);
var
s : Array[0..255] of Char;
begin
Application.BringToFront; // nützt nichts
MeinForm.Show; // funktioniert auch nicht
MeinForm.SetFocus; // und das erst recht nicht
MeinForm.WindowState:=wsNormal; // das ebenfalls nicht
FlashWindow(Application.Handle, True); // das geht zwar, ist aber nicht, was ich will
StrLCopy(s, Message.CopyDataStruct.lpdata, Message.CopyDataStruct.cbdata);
if s<>'' then MachWas(s);
end;
Wo ist der Trick?
Firmly against signatures. And a hypocrite.