Abfrage Schließen Button eines Fensters mit Blitz3D
Übersicht

![]() |
JamaginBetreff: Abfrage Schließen Button eines Fensters mit Blitz3D |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo, wie kann man den Schließen Button eines Windows-Fenster mit Blitz3D abfangen bzw. deaktivieren? Ich habe schon die WinAPI Befehle durchgelesen, finde aber nichts wie ich das in BB3D umsetzen kann! Weiß da jemand einen Rat und um nicht alle Fragen einzeln zu stellen noch eine weitere. Wie kann ich verhindern das ein Programm mit BB3D mehrmals gestartet wird? Das Programm sollte immer nur einmal geöffnet werden können. Ich habe es über einen Dateischutz versucht doch was ist wenn ein Fatal Error kommt, dann kann der User das Programm nicht mehr starten, es sei denn diese Datei wird dann wieder gelöscht?
Es würde mir sehr helfen, wenn das jemand schon mal gemacht hat! Bitte! lg. Jamagin |
||
Bevor du etwas neues beginnst, erledige das alte |
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also das mit dem Mehrmals öffnen ist relativ simple mit UDP zu lösen. Wenn du ein Programm startest wird eine Nachricht an den localhost geschickt. Bekommt man eine Antwort, ist das Aktuelle Programm das was beendet werden muss. Wenn man keine Bekommt, kann das Programm starten. Dann muss man nur einen UDP Stream wieder einrichten welcher die ganze zeit auf Nachrichten wartet und wenn es eine Bekommt eine Antwort sendet ![]() Lg, Tobias |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
Jamagin |
![]() Antworten mit Zitat ![]() |
---|---|---|
Gibt es ein Beispiel dazu bitte?
lg. Jamagin |
||
Bevor du etwas neues beginnst, erledige das alte |
![]() |
Xaymarehemals "Cgamer" |
![]() Antworten mit Zitat ![]() |
---|---|---|
Um das Schließen eines BlitzBasic Fensters abzufangen, wirst du wohl kaum darum kommen eine UserLib zu verwenden: Ich habe hier dies schon mal für andere erledigt.
Ein Programm nur einmal starten zu lassen geht recht einfach: Pro Instanz (Pseudo-Code): Code: Sende leeres UDP Paket an 127.0.0.1 und Port 65552 und prüfe auf Antwort(100 ms warte zeit).
Wenn Antwort erhalten ( Fehlermeldung "Das Programm kann nur einmal gestartet werden!" ) Erstelle UDP Server auf Port 65552 ...(vorwärts zur Hauptschleife) Prüfe auf eingehende Pakete beim lokalen UDP Server und antworte auf diese. Eine schwerere, wenn auch effektivere Methode gibt es auch. Diese benötigt aber wiederum eine UserLib. Edit: Es geht aber auch noch einfacherer als mit UDP. |
||
Warbseite |
![]() |
Jamagin |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo Xaymar,
danke, bekomme aber die Fehlermeldung Userlib not found! Ich habe Windows7 und im system32 ordner gibt es aber keine lib namens Utility_CloseHandler.dll ? Wie nun ? lg. Jamagin NB: Wäre super wenn ich eine Antwort bekomme! |
||
Bevor du etwas neues beginnst, erledige das alte |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Natürlich musst du dabei die DLL mitliefern, die in Xaymars Beitrag verlinkt ist...
Anstatt mit Netzwerkbefehlen zu hantieren, würde ich aber mit der WinAPI prüfen, ob es schon ein Fenster mit dem Apptitle gibt. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Xaymarehemals "Cgamer" |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jamagin hat Folgendes geschrieben: Hallo Xaymar,
danke, bekomme aber die Fehlermeldung Userlib not found! Ich habe Windows7 und im system32 ordner gibt es aber keine lib namens Utility_CloseHandler.dll ? Wie nun ? lg. Jamagin NB: Wäre super wenn ich eine Antwort bekomme! Der SourceCode der DLL ist dem Thread beigelegt, sowie eine vor kompilierte Version. Wie UserLibs funktionieren, bzw. warum diese bei dir nicht funktioniert, sagt dir die Forensuche. ![]() |
||
Warbseite |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn es nur darum geht ein versehentliches Schließen des Fensters abzufangen, kann bei Graphics![]() Beispiel-Code: Graphics3D 800,600,0,6
|
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
Starwar |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
zu deinem Nur-eine-Instanz Frage: Benutze nicht die Netzwerkmethode. Netzwerkstreams sind für lokale Kommunikation nicht sonderlich gut geeignet. Dazu gibts "Named Pipes". Um aber die zweite Instanz zu verhindern reicht ein Mutex. Dazu einfach am Anfang des Programmes: Code: Const ERROR_ALREADY_EXISTS = 183
hMutex = CreateMutex(0, True, "MeinMutex") If hMutex <> 0 Then If GetLastError() = ERROR_ALREADY_EXISTS Then RuntimeError "Die Anwendung ist bereits gestartet!" End EndIf EndIf ReleaseMutex(hMutex) Und die decls: Code: .lib "kernel32.dll"
CreateMutex%(MutexAttributes%, InitialOwner%, name$):"CreateMutexA" ReleaseMutex%(handle%):"ReleaseMutex" GetLastError%():"GetLastError" MFG |
||
![]() |
Jamagin |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo Starwar,
Mann, vielen Dank! Genau das suchte ich!!! Super!!! Großes Dankeschön, hab es gerade eingebaut und es klappt super! lg. Jamagin |
||
Bevor du etwas neues beginnst, erledige das alte |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group