Abfragen, ob Programm schon geöffnet wurde
Abfragen, ob Programm schon geöffnet wurde
Wie würdet ihr abfragen, ob ein Programm schon geöffnet wurde?
-kann man z.B. abfragen, ob das "C:\Programme\Programm.exe" läuft (also den ganzen Pfad)?
-kann man z.B. abfragen, ob das "C:\Programme\Programm.exe" läuft (also den ganzen Pfad)?
v6.00
Re: Abfragen, ob Programm schon geöffnet wurde
http://www.purebasic.fr/german/viewtopi ... 485#165485Thomas hat geschrieben:-kann man z.B. abfragen, ob das "C:\Programme\Programm.exe" läuft (also den ganzen Pfad)?
Grüße ... Kiffi
a²+b²=mc²
-
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
Ausgabe vom Befehl "ps ax" parsen.bobobo hat geschrieben:ich hab aber linux
Hab das Beispiel aus der Hilfe unter RunProgram mal verändert:
Code: Alles auswählen
Prg = RunProgram("ps", "ax", "", #PB_Program_Open|#PB_Program_Read)
Output$ = ""
If Compiler
While ProgramRunning(Prg)
Output$ + ReadProgramString(Prg) + Chr(13)
Wend
Output$ + Chr(13) + Chr(13)
Output$ + "Exitcode: " + Str(ProgramExitCode(Prg))
EndIf
MessageRequester("Output", Output$)
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
- NicknameFJ
- Beiträge: 324
- Registriert: 03.06.2007 14:36
- Wohnort: Von der Sonne aus gesehen der dritte Planet
Code: Alles auswählen
Procedure EinmaligerStart(EinmaligerName.s)
hTargetSem.l = CreateSemaphore_(0, 0, 1, @EinmaligerName); semaphore erstellen
If hTargetSem <> 0 ; prüfen ob semaphor schon im system vorhanden
If GetLastError_() = #ERROR_ALREADY_EXISTS ; semaphore is schon im system vorhanden
MessageRequester("Hinweis","Es kann immer nur eine Instanz des Programms gestartet werden!",#MB_ICONINFORMATION)
End
EndIf
EndIf
EndProcedure
EinmaligerStart("IrgendwasWasGarantiertNichtDoppeltKommtHierHin")
hmm .. folgendes checkt auch ein Laufen unter einem anderen UserAccount
(dafür reicht so 'n semaphore nicht ganz)
(hannich irjendwo in enne delphiforum jefunden und 'ne eck anjepaas)
(dafür reicht so 'n semaphore nicht ganz)
(hannich irjendwo in enne delphiforum jefunden und 'ne eck anjepaas)
Code: Alles auswählen
;folgende 2 Prozeduren entstammen dem Forum
;http://www.purebasic.fr/german/viewtopic.php?t=3928&start=0&postdays=0&postorder=asc&highlight=guid+erzeugen
Procedure.s Uni2Ansi(*Unicode.l)
size.l = WideCharToMultiByte_(#CP_ACP, 0, *Unicode, -1, #Null, #Null, #Null, #Null)
ansi.s=Space(size)
WideCharToMultiByte_(#CP_ACP, 0, *Unicode, -1, @ansi, size, #Null, #Null)
ProcedureReturn ansi
EndProcedure
Procedure.s GUIDcreate()
g.GUID
If CoCreateGuid_(@g) = #S_OK
unicodeGUID$ = Space(78)
GUIDLen = StringFromGUID2_(g, @unicodeGUID$, Len(unicodeGUID$))
ansiGUID$ = Left(Uni2Ansi(@unicodeGUID$), GUIDLen-1)
EndIf
ProcedureReturn ansiGUID$
EndProcedure
MMFName.s = Guidcreate() ;guiderzeugen
MMFHandle.l
LastError.w
;initialization
MMFHandle = OpenFileMapping_(#FILE_MAP_ALL_ACCESS, #False, MMFName);
LastError = GetLastError_()
If MMFHandle <> 0
MessageRequester("ohoo","Diese Anwendung wird bereits ausgeführt.",0)
EndIf
If (MMFHandle = 0) And (LastError = #ERROR_ACCESS_DENIED)
MessageRequester("ohooo","Diese Anwendung wird bereits unter einem anderem Benutzerkonto ausgeführt.")
EndIf
If (MMFHandle = 0) And (LastError = #ERROR_FILE_NOT_FOUND)
MMFHandle= CreateFileMapping_($FFFFFFFF, #NUL, #PAGE_READWRITE, 0, 1, MMFName)
MessageRequester("ahaaa","isch füül misch so jooot")
End
EndIf
If MMFHandle <> 0
CloseHandle_(MMFHandle)
EndIf
pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.