Entwickler-Ecke
Windows API - unit AppEvnts macht Probleme
bockwurst - Mi 18.04.07 16:11
Titel: unit AppEvnts macht Probleme
Um einen doppleten Programmstart zuverhindern habe ich die Komponente TApplicationEvents (unit AppEvents) benutzt. Das klappt alles ganz wunderbar.
Nun aber!
Meine BDE Exception-Meldungen (auch TSession usw..) werden jetzt allerdings nicht mehr auf dem Bildschirm gezeigt. Wie kann ich dies ändern?
Es geht aber auch anders (nicht)!
ich habe ganz neue Anwendung mit einer HauptForm. In Form.create gebe ich 2 Zeilen Code ein.
Session.Addpassword('XXXX');
Session.NetfileDir('sdsdsd');
ich starte nun dieses Programm und es kommt eine Fehlermeldung (Fehler beim Init..) & "Falscher Pfad".
nun benutze ich TApplicationEvent und es kommt keine Fehlermeldung mehr.
Nun lösche ich noch meine Komponente. Und es kommt wieder keine Meldung. erst wenn ich in Uses die Unit AppEvnts lösche kommen wieder meine Meldungen
Andreas
HelgeLange - Mi 18.04.07 17:00
Um doppelten App-Start zu verhindern, kann man auch einfach einen Mutex kreieren :
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| CreateMutex(nil, false, 'MyAppName'); If GetLastError = ERROR_ALREADY_EXISTS then begin ShowMessage('Program already running'); Halt(0); end; Application.Initialize; ... |
bockwurst - Do 19.04.07 08:35
Vielen Dank HelgeLange,
habe nun aber meinen Fehler gefunden. Ich muß in TApplicationEvents in den Ereignissen ein in OnExecpetion MessageDlg einbauen.
Trotzdem möchte es es wie Du machen.
Alledings wäre es schon, wenn keine Meldung kommen würde (Programm already..), sondern ein gleich das (vorher geöffnete) Programm vorne auf den Bildschirm kommt. Dies geht mit
Application.restore;
SetForegroundWindow(Handle);
SetActiveWindow(Handle);
Nun fehlt mir aber der Handle.
Wie kann ich ihne bekommen und muß ich ein ReleaseMutex am Ende des Programms haben?
Andreas
BenBE - Sa 21.04.07 20:03
@Helge: CreateMutex liefert ein Handle auf ein HMUTEX zurück, welches beim Programm-Ende wieder mit CloseHandle geschlossen werden sollte. Daher sollte der Rückkgabewert auf jeden Fall abgefangen werden ...
HelgeLange - Sa 21.04.07 22:47
BenBE: so ist das, wenn man es mal schnell schreibt ;)
BenBE - Sa 21.04.07 23:56
Wie willst Du die 10:90-Ratio verbessern, wenn Du's andren selber nicht besser zeigst ;-)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!