Seite 1 von 1

Daten in WebGadget streamen...

Verfasst: 30.08.2004 13:00
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?

Verfasst: 30.08.2004 14:03
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

Verfasst: 30.08.2004 14:22
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.

Re: Daten in WebGadget streamen...

Verfasst: 31.08.2004 15:47
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

Verfasst: 17.09.2004 09:32
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)

Re: Daten in WebGadget streamen...

Verfasst: 17.09.2004 10:53
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?