Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
OpenWindow(0,0,0,200,200,#PB_Window_SystemMenu,"Semaphor-test")
ProcessIDServer.l
hTargetSem.l = CreateSemaphore_(0, 0, 1, "SPT") ; 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("Error","Tis Application is already running",0)
End
EndIf
EndIf
Repeat:Until WaitWindowEvent() = #PB_Event_CloseWindow
der string der bei CreateSemaphore_() als letzter parameter übergeben wird (in meinem beispiel "SPT") kann frei gewählt werden. man sollte nur bedenken das man versucht einen string zu wählen der nicht so einfach ist das er auch in einem anderen programm vorkommen könnte!
gruß nico
Procedure OnlyOne(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("Error","Tis Application is already running",0)
End
EndIf
EndIf
EndProcedure
OnlyOne("Ich bin einmalig")
OpenWindow(0,0,0,200,200,#PB_Window_SystemMenu,"Semaphor-test")
Repeat:Until WaitWindowEvent() = #PB_Event_CloseWindow
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Ich hätte da eigentlich noch ne frage: Kennt jemand den Unterschied, wenn man's mit Semaphore oder Mutex macht. Ich habs bisher immer mit Mutex gemacht. Einen Unterschied müßte es ja geben
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
danke dige, netter link, obwohl so ganz verstanden hab ich's nicht
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
; English forum: http://purebasic.myforums.net/viewtopic.php?t=8244&highlight=
; Author: freak
; Date: 10. November 2003
; Procedure that will be called for each window...
Procedure.l EnumProcedure(WindowHandle.l, Parameter.l)
; get Title by windowhandle...
Title$ = Space(200)
aa=GetWindowText_(WindowHandle, @Title$, 200)
Debug title$
Debug aa
; do whatever to check...
If FindString(Title$, "PureBasic", 1) <> 0
MessageRequester("","PB Editor found :)")
; returning 0 will stop the search
ProcedureReturn 0
Else
; returning <> 0 will continue till all windows are searched
ProcedureReturn 1
EndIf
EndProcedure
; find windows...
EnumWindows_(@EnumProcedure(), 0) ; the 0 will be passed in Paremeter.l to the procedure
End