Ahoi!
Hatte hier vor kurzem das Problem, dass mein Projekt nicht mit der Lösung aus der FAQ klar kam, dass man das Programm nur einmal ausführen kann.
Mittels eurer Hilfe hab ich das jetzt hinbekommen.
Nun stehe ich aber vorm nächsten Problem. Und zwar will ich beim erneuten Aufruf des Programms erreichen, dass das bereits existierende (ausgeführte) den neuen ParamStr(1) mitbekommt.
Zum Test hab ich in die dpr erstmal folgendes eingebaut:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| if (GetLastError = ERROR_ALREADY_EXISTS) then begin if ParamCount > 0 then begin showmessage(ParamStr(1)); dateiname := ParamStr(1); end; PostMessage(HWND_BROADCAST, easy01_pas.ActivationMessage, 0, 0); end; |
dateiname ist hier eine globale Variable in meiner easy01_pas (muss ja nich richtig sein - dachte mir nur, dass ich so den neuen ParamStr übergeben könnte).
Problem ist, dass dateiname nicht aktualisiert wird. In der procedure ApplicationEvents1Message hab ich mir ein ShowMessage auf dateiname gesetzt - da wurde aber immer nur der ausgegeben, den ich bei Form1.OnCreate deklariert habe, und kein aktualisierter...
Außerdem ist mir aufgefallen, dass dann das Programm (das bereits existierte) wie deaktiviert war - also so ein "Dong" beim Draufklicken und man kann dann mit dem Prog nicht mehr machen, außer es gewaltsam zu beenden. Nehme ich bei ApplicationEvents1Message das ShowMessage raus, funktioniert das Programm auch, wenn ich es ein zweites Mal öffnen will ganz normal weiter...
Kann mir da irgendjemand weiterhelfen, wie ich das neue ParamStr an das bereits bestehende Prog gesendet bekomme und woran das liegt, dass das Prog "deaktiviert" wird?
Wäre sehr schön. Schonmal besten Dank im Voraus
Moderiert von
Peter Lustig: Code- durch Delphi-Tags ersetzt und Topic verschoben
Sag mir, was du von mir hältst und ich sage dir, was du mich kannst.