Daten in WebGadget streamen...

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8679
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Daten in WebGadget streamen...

Beitrag von NicTheQuick »

Hi Leute!

Kurz und knapp zwei kleine Fragen:

1. Hat jemand eine Idee, wie ich direkt ins WebGadget Daten reinstreamen kann ohne den Umweg über eine Datei zu gehen? Es würde auch reichen, wenn ich eine Speicheradresse übergeben kann.

2. Ich würde gerne die Klicks auf die Links im WebGadget abfangen und derren Verlinkungs-URL zurückbekommen. Geht das irgendwie?
Bild
Benutzeravatar
brotkasten-deluxe
Beiträge: 147
Registriert: 29.08.2004 01:43
Wohnort: Germany
Kontaktdaten:

Beitrag von brotkasten-deluxe »

Hmmm

>>1. Kp

>>2. Meinste sowas ?

Code: Alles auswählen

WebObject.IWebBrowser2 
Global WebObject 

Procedure link() 
    If WebObject\get_document(@pDispatch.IDispatch) = #S_OK 
        If pDispatch\QueryInterface(?IID_IHTMLDocument2, @pDocument2.IHTMLDocument2) = #S_OK        
            If pDocument2\elementFromPoint(WindowMouseX() , WindowMouseY() , @pElement.IHTMLElement) = #S_OK            
                If pElement\QueryInterface(?IID_IHTMLAnchorElement, @pAnchor.IHTMLAnchorElement)= #S_OK                    
                  pAnchor\get_href(@BSTR_Anchor) 
                  aLen = WideCharToMultiByte_(#CP_ACP, 0, BSTR_Anchor, -1, 0, 0, 0, 0) 
                  anchor$ = Space(aLen) 
                  WideCharToMultiByte_(#CP_ACP, 0, BSTR_Anchor, -1, @anchor$, aLen, 0, 0) 
                  SysFreeString_(BSTR_Anchor)              
                  If currentsb$ <> anchor$ 
                    StatusBarText(0, 0, anchor$) 
                    currentsb$ = anchor$ 
                  EndIf              
                pAnchor\Release() 
                EndIf                            
            pElement\Release() 
            EndIf        
      pDocument2\Release() 
      EndIf          
    pDispatch\Release()  
    EndIf 
EndProcedure 


If OpenWindow(0, 10, 10, 700, 500, #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget, "WebGadget ReadyState") 

  If CreateStatusBar(0, WindowID()) 
    StatusBarText(0, 0, "") 
  EndIf 
      
  If CreateGadgetList(WindowID()) 
    WebGadget(0, 10, 10, 680, 460, "pure-board.de") 
    WebObject = GetWindowLong_(GadgetID(0), #GWL_USERDATA) 
  EndIf 
    
EndIf 

Repeat 
   EventID.l=WaitWindowEvent() 
        
    If   hBrowser = 0 
       hChild1 = FindWindowEx_(GadgetID(0), 0, "Shell Embedding", 0) 
        hChild2 = FindWindowEx_(hChild1, 0, "Shell DocObject View", 0) 
        hBrowser = FindWindowEx_(hChild2, 0, "Internet Explorer_Server", 0) 
        SetParent_(hBrowser,WindowID(0)) 
    EndIf 
  
  If isBusy 
    WebObject\get_ReadyState(@isReady) 
      
      Select isReady 
        Case 1 
        page=0 
          StatusBarText(0, 0, "Page Loading") 
          
        Case 2 
          StatusBarText(0, 0, "Page Loaded") 
          
        Case 3 
          page=1 
          StatusBarText(0, 0, "Page is interactive with some data missing") 
          
        Case 4 
          page=1 
          StatusBarText(0, 0, "Page finished loading") 
          
      EndSelect 
  EndIf 
          
  WebObject\get_busy(@isBusy) 
  

      Select EventID 
        Case #WM_MOUSEMOVE 
        Hcursor=GetCursor_() 
        If page 
            If Hcursor<>65555 And  Hcursor<>65553 
            link() 
            Else 
            StatusBarText(0, 0, "") 
            EndIf 
        EndIf 
        
        Case #WM_CLOSE 
            quit=1 
    EndSelect 

Until quit=1 

End 

DataSection 
IID_IHTMLDocument2: 
;332C4425-26CB-11D0-B483-00C04FD90119 
Data.l $332C4425 
Data.w $26CB, $11D0 
Data.b $B4, $83, $00, $C0, $4F, $D9, $01, $19 

IID_IHTMLAnchorElement: 
;3050F1DA-98B5-11CF-BB82-00AA00BDCE0B 
Data.l $3050F1DA 
Data.w $98B5, $11CF 
Data.b $BB, $82, $00, $AA, $00, $BD, $CE, $0B 

EndDataSection
DarkDragon
Beiträge: 6267
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

>>>1. Das geht eigentlich ganz einfach:

Code: Alles auswählen

#WindowWidth  = 500
#WindowHeight = 400
#WindowFlags  = #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered | #PB_Window_SystemMenu

hWnd = OpenWindow(0, 0, 0, #WindowWidth, #WindowHeight, #WindowFlags, "")

CreateGadgetList(hWnd)
EditorGadget(0, 0, 0, #WindowWidth, #WindowHeight/2)
WebGadget(1, 0, (#WindowHeight/2)+5, #WindowWidth, (#WindowHeight/2)-5, "about:")

Repeat
  Event = WindowEvent()
  Select Event
    Case #PB_Event_Gadget
      Select EventGadgetID()
        Case 0
          SetGadgetText(1, "about:"+GetGadgetText(0))
      EndSelect
  EndSelect
  Delay(5)
Until Event = #PB_Event_CloseWindow
End
>>>2.K.A.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
stbi
Beiträge: 685
Registriert: 31.08.2004 15:39
Wohnort: Cleverly Hills

Re: Daten in WebGadget streamen...

Beitrag von stbi »

NicTheQuick hat geschrieben:1. Hat jemand eine Idee, wie ich direkt ins WebGadget Daten reinstreamen kann ohne den Umweg über eine Datei zu gehen? Es würde auch reichen, wenn ich eine Speicheradresse übergeben kann.
nur so ne Idee: statt auf eine Datei auf eine Pipe bzw. Named Pipe verweisen. Wird genauso wie ne Datei behandelt, nur dass sie statt dem Dateinamen als "\\maschine\pipename" aufgebaut ist. Näheres müsste die WinAPI hergeben.

Gruß Stefan
PB 4.02 XP Pro SP2 "Der Code ist willig, aber der Prozessor ist schwach."

Es gibt keine Vista-Witze. Es ist alles wahr!
Agent
Beiträge: 296
Registriert: 13.09.2004 11:28
Kontaktdaten:

Beitrag von Agent »

Danke an die Menschheit!

Nic hat die Frage gestellt, die ich neulich schon stellen wollte (und Nic weiß doch sonst alles was ich frage... )

und Dark liefert prompt ne supergeile Lösung (die sofort läuft) und ungeahnte Möglichkeiten gibt.

Dem Drachen sei dank! (Ich als alter D&D Gamer)
Agent_Sasori
It's not a bug - it's a feature!
http://www.StephenKalisch.de | http://www.ria-tec.com | http://www.dirsync.de
coldarchon
Beiträge: 26
Registriert: 08.09.2004 09:33
Kontaktdaten:

Re: Daten in WebGadget streamen...

Beitrag von coldarchon »

NicTheQuick hat geschrieben:2. Ich würde gerne die Klicks auf die Links im WebGadget abfangen und derren Verlinkungs-URL zurückbekommen. Geht das irgendwie?
hatten wir das nicht mal im alten Forum?
Antworten