[Windows] Computer ausschalten

Für allgemeine Fragen zur Programmierung mit PureBasic.
Little John

[Windows] Computer ausschalten

Beitrag von Little John »

Hallo zusammen,

wie kann ein PB-Programm unter Windows (möglichst viele Versionen) den "Computer ausschalten"-Dialog aufrufen?
Also das Fenster, das bei Windows XP so aussieht:

Bild

Gruß, Little John
Benutzeravatar
NicknameFJ
Beiträge: 324
Registriert: 03.06.2007 14:36
Wohnort: Von der Sonne aus gesehen der dritte Planet

Re: [Windows] Computer ausschalten

Beitrag von NicknameFJ »

Hallo Little John,

aus dem CodeArchiv

Code: Alles auswählen

Shell_TrayWnd= FindWindow_("Shell_TrayWnd", NULL); 
result = SendMessage_ (Shell_TrayWnd,$111,506,0) 
result = SendMessage_ (Shell_TrayWnd,$111,66042,0)


Grüße NicknameFJ


\EDIT

Hier der Link

http://www.purearea.net/pb/CodeArchiv/W ... Windows.pb
PS: Alle im Text enthaltenen Schreibfehler sind beabsichtigt und dienen der Belustigung aller

Bild
Andreas
ToolbarKönig
Beiträge: 142
Registriert: 08.09.2004 08:33

Re: [Windows] Computer ausschalten

Beitrag von Andreas »

Schon mit Win3.1 war es so, dass man Windows beendet, wenn man den Programmanager schliesst.

Code: Alles auswählen

PostMessage_(FindWindow_("ProgMan",0),#WM_CLOSE,0,0)
Gruss Andreas
Benutzeravatar
jojo1541
Beiträge: 431
Registriert: 15.09.2007 17:12
Wohnort: Irgendwo im Nirgendwo

Re: [Windows] Computer ausschalten

Beitrag von jojo1541 »

Code: Alles auswählen

SendMessage_(FindWindow_("Shell_TrayWnd",""),#WM_COMMAND,$1FA,0)
Danke an RSbasic und seine WinAPI Library.
Ich verkaufe Rechtschreibfehler und jede menge GROßBUCHSTABEN. Alles unbegrenzt zu haben.
Benutzeravatar
NicknameFJ
Beiträge: 324
Registriert: 03.06.2007 14:36
Wohnort: Von der Sonne aus gesehen der dritte Planet

Re: [Windows] Computer ausschalten

Beitrag von NicknameFJ »

@JoJo1541

Nichts für Ungut,

aber das ist das Beispiel aus dem CodeArchiv nur in einer Zeile zusammengefaßt.

Code: Alles auswählen

debug #WM_Command
ist 273 = hex $111

und hex. $1fa = dez. 506

Grüße NicknameFJ
PS: Alle im Text enthaltenen Schreibfehler sind beabsichtigt und dienen der Belustigung aller

Bild
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: [Windows] Computer ausschalten

Beitrag von Kaeru Gaman »

tja... wenn sich jeder angewöhnen würde benamste Konstanten hinzuschreiben... /:->
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
jojo1541
Beiträge: 431
Registriert: 15.09.2007 17:12
Wohnort: Irgendwo im Nirgendwo

Re: [Windows] Computer ausschalten

Beitrag von jojo1541 »

@NicknameFJ:
Das kann durchaus sein. <)
Ich habe ja geschrieben, dass ich den Code aus der WinAPI-Library von RSBasic kopiert habe.
Ich verkaufe Rechtschreibfehler und jede menge GROßBUCHSTABEN. Alles unbegrenzt zu haben.
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

Re: [Windows] Computer ausschalten

Beitrag von ts-soft »

Die Variante von Andreas finde ich noch am schönsten, so hab ich das bereits vor Jahrzehnten gemacht
und das funktioniert immer noch!
Little John

Re: [Windows] Computer ausschalten

Beitrag von Little John »

Hallo,

vielen Dank an alle für die Codes!
Die verschiedenen Varianten sind ja interessant.

2NicknameFJ
Beim Testen des Codes aus dem CodeArchiv

Code: Alles auswählen

Shell_TrayWnd= FindWindow_("Shell_TrayWnd", NULL); 
result = SendMessage_ (Shell_TrayWnd,$111,506,0) 
result = SendMessage_ (Shell_TrayWnd,$111,66042,0)
passiert bei mir folgendes (Windows XP):

Wenn ich "Abbrechen" anklicke, dann erscheint der Dialog nochmal. Nach dem 2. Mal "Abbrechen" klicken ist dann gut.

Gruß, Little John
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: [Windows] Computer ausschalten

Beitrag von RSBasic »

Du sollst auch nur eins davon ausführen...
Entweder:

Code: Alles auswählen

result = SendMessage_ (Shell_TrayWnd,$111,506,0)
Oder:

Code: Alles auswählen

result = SendMessage_ (Shell_TrayWnd,$111,66042,0)
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Antworten