Moin!
Ich möchte gern zählen, wie oft meine Anwendung gestartet wird, und jede neue Instanz auf einen anderen Monitor schieben, bzw. nicht starten, wenn schon alle angeschlossenen Bildschirme "belegt" sind. Dabei will ich jedoch nirgends einen persistenten Zähler führen, also war meine Idee in der
DPR folgendes zu tun:
Delphi-Quellcode:
var
i: Integer;
const
AppTitle = 'MyWindowNumber';
begin
Application.Initialize;
Application.Title := '_temp_';
i := 0;
while FindWindow('TApplication', PChar(AppTitle+IntToStr(i))) <> 0 do inc(i);
Application.Title := AppTitle+IntToStr(i);
if i<=Screen.MonitorCount then
begin
Application.CreateForm(...);
// usw.
Dumm ist nur, dass ich dann das Programm auf einmal nicht mehr aus der
IDE heraus starten kann! Erzeugen und die .exe starten tut wunderbar, in der
IDE ist der Button einfach deaktiviert und F9 macht einfach nichts. Versuche ich das Projekt neu zu öffnen, bekomme ich diese nette Meldung:
Code:
---------------------------
Fehler
---------------------------
Fehler im Modul : Der Aufruf von Application.CreateForm fehlt oder ist nicht korrekt.
---------------------------
OK Hilfe
---------------------------
Witzigerweise geht auf einmal alles wieder, wenn ich aus obigem QT einfach die Zeile
Application.Title := AppTitle+IntToStr(i);
auskommentiere, was mir erstmal verdammt unlogisch vorkommt. Zumal ein Zuweisen des Titels 3 Zeilen zuvor offenbar kein Problem für die
IDE war, und kompilieren so wie Starten ausserhalb Delphis geht ja auch mit dieser Zeile. Ich würd nur schon ganz gerne weiterhin debuggen können... Und das Projekt öffnen, ohne immer erst mit Notepad in der .dpr rumzukommentieren
. Was kann man da tun? (Gutes altes Delphi 7 hier. Es lebe Legacy!
)
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)