GetHTTPHeader /-> freeze für weinige sek.

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Pr0fessor
Beiträge: 40
Registriert: 21.07.2011 16:13
Computerausstattung: Intel Qore2Quad Q6600, 4GB RAM, Radeon HD 5770, Windows 8.1 Pro 64bit
Wohnort: Hagenow
Kontaktdaten:

GetHTTPHeader /-> freeze für weinige sek.

Beitrag von Pr0fessor »

huhu...

Ich habe mir nen kleines hilfsprogrämmchen gebastelt dass mir das ewige drücken des Knopfes meines NAS erspart - funktioniert auch soweit ganz gut aber immer wenn ich nen Button drücke dann friert die Anwendung für ein paar sekunden ein und es ist kein bewegen o.ä. des fensters möglich. Warum? bzw. was kann man machen um dem entgegenzuwirken?
(ist auch noch nicht ganz fertig, deshalb haben herunterfahren und neustarten beinahe die gleiche funktion)


Code: Alles auswählen

;- Window Constants
;
Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
;
Enumeration
  #Button_1
  #Button_3
  #Button_2
  #Status
  #Text_1
EndEnumeration

;- Fonts
Global FontID1
FontID1 = LoadFont(1, "Tahoma", 11)

If InitNetwork()
  If OpenWindow(#Window_0, 634, 420, 312, 153, "NAS Shutdown",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
    ButtonGadget(#Button_1, 10, 110, 90, 30, "Ausschalten")
    ButtonGadget(#Button_3, 210, 110, 90, 30, "Abbrechen")
    ButtonGadget(#Button_2, 110, 110, 90, 30, "Neustarten")
    TextGadget(#Status, 10, 60, 290, 20, "")
    TextGadget(#Text_1, 10, 10, 290, 20, "CH3WNAS herunterfahren oder neustarten?", #PB_Text_Center)
    SetGadgetFont(#Text_1, FontID1)
  EndIf
EndIf


Repeat
  Select WaitWindowEvent()
    Case #PB_Event_CloseWindow
      End
    Case #PB_Event_Gadget
      If EventGadget() = #Button_1
        SetGadgetText(#Status, "Einloggen...")
        If GetHTTPHeader("http://ch3wnas/goform/formLogin?f_LOGIN_NAME=admin&f_LOGIN_PASSWD=&f_login_type=0")
          SetGadgetText(#Status, "Eingeloggt")
          If GetHTTPHeader("http://ch3wnas/goform/sysShootDown")
            SetGadgetText(#Status, "Ausgeschaltet")
          Else
            SetGadgetText(#Status, "Ausschalten fehlgeschlagen")
          EndIf
        Else
          SetGadgetText(#Status, "Einloggen fehlgeschlagen")
        EndIf
      EndIf
      If EventGadget() = #Button_2
        SetGadgetText(#Status, "Einloggen...")
        If GetHTTPHeader("http://ch3wnas/goform/formLogin?f_LOGIN_NAME=admin&f_LOGIN_PASSWD=&f_login_type=0")
          SetGadgetText(#Status, "Eingeloggt")
           If GetHTTPHeader("http://ch3wnas/goform/sysShootDown")
            SetGadgetText(#Status, "Ausgeschaltet")
          Else
            SetGadgetText(#Status, "Ausschalten fehlgeschlagen")
          EndIf
        Else
          SetGadgetText(#Status, "Einloggen fehlgeschlagen")
        EndIf
      EndIf
      If EventGadget() = #Button_3
        End
      EndIf
  EndSelect
ForEver
~ PureBasic 5.21 LTS x86 | PureBasic 5.21 LTS x64 | Windows 8.1 Pro with Media Center x64 ~
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: GetHTTPHeader /-> freeze für weinige sek.

Beitrag von ts-soft »

Pr0fessor hat geschrieben:aber immer wenn ich nen Button drücke dann friert die Anwendung für ein paar sekunden ein und es ist kein bewegen o.ä. des fensters möglich. Warum?
Die Funktion GetHTTPHeader braucht nun mal ca. 1 - 3 sekunden, solange können keine Ereignisse abgearbeitet
werden. Außer Fenster oder Buttons zu deaktivieren, während dieser Zeit wirste nicht viel machen können.
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
Pr0fessor
Beiträge: 40
Registriert: 21.07.2011 16:13
Computerausstattung: Intel Qore2Quad Q6600, 4GB RAM, Radeon HD 5770, Windows 8.1 Pro 64bit
Wohnort: Hagenow
Kontaktdaten:

Re: GetHTTPHeader /-> freeze für weinige sek.

Beitrag von Pr0fessor »

hmm - was kann man denn anstatt GetHTTPHeader nehmen?
es soll ja praktisch nur ne url angesurft werden....
~ PureBasic 5.21 LTS x86 | PureBasic 5.21 LTS x64 | Windows 8.1 Pro with Media Center x64 ~
Benutzeravatar
Bisonte
Beiträge: 2468
Registriert: 01.04.2007 20:18

Re: GetHTTPHeader /-> freeze für weinige sek.

Beitrag von Bisonte »

was brauchst du denn von der seite ?

Also welche daten vom Header ?
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
Pr0fessor
Beiträge: 40
Registriert: 21.07.2011 16:13
Computerausstattung: Intel Qore2Quad Q6600, 4GB RAM, Radeon HD 5770, Windows 8.1 Pro 64bit
Wohnort: Hagenow
Kontaktdaten:

Re: GetHTTPHeader /-> freeze für weinige sek.

Beitrag von Pr0fessor »

Ich brauch keinerlei daten. Es geht nur darum die Seite kurz aufzurufen damit das NAS sich ausschaltet.
~ PureBasic 5.21 LTS x86 | PureBasic 5.21 LTS x64 | Windows 8.1 Pro with Media Center x64 ~
Benutzeravatar
HeX0R
Beiträge: 3042
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Re: GetHTTPHeader /-> freeze für weinige sek.

Beitrag von HeX0R »

Dann nimm doch ein Webgadget (kannst es ja auch unsichtbar machen).
Via Timer überprüfst du ob das Gadget noch lädt (#PB_Web_Busy).
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: GetHTTPHeader /-> freeze für weinige sek.

Beitrag von Kiffi »

eigentlich braucht man für solch eine Art Tools keine GUI.

Ein paar Zeilen, die entsprechend auf einen Kommandozeilenparameter reagieren, zwei Verknüpfungen ('deine.exe on' und 'deine.exe off') anlegen. Und fertig :-)

Code: Alles auswählen

InitNetwork()
Select LCase(ProgramParameter())
  Case "on"
    ; einschalten
    GetHTTPHeader("...
  Case "off"
    ; ausschalten
    GetHTTPHeader("...
EndSelect
Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
Macros
Beiträge: 1361
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Re: GetHTTPHeader /-> freeze für weinige sek.

Beitrag von Macros »

Du könntest GetHTTPHeader auch in einem Thread aufrufen,
also einfach in eine Prozedur verpacken und Create Thread verwenden.
Bild
Antworten