Allgemeine Fragen zur PROFAN Programmierung

Views (Heute): 242887 (4323)

| Suchen
| Zurück zur Übersicht

Autor | Thema: Ich will wissen, ob programme schon gestartet sind
Jörg Thorwesten
| Datum:26.06.02 16:35 (info@jthorwesten.de) |
Hallo! Ich habe folgendes Problem: Mein Programm soll ein anders Programm starten. Aber wenn ich das Programm ein zweites Mal ausführe, soll es nicht nochmal das gleiche Programm starten. Das heißt, ich möchte verhindern, dass das gleiche Programm zwei mal gestartet wird. Dafür muss ich aber prüfen, ob das Programm schon läuft (quasi den Task-Manager auslesen!). Wie mache ich das am besten? Oder geht das überhaupt? Vielen Dank im Voraus Jörg Thorwesten
Sven Schmidts
| Datum:26.06.02 17:51 (schmidts@flat2serv.de) |
Hallo, ich habe zwar keinen Quelltext zur Hand, aber such mal im Forum nach "Mutex". Du musst beim Start einen Mutex erzeugen und beim beenden wieder freigeben. Bekommst Du beim erstellen des Mutex eine Fehlermeldung, wurde er bereits erstellt, es läuft also bereits eine Instance. Mfg. Sven Schmidts
Gerd Telzerow
| Datum:26.06.02 22:20 (GTelzerow@T-Online.de) |
Hi, hier ein Quelltext! Def CreateMutex(3) !"KERNEL32","CreateMutexA" Def GetLastError(0) !"KERNEL32","GetLastError" Def CloseHandle(1) !"KERNEL32","CloseHandle" Declare MutexName#,Mutex& Proc ProcStart Declare error&,name$ 'Ein Name Let name$="Jörg Thorwesten" Dim MutexName#,Add(Len(name$),1) String MutexName#,0=name$ Let Mutex&=CreateMutex(0,1,Mutexname#) Let error&=GetLastError() Dispose MutexName# If And(Neq(Mutex&,0),Equ(error&,0)) 'Das Programm Else MessageBox("Das Programm ist schon aktiv","Programm Nam.",4112) CloseHandle(Mutex&) End EndIf Endproc MFG Gerd
Jörg Sellmeyer
| Datum:26.06.02 23:39 (joerse@gmx.de) |
Hallo, Ganz simpel kannst Du Dir auch eine Liste mit AddWindows "" erstellen und feststellen, ob der Fenstertitel Deines Programmes sich in der Liste befindet. Gruß Jörg
Bernhard Künzel
| Datum: 27.06.02 19:50 (b.kuenzel@chello.at) |
Hallo Jörg, wenn ich will, dass nur einmal das Programm gestartet werden darf, setze ich folgenden Programmcode ab der ersten Zeile, deshalb auch die Api-Aufrufe mit External daher kann ich bedenkenlos das Programm sofort mit END beenden 'vor jeden anderen Programmcode einsetzen Declare hM&,SymbName$ SymbName$="Irgendeinname"'hier wird der gewünschte Name eingesetzt hM&=External("KERNEL32","CreateMutexA",0,1,ADDR(SymbName$)) If External("KERNEL32","GetLastError") = $B7 'ERROR_ALREADY_EXISTS MessageBox("Das Programm läuft schon !","Meldung",16) External("KERNEL32","CloseHandle",hM&) End EndIf Gruß Bernhard

| Zurück zur Übersicht