Seite 1 von 2

Win32API

Verfasst: 18.11.2005 15:21
von Tsuki-Namida
Und schon wieder ich^^

Dies mal suche ich die Win32API Befehle zum Herunterfahren, Neustarten, und für den Ruhezustand eines Computers.

Und nicht nur das wie kan ich sie dann einbauen?

Verfasst: 18.11.2005 15:39
von roherter

Verfasst: 18.11.2005 15:41
von ts-soft
roherter hat geschrieben:http://www.purebasic-lounge.de/viewtopi ... t=shutdown
Bitte schön.
oder http://forums.purebasic.com/german/view ... t=shutdown Bitte schön :wink:
Weil, dieses funktioniert auch auf NT-Systemen :mrgreen:

Verfasst: 18.11.2005 15:43
von roherter
Jo , sorry habe ich übersehen!
aber ist ja fast das gleiche auser bei deinem werden glaube ich noch die rechte eingeholt!

Verfasst: 18.11.2005 15:52
von Tsuki-Namida
Danke Schön :)
@ts-soft
Diesen Beitrag kenne ich bereits und bin nicht schlau daraus geworden :(

ich habe das jetzt so gemacht nur es passiert leider nichts :(

Code: Alles auswählen

;-Programm Start
Procedure LogOffControl(flag.l)
  Select flag.l
      Case 1
        ExitWindowsEx_(#EWX_LOGOFF,1)
      Case 2
        ExitWindowsEx_(#EWX_SHUTDOWN | #EWX_POWEROFF,0)
      Case 3
        ExitWindowsEx_(#EWX_POWEROFF,0)
      Default
        ExitWindowsEx_(#EWX_REBOOT,0)
  EndSelect
EndProcedure
Open_Window_0()
Repeat


;System Zeit auslesen
                    Time.l = Date()
HH$ = FormatDate("%hh", Time)
MM$ = FormatDate("%ii", Time)
SS$ = FormatDate("%ss", Time)

;Abfrage für die Aktion die nach ereichen der zeit durchgeführt werden soll.
             If HH$=GetGadgetText(#String_0)
              If MM$=GetGadgetText(#String_1)      
                If SS$=GetGadgetText(#String_2)      
                  If go=1
;Die Aktion die durchgefürt wird
                    If GetGadgetState(#Combo_0)=0 
                    MessageRequester("Überschrift","Herunterfahren",#PB_MessageRequester_Ok)
                    ElseIf GetGadgetState(#Combo_0)=1 
                    MessageRequester("Überschrift","Nerstart",#PB_MessageRequester_Ok)
                    ElseIf GetGadgetState(#Combo_0)=2 
                   LogOffControl(3);Ruhestand 
                   ;MessageRequester("Überschrift","Ruhezustand",#PB_MessageRequester_Ok)
                      EndIf 
                   
                   ;MessageRequester("Überschrift","Ok Button",#PB_MessageRequester_Ok)
                    go.l=0
                    EndIf 
                  EndIf
                EndIf 
             EndIf 

Verfasst: 18.11.2005 15:54
von Kiffi
> ich habe das jetzt so gemacht nur es passiert leider nichts :( [...]

Setzt Du denn 'go' irgendwann auf 1?

Grüße ... Kiffi

Verfasst: 18.11.2005 15:58
von Tsuki-Namida
ja "go" wird auf "1" gesetzt wenn ich den "OK" button betätige.

[EDIT]
Hier noch mal den kompletten Code:

Code: Alles auswählen

; PureBasic Visual Designer v3.90 build 1360


;- Window Constants
;
Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
;
Enumeration
  #Frame3D_0
  #String_0
  #String_1
  #String_2
  #Button_0
  #Button_1
  #Combo_0
  #Text_1
  #Text_3
EndEnumeration


Procedure Open_Window_0()
  If OpenWindow(#Window_0, 244, 47, 160, 171,  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "Auschaltenum XX Uhr v.1.0")
    If CreateGadgetList(WindowID())
      Frame3DGadget(#Frame3D_0, 10, 0, 140, 160, "")
      StringGadget(#String_0, 30, 100, 30, 20, "", #PB_String_Numeric)
      SendMessage_(GadgetID(#String_0), #EM_LIMITTEXT, 2, 0)
      StringGadget(#String_1, 70, 100, 30, 20, "", #PB_String_Numeric)
      SendMessage_(GadgetID(#String_1), #EM_LIMITTEXT, 2, 0)
      StringGadget(#String_2, 110, 100, 30, 20, "", #PB_String_Numeric)
      SendMessage_(GadgetID(#String_2), #EM_LIMITTEXT, 2, 0)
      ButtonGadget(#Button_0, 30, 130, 50, 20, "Start")
      ButtonGadget(#Button_1, 90, 130, 50, 20, "Abbruch")
      ComboBoxGadget(#Combo_0, 40, 70, 90, 20)
      AddGadgetItem(#Combo_0,-1, "Herunterfahren") 
      AddGadgetItem(#Combo_0,-1, "Neustart") 
      AddGadgetItem(#Combo_0,-1, "Ruhezustand") 
      SetGadgetState(#Combo_0, 0) 
      TextGadget(#Text_1, 50, 20, 80, 20, "Timer Einstellung")
      TextGadget(#Text_3, 60, 105, 5, 5, "")
    EndIf
  EndIf
EndProcedure

;-Programm Start
Procedure LogOffControl(flag.l)
  Select flag.l
      Case 1
        ExitWindowsEx_(#EWX_LOGOFF,1)
      Case 2
        ExitWindowsEx_(#EWX_SHUTDOWN | #EWX_POWEROFF,0)
      Case 3
        ExitWindowsEx_(#EWX_POWEROFF,0)
      Default
        ExitWindowsEx_(#EWX_REBOOT,0)
  EndSelect
EndProcedure
Open_Window_0()
Repeat


;System Zeit auslesen
                    Time.l = Date()
HH$ = FormatDate("%hh", Time)
MM$ = FormatDate("%ii", Time)
SS$ = FormatDate("%ss", Time)

;Abfrage für die Aktion die nach ereichen der zeit durchgeführt werden soll.
             If HH$=GetGadgetText(#String_0)
              If MM$=GetGadgetText(#String_1)      
                If SS$=GetGadgetText(#String_2)      
                  If go=1
;Die Aktion die durchgefürt wird
                    If GetGadgetState(#Combo_0)=0 
                    MessageRequester("Überschrift","Herunterfahren",#PB_MessageRequester_Ok)
                    ElseIf GetGadgetState(#Combo_0)=1 
                    MessageRequester("Überschrift","Nerstart",#PB_MessageRequester_Ok)
                    ElseIf GetGadgetState(#Combo_0)=2 
                   LogOffControl(3);Ruhestand 
                   ;MessageRequester("Überschrift","Ruhezustand",#PB_MessageRequester_Ok)
                      EndIf 
                   
                   ;MessageRequester("Überschrift","Ok Button",#PB_MessageRequester_Ok)
                    go.l=0
                    EndIf 
                  EndIf
                EndIf 
             EndIf 

;Einen moment Warten (1Milli Sekunde)
Delay(1)


 ; Event = WaitWindowEvent()
  Event = WindowEvent()
  Select event
  
;-Button abfrage 
  Case #PB_EventGadget ; verzweigung bei Gadgetevents
  
  
        Select EventGadgetID()
          Case (#Button_0) ;Button "OK"
          
                    go.l=1
                    
            Case (#Button_1)  ;Button "Abbrechen"
          
            Gosub Ende
            Return
            ;MessageRequester("Überschrift","Abbruch Button",#PB_MessageRequester_Ok)
            
        EndSelect



        EndSelect
Until Event = #PB_EventCloseWindow
Ende:
End
[/EDIT]

Verfasst: 18.11.2005 16:49
von ts-soft
Selbst wenn der Code richtig wäre, würde er unter WinNT nicht funktionieren, da mit der "LogOffControl" Procedur keine Rechte erwirkt werden, so das lediglich ein Abmelden möglich ist.
Das go niemals wieder abgefragt wird, ist natürlich auch klar :mrgreen:

Verfasst: 18.11.2005 16:54
von Tsuki-Namida
naja gut also dorfte es dann nur unter win 9x gehen?
wenn ja ist das auch ziehmlich kompliziert das geht dann einfacher mit win 9x...

naja gut und wie mache ich es in win 2k aufwertz? sofiel ich weis geht das mit der WIN32API. aber wie?

Verfasst: 18.11.2005 16:58
von ts-soft
Guck doch mal das zweite Posting, da ist doch noch ein Link :wink: , bzw. wenn Du die Boardsuche benutzt, findeste diese Funktion noch ein paarmal. Deshalb Poste ich sie nicht nochmal!