ein anderes programm schlißen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

ein anderes programm schlißen

Beitrag von Tsuki-Namida »

ich möchte ein programm schlißen wie es der titel schon verät.
ich weis den datei namen von dem programm was ich schlißen muss

ich hoffe das mir da jemand helfen könnte....

wichtig ist noch das ich das für PB 3.94 brauche
Bild
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Code: Alles auswählen

  PostMessage_(hwnd,#WM_CLOSE,0,0)
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Beitrag von Tsuki-Namida »

und wie kann ich nun die exe schließen???
Bild
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Du brauchst das sogenannte WindowHandle (hwnd) des Fensters. Das ist die WindowID(), die ein Fenster systemweit eindeutig identifiziert. Du findest dein gesuchtest Fenster z. B. mit den API-Funktionen FindWindow_() oder EnumWindows_(). API FUnktionen funktioneiren nicht mit der Demoversion von PB.

Hier kannst du nach API Funktionen suchen: http://msdn.microsoft.com

Hinweis: Eigentlich werden API Funktionen ohne _Unterstrich_ am Ende geschrieben; dies ist nur in PB so, um PB-Funktionen von API-Funktionen besser unterscheiden zu können.

Mit edel's Code sendest du dann die Nachricht "Schließen" (#WM_CLOSE) an das gewünschte hwnd (fensterhandle).
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Beitrag von Tsuki-Namida »

ich habe es jetzt so versucht:

hwnd = FindWindow_(0,"Beispiel Name")
PostMessage_(hwnd,#WM_CLOSE,0,0)

nur es klapt nicht...
Bild
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Code: Alles auswählen

RunProgram("notepad")
Delay(1000)

hwnd = FindWindow_(0,"Unbenannt - Editor")

PostMessage_(hwnd,#WM_CLOSE,0,0) 
funzt :mrgreen:
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.
Bild
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Du musst exakt den Fenstertitel des zu schließenden Fensters eintippen, sonst klappt es auch nicht.
Mit EnumWindows_() und GetWindowText_() kannst du dir aber automatsich alle Handles aller geöffneten Fenster (auch unsichtbare Fenster, etwa vom Hintergrund-Virenscanner) aflisten lassen (also in einem Array oder besser: LinkedList) speichern. Diese Handles übergibst du gleich an GetWIndowText_() und erhälst den Titel des Fensters, damit du üeberprüfen kannst, ob es auch das richtige Fenster ist, das du schließen möchtest.
Wenn ja, übergibst du das frisch ermittelte Handle an PostMessage_().
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Beitrag von Tsuki-Namida »

das verstehe ich ja nicht... genauso habe ich es gemacht und auch in anderen foren teie gefunden... wenn ich aber den befehl zum beenden gebe dann kann ich das fenster verschieben ohne das ich die maus gedrückt halte...
Bild
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Beitrag von Tsuki-Namida »

okay ich weis jetzt woran das liegt...

und zwar wird das programm nicht in der taskleiste angezeigt deshalb ging es nicht... aber das soll erst mal einer wissen
Bild
Antworten