Seite 1 von 1
Tasklist := .F.
Verfasst: So, 18. Mär 2007 22:31
von AUGE_OHR
hi,
Ich hab mir eine analog Uhr gebastelt. Da ein "eckiger" XbpDialog
dabei "blöd" aussieht hab ich also einen "runden" XbpDialog daraus
gemacht.
Nun liegt die Uhr auf dem Desktop, aber ich wollte kein Icon in der
Taskbar haben sodas ich Tasklist := .F. gesetzt habe.
leider lässt sich die Uhr jetzt "mehrfach" starten und mein "Check"
funktioniert nicht weil ich in der Tasklist nur das Icon der Uhr sehe
aber es hat ja auch keinen "Title" ...
In der "Prozessliste" finde ich dann "ACLOCK.EXE" ... aber wie frage
ich den die ab ?
gruss by OHR
Jimmy
Verfasst: So, 18. Mär 2007 22:51
von Martin Altmann
Hallo Jimmy,
andere machen das über einen Mutex!
In den Alaska-Newsgroups tauchen immer wieder entsprechende Beispiele auf.
Beim Starten Deines Programmes erzeugst Du einen speziellen Mutex und danach fragst Du einen Fehlercode ab. War alles OK, lief Dein Programm noch nicht.
Beispiel:
Code: Alles auswählen
DLLFUNCTION CreateMutexA( SecAttr, nInitialOwn, cName ) USING STDCALL FROM KERNEL32.DLL
DLLFUNCTION GetLastError() USING STDCALL FROM KERNEL32.DLL
.
.
.
CreateMutexA( 0, 1, "Irgendeine_eineindeutige_beliebige_ID")
If GetLastError() == 183
MsgBox("Programm läuft bereits","Hinweis")
QUIT
Endif
Viele Grüße,
Martin
Re: Tasklist := .F.
Verfasst: Mi, 09. Okt 2019 14:21
von Manfred
ich bekomme immer 0 zurück.
Re: Tasklist := .F.
Verfasst: Mi, 09. Okt 2019 14:36
von Martin Altmann
Dann machst Du halt was verkehrt!
Code: Alles auswählen
#define MUTEX_ALL_ACCESS 2031617
LOCAL nH := DllCall( "KERNEL32.DLL", DLL_STDCALL, "OpenMutexA", MUTEX_ALL_ACCESS, 0, "EasyDogW.eXe" )
IF nH == 0
nH := DllCall( "KERNEL32.DLL", DLL_STDCALL, "CreateMutexA", 0, 0, "EasyDogW.eXe" )
ELSE
ConfirmBox( , "Das Programm wird bereits ausgeführt und kann nicht ein weiteres Mal gestartet werden!", "EASYDOG - Das Rassehundeausstellungsprogramm!", XBPMB_OK, XBPMB_CRITICAL + XBPMB_APPMODAL + XBPMB_MOVEABLE )
QUIT
ENDIF
DllCall( "KERNEL32.DLL", DLL_STDCALL, "ReleaseMutex", nH )
Denke an die supportedOS-Einträge in der .manifest-Datei - aber die hast Du ja sicherlich drin!
Viele Grüße,
Martin
Re: Tasklist := .F.
Verfasst: Mi, 09. Okt 2019 14:37
von Manfred
bei dem Code stürzt das Programm direkt ab.
Re: Tasklist := .F.
Verfasst: Mi, 09. Okt 2019 14:43
von Martin Altmann
Hast Du denn dll.ch included???
Re: Tasklist := .F.
Verfasst: Mi, 09. Okt 2019 14:52
von Manfred
Re: Tasklist := .F.
Verfasst: Mi, 09. Okt 2019 17:47
von ramses
Es gäbe dann noch ot4xb_single_instance() aus ot4xb das funktioniert sehr zuverlässig.