Win32API

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

Win32API

Beitrag 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?
Benutzeravatar
roherter
Beiträge: 1407
Registriert: 10.04.2005 18:58
Kontaktdaten:

Beitrag von roherter »

Purebasic 5.0 32bit und 64 bit

I'm back from hell
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 »

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:
Zuletzt geändert von ts-soft am 18.11.2005 15:43, insgesamt 1-mal geändert.
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
roherter
Beiträge: 1407
Registriert: 10.04.2005 18:58
Kontaktdaten:

Beitrag von roherter »

Jo , sorry habe ich übersehen!
aber ist ja fast das gleiche auser bei deinem werden glaube ich noch die rechte eingeholt!
Purebasic 5.0 32bit und 64 bit

I'm back from hell
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Beitrag 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 
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

> ich habe das jetzt so gemacht nur es passiert leider nichts :( [...]

Setzt Du denn 'go' irgendwann auf 1?

Grüße ... Kiffi
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Beitrag 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]
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 »

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:
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
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Beitrag 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?
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 »

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!
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
Antworten