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?
Daten in WebGadget streamen...
- 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:
- brotkasten-deluxe
- Beiträge: 147
- Registriert: 29.08.2004 01:43
- Wohnort: Germany
- Kontaktdaten:
Hmmm
>>1. Kp
>>2. Meinste sowas ?
>>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
-
- Beiträge: 6267
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
>>>1. Das geht eigentlich ganz einfach:
>>>2.K.A.
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
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.
Re: Daten in WebGadget streamen...
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.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.
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!
Es gibt keine Vista-Witze. Es ist alles wahr!
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)
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
It's not a bug - it's a feature!
http://www.StephenKalisch.de | http://www.ria-tec.com | http://www.dirsync.de
-
- Beiträge: 26
- Registriert: 08.09.2004 09:33
- Kontaktdaten:
Re: Daten in WebGadget streamen...
hatten wir das nicht mal im alten Forum?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?