Programm ohne Fenster schliessen ohne Blut zu verspritzen

Für allgemeine Fragen zur Programmierung mit PureBasic.
3dhubiflieger
Beiträge: 123
Registriert: 27.10.2013 12:13

Re: Programm ohne Fenster schliessen ohne Blut zu verspritze

Beitrag von 3dhubiflieger »

..Na gut. Dann werd ich wohl ne Kombination aus ALT F4 und abschiessen als Prozedure basteln.
Zuerst testen obs mit ALT F4 beendet ist und danach abmurksen. Jetzt gibt es blos wieder das Problem das ich das mit ALT F4 nicht hinkriege...Hab mal kurz folgenden Code probiert...geht aber net !

Code: Alles auswählen



;Zsnesw im Vollbild starten !

Delay(5000) ;in der Zeit zu Zsnes switchen und warten
handle = GetForegroundWindow_()  ;handle holen


;Jetzt testweise ALT F4 zum Handle senden geht net...warum ?
SendMessage_( handle, #WM_KEYDOWN,#VK_MENU,0) ;vk_menu ist doch ALT ?
SendMessage_( handle, #WM_KEYDOWN,#VK_F4,0) 
Delay(500)
SendMessage_( handle, #WM_KEYUP,#VK_MENU,0) 
SendMessage_( handle, #WM_KEYUP,#VK_F4,0) 


Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Programm ohne Fenster schliessen ohne Blut zu verspritze

Beitrag von NicTheQuick »

Unter Linux gibt es SIGTERM und SIGKILL, also Signale, die man an Prozesse schicken kann. SIGTERM bedeutet in dem Fall, dass der Prozess sich selbst beenden soll und SIGKILL bedeutet, dass der Prozess tatsächlich einfach abgeschossen/gekillt wird. Und das ist unabhängig von irgendwelchen Fenstern, die der Prozess offen haben kann. Unter Windows müsste es sowas doch auch geben, dass man bestimmte Signale an Prozesse schicken kann.

Siehe auch hier: Win32 API analog of sending/catching SIGTERM
3dhubiflieger
Beiträge: 123
Registriert: 27.10.2013 12:13

Re: Programm ohne Fenster schliessen ohne Blut zu verspritze

Beitrag von 3dhubiflieger »

Ich würde ja gerne Signale verschicken, aber damit hab ich noch weniger Ahnung. Im Moment versuch ich mich auch grad mit ALT F4....aber selbst das klappt net.... :(
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Programm ohne Fenster schliessen ohne Blut zu verspritze

Beitrag von Kiffi »

<OT>
CodeCommander hat geschrieben:Wenn man keine Ahnung hat, einfach Fresse halten.
ob und wann wir unsere "Fresse" halten, hast Du nicht zu entscheiden. Achte auf Deinen Ton, CodeCommander!

3dhubiflieger selber hat in seinem Ursprungsposting ein zu schließendes Fenster erwähnt. Die darauf folgenden Antworten sind demzufolge nachvollziehbar und keineswegs so lächerlich, wie Du es gerne darstellen möchtest.

</OT>
a²+b²=mc²
Benutzeravatar
CodeCommander
Beiträge: 213
Registriert: 02.03.2014 16:06

Beitrag von CodeCommander »

~ DELETE ~
Zuletzt geändert von CodeCommander am 18.01.2015 14:40, insgesamt 1-mal geändert.
~ DELETE ~
3dhubiflieger
Beiträge: 123
Registriert: 27.10.2013 12:13

Re: Programm ohne Fenster schliessen ohne Blut zu verspritze

Beitrag von 3dhubiflieger »

So...ich hab jetzt erstmal das mit dem ALT F4 mir selbst zusammengebastelt. Auch wenn ich damit nicht 100 % ig alles abdecke.
Mit Sendmessage krieg ichs net hin. Ausserdem scheint hier das Delay ne Rolle zu spielen.
Sonst funktioniert das manchmal bei mir net richtig. Irgendwie hab ich auch sonst mit ALT F4 nix gefunden....Aber gut ...vielleicht kann das Codeschnipsel jemand gebrauchen.

Code: Alles auswählen

   
  ;Handle in den Vordergrund holen zum beenden
   SendMessage_(GetForegroundWindow_(), #WM_SYSCOMMAND, #SC_HOTKEY, Handle)
  
   If GetForegroundWindow_() = Handle
     
    ;ALT F4 
    keybd_event_(0,56, #KEYEVENTF_SCANCODE , 0)
    Delay(100)
    keybd_event_(0,62, #KEYEVENTF_SCANCODE , 0) 
    Delay(1000)
    keybd_event_(0,56, #KEYEVENTF_KEYUP| #KEYEVENTF_SCANCODE , 0)
    Delay(100)
    keybd_event_(0,62, #KEYEVENTF_KEYUP| #KEYEVENTF_SCANCODE , 0)
    
    
  EndIf

Antworten