WebGadget Fortschritt

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Velindos
Beiträge: 598
Registriert: 15.11.2010 10:56

WebGadget Fortschritt

Beitrag von Velindos »

Hallo Leute,
möchte das Laden der Website im Balken anzeigen. Läuft aber nicht richtig! Der Balken ist schon fertig und die Seite ladet noch!

Code: Alles auswählen

Enumeration
   #win
   #web
   #Windows_ProgressBar
EndEnumeration

OpenWindow(#win, 0, 0, 800, 600, "WebGadget Fortschritt", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)

WebGadget(#web, 10, 10, 790, 560, "")

ProgressBarGadget(#Windows_ProgressBar,10, 580, 790, 20,0,1000000)

SetGadgetText(#web, "http://www.web.de")

Repeat
   Event = WaitWindowEvent()
   
   Select Event
      Case #PB_Event_Gadget
         
         Select EventGadget()
            Case #web
               Debug GetGadgetAttribute(#web,#PB_EventType_DownloadProgress)
               SetGadgetState(#Windows_ProgressBar,GetGadgetAttribute(#web,#PB_EventType_DownloadProgress)) 
               
         EndSelect
   EndSelect    
   
Until event=#PB_Event_CloseWindow
Gruss ... Velindos
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: WebGadget Fortschritt

Beitrag von Kiffi »

da bist Du ein wenig mit den Konstanten durcheinandergekommen (#PB_EventType_DownloadProgress und #PB_Web_Progress).

Hier zur Verdeutlichung:

Code: Alles auswählen

EnableExplicit

Enumeration
	#win
	#web
	#Windows_ProgressBar
EndEnumeration

OpenWindow(#win, 0, 0, 800, 600, "WebGadget Fortschritt", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)

WebGadget(#web, 10, 10, 790, 560, "https://news.google.de/")

ProgressBarGadget(#Windows_ProgressBar,10, 580, 790, 20,0,1000000)

Define Event

Repeat
	
	Event = WaitWindowEvent()
	
	Select Event
			
		Case #PB_Event_Gadget
			
			Select EventGadget()
					
				Case #web
					
					Select EventType()
							
						Case #PB_EventType_DownloadStart
							Debug "DownloadStart"
							
						Case #PB_EventType_DownloadProgress
							Debug "DownloadProgress: " + Str(GetGadgetAttribute(#web, #PB_Web_Progress))
							Debug "DownloadProgressMax: " + Str(GetGadgetAttribute(#web, #PB_Web_ProgressMax))
							
						Case #PB_EventType_DownloadEnd
							Debug "DownloadEnd"
							
					EndSelect
					
			EndSelect
			
	EndSelect    
	
Until Event = #PB_Event_CloseWindow
Grüße ... Peter
a²+b²=mc²
Benutzeravatar
Velindos
Beiträge: 598
Registriert: 15.11.2010 10:56

Re: WebGadget Fortschritt

Beitrag von Velindos »

Hallo Kiffi, habe deine Sache eingearbeitet. Aber warum bleibt der Balken bei web.de und nicht bei Goolge stehen!

Code: Alles auswählen

Enumeration
   #win
   #web
   #Windows_ProgressBar
   #StrgB_Page1Laden
   #StrgB_Page2Laden
EndEnumeration


OpenWindow(#win, 0, 0, 800, 600, "WebGadget Fortschritt", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)

WebGadget(#web, 10, 10, 790, 560, "")

ProgressBarGadget(#Windows_ProgressBar,10, 580, 790, 20,0,1000000)

SetGadgetText(#web, "http://www.web.de")

AddKeyboardShortcut (#win, #PB_Shortcut_Control | #PB_Shortcut_B, #StrgB_Page1Laden)                                   ; Shortcut einschalten
AddKeyboardShortcut (#win, #PB_Shortcut_Control | #PB_Shortcut_N, #StrgB_Page2Laden)                                   ; Shortcut einschalten


Repeat
   Event = WaitWindowEvent()
   
   Select EventGadget()
         
      Case #web
         
         Select EventType()
               
            Case #PB_EventType_DownloadStart
               Debug "DownloadStart"
               
            Case #PB_EventType_DownloadProgress
               SetGadgetAttribute(#Windows_ProgressBar, #PB_ProgressBar_Maximum, GetGadgetAttribute(#web, #PB_Web_ProgressMax))
               Debug "DownloadProgress: " + Str(GetGadgetAttribute(#web, #PB_Web_Progress))
               Debug "DownloadProgressMax: " + Str(GetGadgetAttribute(#web, #PB_Web_ProgressMax))
               SetGadgetState(#Windows_ProgressBar,GetGadgetAttribute(#web,#PB_Web_Progress)) 
               
            Case #PB_EventType_DownloadEnd
               Debug "DownloadEnd"
               
         EndSelect
         
   EndSelect
   
   Select EventMenu()
      Case #StrgB_Page1Laden
         SetGadgetText(#web, "https://news.google.de/")
      Case #StrgB_Page2Laden
         SetGadgetText(#web, "http://www.web.de")
   EndSelect
   
   
Until event=#PB_Event_CloseWindow
Gruss ... Velindos
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
Benutzeravatar
Velindos
Beiträge: 598
Registriert: 15.11.2010 10:56

Re: WebGadget Fortschritt

Beitrag von Velindos »

Hallo Leute,
da ich die Webseiten über meine Datenbank aufrufe, kommt es vor das ich gleich weiterschalten will. Nun dabei habe ich ein Problem, dass die Sache blockiert!

Code: Alles auswählen

; PureFox (R)1.001(2014)-x86
EnableExplicit
;- Const
Enumeration
   #MainWindow
   #Google_Webgadget
   #Windows_ProgressBar
   #StrgB_Page1Laden
   #StrgB_Page2Laden
   #StrgB_Page3Laden
   #WebGoogle
   #WebLink
   #WebStop
   #WebForward
   #WebBack
   #WebRefresh
EndEnumeration
;- Global
Global Browser.IWebBrowser2

OpenWindow(#MainWindow, 682, 0, 667, 732, "PureFox WebGadget Fortschritt", #PB_Window_SystemMenu ) ;|#PB_Window_ScreenCentered
ButtonGadget(#WebGoogle,1,0,40,20,"Google")
StringGadget(#WebLink,40,0,440,20,"")
ButtonGadget(#WebStop,507,0,40,20,"Stop")
ButtonGadget(#WebRefresh,547,0,40,20,"><")
ButtonGadget(#WebBack,587,0,40,20,"<")
ButtonGadget(#WebForward,627,0,40,20,">")
WebGadget(#Google_Webgadget, 0, 30, 667, 670, "")
ProgressBarGadget(#Windows_ProgressBar, 10, 712, 657, 20,0,1000000)

AddKeyboardShortcut (#MainWindow, #PB_Shortcut_Control | #PB_Shortcut_B, #StrgB_Page1Laden); Shortcut einschalten
AddKeyboardShortcut (#MainWindow, #PB_Shortcut_Control | #PB_Shortcut_N, #StrgB_Page2Laden); Shortcut einschalten
AddKeyboardShortcut (#MainWindow, #PB_Shortcut_Control | #PB_Shortcut_M, #StrgB_Page3Laden); Shortcut einschalten

; Skriptfehler ausschalten
Browser.IWebBrowser2 = GetWindowLong_(GadgetID(#Google_Webgadget),#GWL_USERDATA)
If Browser: Browser\put_Silent(#True):Else:Browser\put_Silent(#False):EndIf

SetGadgetText(#Google_Webgadget, "http://www.web.de")
SetGadgetText(#WebLink, "http://www.web.de")

Define Event
Repeat
   Event = WaitWindowEvent()
   
   Select EventGadget()
         
      Case #Google_Webgadget
         
         Select EventType()
               
            Case #PB_EventType_DownloadStart
               Debug "DownloadStart"
               HideGadget(#Windows_ProgressBar,0)
               
            Case #PB_EventType_DownloadProgress
               SetGadgetAttribute(#Windows_ProgressBar, #PB_ProgressBar_Maximum, GetGadgetAttribute(#Google_Webgadget, #PB_Web_ProgressMax))
               Debug "DownloadProgress: " + Str(GetGadgetAttribute(#Google_Webgadget, #PB_Web_Progress))
               Debug "DownloadProgressMax: " + Str(GetGadgetAttribute(#Google_Webgadget, #PB_Web_ProgressMax))
               SetGadgetState(#Windows_ProgressBar,GetGadgetAttribute(#Google_Webgadget,#PB_Web_Progress))
               
            Case #PB_EventType_DownloadEnd
               Debug "DownloadEnd"
               HideGadget(#Windows_ProgressBar,1)
               
         EndSelect
         
      Case #WebGoogle: SetGadgetText(#Google_Webgadget, "https://www.google.de/?gws_rd=ssl")
      Case #WebStop:SetGadgetState(#Google_Webgadget, #PB_Web_Stop   )
      Case #WebForward:SetGadgetState(#Google_Webgadget, #PB_Web_Forward   )
      Case #WebBack:SetGadgetState(#Google_Webgadget, #PB_Web_Back   )
      Case #WebRefresh:SetGadgetState(#Google_Webgadget, #PB_Web_Refresh   )
   EndSelect
   
   Select EventMenu()
      Case #StrgB_Page1Laden
         SetGadgetText(#WebLink, "https://news.google.de/")
         SetGadgetState(#Google_Webgadget, #PB_Web_Stop   )
         SetGadgetText(#Google_Webgadget, "https://news.google.de/")
      Case #StrgB_Page2Laden
         SetGadgetText(#WebLink, "http://www.web.de")
         SetGadgetState(#Google_Webgadget, #PB_Web_Stop   )
         SetGadgetText(#Google_Webgadget, "http://www.web.de")
      Case #StrgB_Page3Laden
         SetGadgetText(#WebLink, "http://auto.oe24.at/lamborghini")
         SetGadgetState(#Google_Webgadget, #PB_Web_Stop   )
         SetGadgetAttribute(#Google_Webgadget, #PB_Web_BlockPopups,0)
         SetGadgetText(#Google_Webgadget, "http://auto.oe24.at/lamborghini")
   EndSelect
Until Event=#PB_Event_CloseWindow
1) Wenn ich die Strg+M Seite lade/geladen wird, blockiert mir das Web das gesamte Programm.

2) Wenn dann noch ein Movie läuft, blockiert die Sache!

3) Auch wenn ich den Button "STOP" drücke, blockiert die Sache!

3) Wegen der installierten Plugin möchte ich gerne den Firefox nutzen, wie bindet man den Firefox Mozilla ein?

#PB_Web_Mozilla : Verwendet das Mozilla ActiveX anstelle des vom IExplorers (nur auf Windows)

Versucht, geht aber nicht mehr! Gibt es eine Alternative dafür?

Gruss ... Velindos
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
matbal
Beiträge: 261
Registriert: 30.03.2011 20:53

Re: WebGadget Fortschritt

Beitrag von matbal »

Es fehlt die Überprüfung von Event. Du rufst EventGadget() und EventMenu() auf, ohne vorher überprüfen, wozu das Event gehört:

Code: Alles auswählen

   Select Event
      Case #PB_Event_Gadget
         Select EventGadget()
               
               
         EndSelect
         
      Case #PB_Event_Menu
         Select EventMenu()
               
               
         EndSelect
         
   EndSelect
Benutzeravatar
Velindos
Beiträge: 598
Registriert: 15.11.2010 10:56

Re: WebGadget Fortschritt

Beitrag von Velindos »

Hallo,
DANKE für deinen Tipp! Wurde von mir eingearbeitet, jedoch hat sich nichts geändert an den genannten!

Code: Alles auswählen

; PureFox (R)1.001(2014)-x86
EnableExplicit
;- Const
Enumeration
   #MainWindow
   #Google_Webgadget
   #Windows_ProgressBar
   #StrgB_Page1Laden
   #StrgB_Page2Laden
   #StrgB_Page3Laden
   #WebGoogle
   #WebLink
   #WebStop
   #WebForward
   #WebBack
   #WebRefresh
EndEnumeration
;- Global
Global Browser.IWebBrowser2

OpenWindow(#MainWindow, 682, 0, 667, 732, "PureFox WebGadget Fortschritt", #PB_Window_SystemMenu ) ;|#PB_Window_ScreenCentered
ButtonGadget(#WebGoogle,1,0,40,20,"Google")
StringGadget(#WebLink,40,0,440,20,"")
ButtonGadget(#WebStop,507,0,40,20,"Stop")
ButtonGadget(#WebRefresh,547,0,40,20,"><")
ButtonGadget(#WebBack,587,0,40,20,"<")
ButtonGadget(#WebForward,627,0,40,20,">")
WebGadget(#Google_Webgadget, 0, 30, 667, 670, "")
ProgressBarGadget(#Windows_ProgressBar, 10, 712, 657, 20,0,1000000)

AddKeyboardShortcut (#MainWindow, #PB_Shortcut_Control | #PB_Shortcut_B, #StrgB_Page1Laden); Shortcut einschalten
AddKeyboardShortcut (#MainWindow, #PB_Shortcut_Control | #PB_Shortcut_N, #StrgB_Page2Laden); Shortcut einschalten
AddKeyboardShortcut (#MainWindow, #PB_Shortcut_Control | #PB_Shortcut_M, #StrgB_Page3Laden); Shortcut einschalten

; Skriptfehler ausschalten
Browser.IWebBrowser2 = GetWindowLong_(GadgetID(#Google_Webgadget),#GWL_USERDATA)
If Browser: Browser\put_Silent(#True):Else:Browser\put_Silent(#False):EndIf

SetGadgetText(#Google_Webgadget, "http://www.web.de")
SetGadgetText(#WebLink, "http://www.web.de")

Define Event,MyEventGadget
Repeat
   Event = WaitWindowEvent()
   Select Event
      Case #PB_Event_Gadget
         MyEventGadget = EventGadget()
         Select MyEventGadget
            Case #Google_Webgadget
               Select EventType()
                  Case #PB_EventType_DownloadStart
                     Debug "DownloadStart"
                     HideGadget(#Windows_ProgressBar,0)
                  Case #PB_EventType_DownloadProgress
                     SetGadgetAttribute(#Windows_ProgressBar, #PB_ProgressBar_Maximum, GetGadgetAttribute(#Google_Webgadget, #PB_Web_ProgressMax))
                     Debug "DownloadProgress: " + Str(GetGadgetAttribute(#Google_Webgadget, #PB_Web_Progress))
                     Debug "DownloadProgressMax: " + Str(GetGadgetAttribute(#Google_Webgadget, #PB_Web_ProgressMax))
                     SetGadgetState(#Windows_ProgressBar,GetGadgetAttribute(#Google_Webgadget,#PB_Web_Progress))
                  Case #PB_EventType_DownloadEnd
                     Debug "DownloadEnd"
                     HideGadget(#Windows_ProgressBar,1)
               EndSelect
            Case #WebGoogle: SetGadgetText(#Google_Webgadget, "https://www.google.de/?gws_rd=ssl")
            Case #WebStop:SetGadgetState(#Google_Webgadget, #PB_Web_Stop   )
            Case #WebForward:SetGadgetState(#Google_Webgadget, #PB_Web_Forward   )
            Case #WebBack:SetGadgetState(#Google_Webgadget, #PB_Web_Back   )
            Case #WebRefresh:SetGadgetState(#Google_Webgadget, #PB_Web_Refresh   )
         EndSelect
      Case #PB_Event_Menu
         Select EventMenu()
            Case #StrgB_Page1Laden
               SetGadgetText(#WebLink, "https://news.google.de/")
               SetGadgetState(#Google_Webgadget, #PB_Web_Stop   )
               SetGadgetText(#Google_Webgadget, "https://news.google.de/")
            Case #StrgB_Page2Laden
               SetGadgetText(#WebLink, "http://www.web.de")
               SetGadgetState(#Google_Webgadget, #PB_Web_Stop   )
               SetGadgetText(#Google_Webgadget, "http://www.web.de")
            Case #StrgB_Page3Laden
               SetGadgetText(#WebLink, "http://auto.oe24.at/lamborghini")
               SetGadgetState(#Google_Webgadget, #PB_Web_Stop   )
               SetGadgetAttribute(#Google_Webgadget, #PB_Web_BlockPopups,0)
               SetGadgetText(#Google_Webgadget, "http://auto.oe24.at/lamborghini")
         EndSelect
   EndSelect
Until Event=#PB_Event_CloseWindow
Gruss ... Velindos
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
Benutzeravatar
Velindos
Beiträge: 598
Registriert: 15.11.2010 10:56

Re: WebGadget Fortschritt

Beitrag von Velindos »

Hallo Leute,
wenn ich eine Page LADE dann kann ich das Fenster nicht mehr bewegen! Hat mal jemand eine Idee wie man das umgehen kann?

Code: Alles auswählen

; PureBasic MiniBrowser
EnableExplicit

Enumeration
   #MiniBrowser
   #Windows_StatusBar
   #Windows_ProgressBar
   #WebButtonBack
   #WebButtonNext
   #WebButtonStop
   #WebButtonRefresh
   #WebButtonGo
   #WebBrowserGadget
   #WebGadgetFrame
   #WebStringGadgetLink
   #WebButtonTesstLink
   #WebButtonReturn
EndEnumeration

Procedure Timer()
   Protected State
   State = GetGadgetState(#Windows_ProgressBar) + 5
   If State > 100 : State = 0 : EndIf
   SetGadgetState(#Windows_ProgressBar, State) 
EndProcedure

Procedure ResizeWebWindow()
   ResizeGadget(#WebBrowserGadget, #PB_Ignore, #PB_Ignore, WindowWidth(0), WindowHeight(0)-52)
   
   ResizeGadget(#WebStringGadgetLink, #PB_Ignore, #PB_Ignore, WindowWidth(0)-260, #PB_Ignore)
   ResizeGadget(#WebButtonGo, WindowWidth(0)-25, #PB_Ignore, #PB_Ignore, #PB_Ignore)
   ResizeGadget(#WebButtonTesstLink, WindowWidth(0)-50, #PB_Ignore, #PB_Ignore, #PB_Ignore)
   ResizeGadget(#Windows_ProgressBar, WindowWidth(0)-100, #PB_Ignore,#PB_Ignore , #PB_Ignore)
EndProcedure

   If OpenWindow(#MiniBrowser, 100, 200, 500, 300, "PureBasic MiniBrowser Version 2.6", #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget)
         If CreateGadgetList(WindowID(#MiniBrowser))
            ProgressBarGadget(#Windows_ProgressBar, WindowWidth(0)-100, 2, 100, 20, 0, 100)
            CreateStatusBar(#Windows_StatusBar, WindowID(#MiniBrowser))
            SetParent_(GadgetID(#Windows_ProgressBar), StatusBarID(#Windows_StatusBar))
            AddStatusBarField(290)
            StatusBarText(#Windows_StatusBar, 0, "Welcome to the world's smallest Browser ! :)", 0)
         EndIf
      ButtonGadget(#WebButtonBack,   0, 0, 50, 25, "Back")
      ButtonGadget(#WebButtonNext,  50, 0, 50, 25, "Next")
      ButtonGadget(#WebButtonStop, 100, 0, 50, 25, "Stop")
      ButtonGadget(#WebButtonRefresh, 150, 0, 50, 25, "Refresh")
      StringGadget(#WebStringGadgetLink, 205, 5, 0, 20, "http://www.google.com")
      
      ButtonGadget(#WebButtonTesstLink, 0, 0, 25, 25, "TS")
      ButtonGadget(#WebButtonGo, 0, 0, 25, 25, "Go")
      
      Frame3DGadget(#WebGadgetFrame, 0, 30, 0, 2, "", 2)
      ; Prüfen auf ATL.dll
      If WebGadget(#WebBrowserGadget, 0, 31, 0, 0, "http://www.google.com") = 0 : MessageRequester("Error", "ATL.dll not found", 0) : End : EndIf
      SetGadgetAttribute(#Windows_ProgressBar, #PB_Web_BlockPopupMenu, 1)
      
      AddKeyboardShortcut(0, #PB_Shortcut_Return, #WebButtonReturn)
      
      ResizeWebWindow()
      
      ; Skriptfehler ausschalten
      Define browser.IWebBrowser2
      browser = GetWindowLongPtr_(GadgetID(#WebBrowserGadget), #GWL_USERDATA)
      If browser: browser\put_Silent(#True): EndIf
      
      SetTimer_(WindowID(#MiniBrowser), 0, 100, @Timer())
      
      Define Event,EventGadget,EventType
      Repeat
         Event = WaitWindowEvent()
         Select Event
            Case #PB_Event_Gadget
               EventGadget = EventGadget()
               EventType = EventType()
                  If EventGadget = #WebBrowserGadget
                        If EventType = #PB_EventType_DownloadStart
                           Debug "DownloadStart"
                           HideGadget(#Windows_ProgressBar,0)
                           Debug "DownloadProgressMax: " + Str(GetGadgetAttribute(#WebBrowserGadget, #PB_Web_ProgressMax))
                           ;SetGadgetAttribute(#Windows_ProgressBar, #PB_ProgressBar_Maximum, GetGadgetAttribute(#WebBrowserGadget, #PB_Web_ProgressMax))
                        EndIf
                        If EventType = #PB_EventType_DownloadProgress
                           Debug "DownloadProgress: " + Str(GetGadgetAttribute(#WebBrowserGadget, #PB_Web_Progress))
                           Debug "DownloadProgressMax: " + Str(GetGadgetAttribute(#WebBrowserGadget, #PB_Web_ProgressMax))
                           SetGadgetState(#Windows_ProgressBar,GetGadgetAttribute(#WebBrowserGadget,#PB_Web_Progress))
                        EndIf
                        If EventType = #PB_EventType_PopupMenu 
                           ;                      SetGadgetAttribute(#Windows_ProgressBar, #PB_Web_BlockPopupMenu, 1)
                           ;  ;                                 SetGadgetAttribute(#Windows_ProgressBar, #PB_Web_BlockPopupMenu, GetGadgetAttribute(#WebBrowserGadget, #PB_Web_BlockPopupMenu))
                           Debug "#PB_EventType_PopupMenu : " + Str(GetGadgetAttribute(#WebBrowserGadget, #PB_Web_BlockPopupMenu ))
                        EndIf
                        If EventType = #PB_EventType_TitleChange
                           StatusBarText(#Windows_StatusBar, 0,GetGadgetItemText(#WebBrowserGadget, #PB_Web_PageTitle), 0)
                        EndIf
                        If EventType = #PB_EventType_DownloadEnd
                           Debug "DownloadEnd"
                           HideGadget(#Windows_ProgressBar,1)
                        EndIf
                  EndIf
               
               Select EventGadget 
                  Case #WebButtonBack
                     SetGadgetState(#WebBrowserGadget, #PB_Web_Back)
                  Case #WebButtonNext
                     SetGadgetState(#WebBrowserGadget, #PB_Web_Forward)
                  Case #WebButtonStop
                     SetGadgetState(#WebBrowserGadget, #PB_Web_Stop)
                  Case #WebButtonGo
                     SetGadgetText(#WebBrowserGadget, GetGadgetText(#WebStringGadgetLink))
                  Case #WebButtonRefresh
                     SetGadgetText(#WebBrowserGadget, GetGadgetText(#WebBrowserGadget))
                  Case #WebButtonTesstLink
                     SetGadgetText(#WebBrowserGadget, "http://www.oe24.at")
               EndSelect      
               
            Case #PB_Event_Menu 
               Select EventMenu()
                  Case #WebButtonReturn
                     SetGadgetText(#WebBrowserGadget, GetGadgetText(#WebStringGadgetLink))
               EndSelect
               
            Case #PB_Event_SizeWindow
               ResizeWebWindow()
               
         EndSelect
      Until Event = #PB_Event_CloseWindow
   EndIf

Gruss ... Velindos
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
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: WebGadget Fortschritt

Beitrag von ts-soft »

Irgendwie scheint mir der Code etwas älter zu sein oder muß er unter älteren Versionen von PB laufen?

Ich habs auf jedenfall erstmal modernisiert:
- ResizeWindow durch BindEvent in echtzeit
- Api-Timer ersetzt. TimerProcedure war fehlerhaft und API unnötig.
- andere, aber nicht alle Funktionen aktualisiert.
(nicht mehr notwendige ATL-DLL bitte selber rausnehmen und anpassen).
- Fenster läßt sich beim Laden bewegen (ich hoffe mal, das war so gemeint).

Code: Alles auswählen

; PureBasic MiniBrowser
EnableExplicit

Enumeration
  #MiniBrowser
  #Windows_StatusBar
  #Windows_ProgressBar
  #WebButtonBack
  #WebButtonNext
  #WebButtonStop
  #WebButtonRefresh
  #WebButtonGo
  #WebBrowserGadget
  #WebGadgetFrame
  #WebStringGadgetLink
  #WebButtonTesstLink
  #WebButtonReturn
EndEnumeration

Procedure Timer()
  Protected State
  State = GetGadgetState(#Windows_ProgressBar) + 5
  If State > 100 : State = 0 : EndIf
  SetGadgetState(#Windows_ProgressBar, State)
EndProcedure

Procedure ResizeWebWindow()
  ResizeGadget(#WebBrowserGadget, #PB_Ignore, #PB_Ignore, WindowWidth(0), WindowHeight(0)-52)
  
  ResizeGadget(#WebStringGadgetLink, #PB_Ignore, #PB_Ignore, WindowWidth(0)-260, #PB_Ignore)
  ResizeGadget(#WebButtonGo, WindowWidth(0)-25, #PB_Ignore, #PB_Ignore, #PB_Ignore)
  ResizeGadget(#WebButtonTesstLink, WindowWidth(0)-50, #PB_Ignore, #PB_Ignore, #PB_Ignore)
  ResizeGadget(#Windows_ProgressBar, WindowWidth(0)-100, #PB_Ignore,#PB_Ignore , #PB_Ignore)
EndProcedure

If OpenWindow(#MiniBrowser, 100, 200, 500, 300, "PureBasic MiniBrowser Version 2.6", #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget)
;  If CreateGadgetList(WindowID(#MiniBrowser))
    ProgressBarGadget(#Windows_ProgressBar, WindowWidth(0)-100, 2, 100, 20, 0, 100)
    CreateStatusBar(#Windows_StatusBar, WindowID(#MiniBrowser))
    SetParent_(GadgetID(#Windows_ProgressBar), StatusBarID(#Windows_StatusBar))
    AddStatusBarField(290)
    StatusBarText(#Windows_StatusBar, 0, "Welcome to the world's smallest Browser ! :)", 0)
;  EndIf
  ButtonGadget(#WebButtonBack,   0, 0, 50, 25, "Back")
  ButtonGadget(#WebButtonNext,  50, 0, 50, 25, "Next")
  ButtonGadget(#WebButtonStop, 100, 0, 50, 25, "Stop")
  ButtonGadget(#WebButtonRefresh, 150, 0, 50, 25, "Refresh")
  StringGadget(#WebStringGadgetLink, 205, 5, 0, 20, "http://www.google.com")
  
  ButtonGadget(#WebButtonTesstLink, 0, 0, 25, 25, "TS")
  ButtonGadget(#WebButtonGo, 0, 0, 25, 25, "Go")
  
  FrameGadget(#WebGadgetFrame, 0, 30, 0, 2, "", 2)
  ; Prüfen auf ATL.dll
  If WebGadget(#WebBrowserGadget, 0, 31, 0, 0, "http://www.google.com") = 0 : MessageRequester("Error", "ATL.dll not found", 0) : End : EndIf
  SetGadgetAttribute(#Windows_ProgressBar, #PB_Web_BlockPopupMenu, 1)
  
  AddKeyboardShortcut(0, #PB_Shortcut_Return, #WebButtonReturn)
  
  ResizeWebWindow()
  BindEvent(#PB_Event_SizeWindow, @ResizeWebWindow())
  
  ; Skriptfehler ausschalten
  Define browser.IWebBrowser2
  browser = GetWindowLongPtr_(GadgetID(#WebBrowserGadget), #GWL_USERDATA)
  If browser: browser\put_Silent(#True): EndIf


    
;  SetTimer_(WindowID(#MiniBrowser), 0, 100, @Timer())
  AddWindowTimer(#MiniBrowser, 0, 100)
  BindEvent(#PB_Event_Timer, @Timer())
  
  
  Define Event,EventGadget,EventType
  Repeat
    Event = WaitWindowEvent()
    Select Event
      Case #PB_Event_Gadget
        EventGadget = EventGadget()
        EventType = EventType()
        If EventGadget = #WebBrowserGadget
          If EventType = #PB_EventType_DownloadStart
            Debug "DownloadStart"
            HideGadget(#Windows_ProgressBar,0)
            Debug "DownloadProgressMax: " + Str(GetGadgetAttribute(#WebBrowserGadget, #PB_Web_ProgressMax))
            ;SetGadgetAttribute(#Windows_ProgressBar, #PB_ProgressBar_Maximum, GetGadgetAttribute(#WebBrowserGadget, #PB_Web_ProgressMax))
          EndIf
          If EventType = #PB_EventType_DownloadProgress
            Debug "DownloadProgress: " + Str(GetGadgetAttribute(#WebBrowserGadget, #PB_Web_Progress))
            Debug "DownloadProgressMax: " + Str(GetGadgetAttribute(#WebBrowserGadget, #PB_Web_ProgressMax))
            SetGadgetState(#Windows_ProgressBar,GetGadgetAttribute(#WebBrowserGadget,#PB_Web_Progress))
          EndIf
          If EventType = #PB_EventType_PopupMenu
            ;                      SetGadgetAttribute(#Windows_ProgressBar, #PB_Web_BlockPopupMenu, 1)
            ;  ;                                 SetGadgetAttribute(#Windows_ProgressBar, #PB_Web_BlockPopupMenu, GetGadgetAttribute(#WebBrowserGadget, #PB_Web_BlockPopupMenu))
            Debug "#PB_EventType_PopupMenu : " + Str(GetGadgetAttribute(#WebBrowserGadget, #PB_Web_BlockPopupMenu ))
          EndIf
          If EventType = #PB_EventType_TitleChange
            StatusBarText(#Windows_StatusBar, 0,GetGadgetItemText(#WebBrowserGadget, #PB_Web_PageTitle), 0)
          EndIf
          If EventType = #PB_EventType_DownloadEnd
            Debug "DownloadEnd"
            HideGadget(#Windows_ProgressBar,1)
          EndIf
        EndIf
        
        Select EventGadget
          Case #WebButtonBack
            SetGadgetState(#WebBrowserGadget, #PB_Web_Back)
          Case #WebButtonNext
            SetGadgetState(#WebBrowserGadget, #PB_Web_Forward)
          Case #WebButtonStop
            SetGadgetState(#WebBrowserGadget, #PB_Web_Stop)
          Case #WebButtonGo
            SetGadgetText(#WebBrowserGadget, GetGadgetText(#WebStringGadgetLink))
          Case #WebButtonRefresh
            SetGadgetText(#WebBrowserGadget, GetGadgetText(#WebBrowserGadget))
          Case #WebButtonTesstLink
            SetGadgetText(#WebBrowserGadget, "http://www.oe24.at")
        EndSelect     
        
      Case #PB_Event_Menu
        Select EventMenu()
          Case #WebButtonReturn
            SetGadgetText(#WebBrowserGadget, GetGadgetText(#WebStringGadgetLink))
        EndSelect
        
      Case #PB_Event_SizeWindow
        ResizeWebWindow()
        
    EndSelect
  Until Event = #PB_Event_CloseWindow
EndIf

Gruß
Thomas
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
Velindos
Beiträge: 598
Registriert: 15.11.2010 10:56

Re: WebGadget Fortschritt

Beitrag von Velindos »

Hallo, Danke für die Tips!

Mich klar zu definieren wäre, wenn ich die oe24.at aufrufe, ladet das #webgadet die Seite.

Während des Laden kann ich das Fenster nicht bewegen, erst wenn Sie zwischen/fertig geladen ist.
(Kann man bei Progressbar ablesen, die auch verschwindet und wieder erscheint etc.!)

Warum sollte es sich Bewegen lassen: Blockiert mein Programm für weitere Aktionen!

Nun, das hat sich nicht geändert!


Gruss ... Velindos
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
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: WebGadget Fortschritt

Beitrag von ts-soft »

Zumindest beim Resizen läßt es sich bewegen. Das blockieren durchs laden wird sich wohl nur durch komplizierte Threads
vermeiden lassen, wenn überhaupt möglich.

Gruß
Thomas
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