Programm nur einmal ausführbar
Übersicht

CydericBetreff: Programm nur einmal ausführbar |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hey,
ich hab zwar die Forensuche benutzt aber hab nichts hilfreiches gefunden (eine DLL, aber die ist auch nicht mehr erreichbar). Ich will das mein Programm sich nur einmal ausführen lässt. Nehmen wir an er lädt sich das Programm 5 mal runter, kann er trotzdem nur eine Kopie davon starten. Letztendlich muss ich ja nur noch dem Prozessnamen suchen. kann mir da jmd Tips geben vllt zur Windows API sodass ich da nicht gleich eine DLL mit liefern muss? Hab noch überlegt ob ichs mir einfach mach und einfach irgendwo eine Datei hinwerf ...aber das wäre auf so viele Weisen unsauber gelöst, dass ichs doch lieber anhand des Prozesses überprüfen will. Danke PS. Der Thread in dem es einen Tipp gibt zu dem Thema hilft mir nicht, da es sich um B3D Programme allgemein handelt. Und die Leute die mein Programm benutzen haben evtl mehrere B3D Programme am laufen. |
||
Native ITler |
![]() |
the FR3AK |
![]() Antworten mit Zitat ![]() |
---|---|---|
Am einfachsten geht es, wenn du mit der Winapi Funktion "FindWindow" das Programm suchst und wenn es gefunden wurde, nicht starten lässt, da es ja schon gestartet ist. | ||
Cyderic |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke für den Tip, allerdings hat dieses Programm kein Fenster, es wird im Hintergrund ausgeführt.
Das ist mein Problem dabei^^ (Hätt ich erwähnen sollen, sry) |
||
Native ITler |
![]() |
ozzi789 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hier, für dich und weitere ![]() https://www.blitzforum.de/foru...536#401536 |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
![]() |
BtbN |
![]() Antworten mit Zitat ![]() |
---|---|---|
Die ganz banale variante ist, einfach einen UDP Port zu binden, und versuchen, beim start diesen zu holen. Wenns nicht klappt, läuft das programm schon, und man kann sogar befehle senden. | ||
![]() |
ozzi789 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Gute Idee BtbN
Jedoch sollte man bedenken, dass falls ein User eine Desktopfirewall installiert hat, dies je nach dem geblockt werden kann. |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
![]() |
BtbN |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bei UDP nicht so oft wie bei TCP, und package loss sollte ja aufm localhost nicht das Problem sein.
Ne Firewall die kommunikation mit localhost blockt ist aber eher ramsch als nützlich.. |
||
![]() |
ozzi789 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wobei du wieder Recht hast.
Betreffend UDP, wusst ich nicht ![]() Und ja, Package loss kann man getrost ignorieren. Hab ich wieder was dazu gelernt! |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
Versuch es mal hiermit
Code: [AUSKLAPPEN] ;Kernel32.decls
;CreateMutex%(MutexAttributes%, InitialOwner%, name$):"CreateMutexA" ;ReleaseMutex%(Handle%):"ReleaseMutex" ; ;GetLastError%():"GetLastError" ;BlitzPlusbeispiel: Const ERROR_ALREADY_EXISTS = 183 hMutex = CreateMutex(0, True, "BlitzMax_Window_Class") If hMutex <> 0 Then If GetLastError() = ERROR_ALREADY_EXISTS Then RuntimeError "Diese Anwendung läuft bereits!" End If End If ReleaseMutex(hMutex) window = CreateWindow("Titel", 0, 0, 200, 200, 0, 3) Repeat Until WaitEvent() = $803 End ;BB3D Beispiel Const ERROR_ALREADY_EXISTS = 183 hMutex = CreateMutex(0, True, "Blitz Runtime Class") If hMutex <> 0 Then If GetLastError() = ERROR_ALREADY_EXISTS Then RuntimeError "Diese Anwendung läuft bereits!" End If End If ReleaseMutex(hMutex) Print "Hallöle!" WaitKey End |
||
[BB2D | BB3D | BB+]
|
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group