hallo ich habe eine frage bzgl. webgadget
ich möchte ein textgadget und darunter ein webgadget erstellen.
wenn ich einen string mit dem textgadget absende möchte ich, das das ergebniss im webgadget dargestellt wird.
die website enthält ein formular und wird per post fersendet...
habe schon so eineiges ausprobiert aber ich komm einfach nicht weiter heul...
ich bräuchte einen kleinen ansatz....
der header sieht so aus beim senden
POST /preissuche/preissuche/index.php HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:18.0) Gecko/20100101 Firefox/18.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Cookie: PHPSESSID=d9ir647eff666138s5l2q4mr5c61lh79
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 21
q=PIONEER+DEH-X9500BT
SendNetworkString() ich weiß nicht mehr weiter
-
- Beiträge: 713
- Registriert: 22.03.2005 00:29
- Computerausstattung: Computer und Strom vorhanden
- Wohnort: LK Wolfenbüttel
Re: SendNetworkString() ich weiß nicht mehr weiter
Moin Moin.
Wenn ich das richtig verstanden habe, sollen zwei unterschiedle Dinge geschen.
1. Du gibst etwas in das Textgadget deines Programmes ein und dein Programm sendet dann diesen Text an einen Internetserver (HTML).
2. Der Server verarbeitet die Daten und das Ergebnis soll dann in deinem Programm durch das Webgadget angezeigt werden.
Als erstes stellt sich nun die Frage wie du es bisher versucht hast?
Der Betreff "SendNetworkString()" sagt da nicht viel aus.
Der direkt weg in Form von "du sendest" und "Webgadget empfängt" wird nicht funktionieren. Soweit ich weiß ist das Webgadget nichts weiter als ein "eingebautes" Browserfenster deines Standartbrowsers (IE oder Mozilla). Das Webgadget kann daher also auch nur Daten ausgeben, welche es empfangen hat. Empfangen tut es allerdings nur, wenn es auch sendet. Nutzt du SendNetworkString()" ist dem aber NICHT so.
Ob die Plugins theoretisch eine Umleitfunktion oder so Etwas (nennt man das Hook?) kennen weiß ich nicht, ist aber in PB vorhanden.
Grundlegend fallen mir zwei Lösungswege ein:
1. Du sendest nicht mit SendNetworkString(), sondern erstellst deinen HTMLcode inklusive des Textes, kopierst dann in das Webgadget und sendest das. Wie das senden damit geht weiß ich nicht so genau, aber mindestens mit einen angepaßten Code sollte es funktionieren.
2. Der wohl schönere und sichere Weg ist, du Sendest deine Daten mit SendNetworkString() und wenn du die Daten richtig gesendet hast, dann erhälst du über die Netzwerkverbindung auch die Antwortdaten. Diese einfach auslesen, verarbeiten oder direkt in das Webgadget kopieren.
Dazu dann einfach "SetGadgetItemText()" nutzen. Dieser direkte Weg läuft aber nur unter Windows (warum auch immer). Auf anderen Systemen einfach die Ausgabe in eine Datei umleiten und dann diese mit dem Webgadget aufrufen.
Wie ich schon anmerkte, hast du nicht geschrieben an welcher Stelle es hadert. Möglicherweise meinst du ja auch den "HTML-Codeaufruf" den du nutzt. Da aber müßtest du dich einfach kurz mal mit HTML und den Purebasicbeispielvorlagen beschäftigen.
Schreib doch einfach mal was du bisher machst und an welcher Stelle es nicht weiter geht. Beispielcode wäre hilfreich. Besonders was und wie du Sendest hilft sicher.
Gruß
Toshy
Wenn ich das richtig verstanden habe, sollen zwei unterschiedle Dinge geschen.
1. Du gibst etwas in das Textgadget deines Programmes ein und dein Programm sendet dann diesen Text an einen Internetserver (HTML).
2. Der Server verarbeitet die Daten und das Ergebnis soll dann in deinem Programm durch das Webgadget angezeigt werden.
Als erstes stellt sich nun die Frage wie du es bisher versucht hast?
Der Betreff "SendNetworkString()" sagt da nicht viel aus.
Der direkt weg in Form von "du sendest" und "Webgadget empfängt" wird nicht funktionieren. Soweit ich weiß ist das Webgadget nichts weiter als ein "eingebautes" Browserfenster deines Standartbrowsers (IE oder Mozilla). Das Webgadget kann daher also auch nur Daten ausgeben, welche es empfangen hat. Empfangen tut es allerdings nur, wenn es auch sendet. Nutzt du SendNetworkString()" ist dem aber NICHT so.
Ob die Plugins theoretisch eine Umleitfunktion oder so Etwas (nennt man das Hook?) kennen weiß ich nicht, ist aber in PB vorhanden.
Grundlegend fallen mir zwei Lösungswege ein:
1. Du sendest nicht mit SendNetworkString(), sondern erstellst deinen HTMLcode inklusive des Textes, kopierst dann in das Webgadget und sendest das. Wie das senden damit geht weiß ich nicht so genau, aber mindestens mit einen angepaßten Code sollte es funktionieren.
2. Der wohl schönere und sichere Weg ist, du Sendest deine Daten mit SendNetworkString() und wenn du die Daten richtig gesendet hast, dann erhälst du über die Netzwerkverbindung auch die Antwortdaten. Diese einfach auslesen, verarbeiten oder direkt in das Webgadget kopieren.
Dazu dann einfach "SetGadgetItemText()" nutzen. Dieser direkte Weg läuft aber nur unter Windows (warum auch immer). Auf anderen Systemen einfach die Ausgabe in eine Datei umleiten und dann diese mit dem Webgadget aufrufen.
Wie ich schon anmerkte, hast du nicht geschrieben an welcher Stelle es hadert. Möglicherweise meinst du ja auch den "HTML-Codeaufruf" den du nutzt. Da aber müßtest du dich einfach kurz mal mit HTML und den Purebasicbeispielvorlagen beschäftigen.
Schreib doch einfach mal was du bisher machst und an welcher Stelle es nicht weiter geht. Beispielcode wäre hilfreich. Besonders was und wie du Sendest hilft sicher.
Gruß
Toshy
1. Win10
PB6.1
PB6.1
Re: SendNetworkString() ich weiß nicht mehr weiter
hi toshy,
vielen dank für die wirklich ausführliche antwort ,ja du hast recht habe mich nicht richtig gut ausgedrückt,sorry!
aber du hast es schon richtig vermutet ich wollte einen suchbegriff eingeben und das ergebniss sollte dann im webgadget angezeigt werden.
das mit SendNetworkString() hatte ich versucht aber irgendwie keinen erfolg gehabt!
hatte mir auch für firefox livehttp runtergeladen um den header zu untersuchen...hatt alles nichts gebracht:O(
habe mir jetzt was anderes zusammen gefriemelt es funktioniert zwar aber die andere lösung wäre mir lieber:O)
falls du eine codeschnipsel haben solltest der SendNetworkString() für so eine action benutzt könntest du den vieleicht posten?
vielen dank nochmal
vielen dank für die wirklich ausführliche antwort ,ja du hast recht habe mich nicht richtig gut ausgedrückt,sorry!
aber du hast es schon richtig vermutet ich wollte einen suchbegriff eingeben und das ergebniss sollte dann im webgadget angezeigt werden.
das mit SendNetworkString() hatte ich versucht aber irgendwie keinen erfolg gehabt!
hatte mir auch für firefox livehttp runtergeladen um den header zu untersuchen...hatt alles nichts gebracht:O(
habe mir jetzt was anderes zusammen gefriemelt es funktioniert zwar aber die andere lösung wäre mir lieber:O)
Code: Alles auswählen
Enumeration
#web_gadget
EndEnumeration
Procedure WebgadgetInput ( sKey.s , text$="", flag=0 )
Protected WebBrowser .IWebBrowser2 = GetWindowLongPtr_( GadgetID ( #web_gadget ) , #GWL_USERDATA )
Protected Dispatch .iDispatch
Protected Document .IHTMLDocument3
Protected Element .IHTMLElement
Protected InputElement .IHTMLInputElement
If Not ( WebBrowser\get_Document( @ Dispatch ) = #S_OK )
Dispatch\Release()
ProcedureReturn
EndIf
If Not ( Dispatch\QueryInterface( ? IID_IHTMLDocument3 , @ Document ) = #S_OK )
Document\Release()
Dispatch\Release()
ProcedureReturn
EndIf
If Not ( Document\getElementById( sKey , @ Element ) = #S_OK And Element )
Document\Release()
Dispatch\Release()
ProcedureReturn
EndIf
If Not ( Element\QueryInterface( ? IID_IHTMLInputElement , @ InputElement ) = #S_OK)
Element\Release()
Document\Release()
Dispatch\Release()
ProcedureReturn
EndIf
If Not ( InputElement\put_Value( text$ ) = #S_OK )
Element\Release()
Document\Release()
Dispatch\Release()
ProcedureReturn
EndIf
InputElement\Release()
Element\Release()
Document\Release()
Dispatch\Release()
DataSection
IID_IHTMLDocument3: ; { 3050F485-98B5-11CF-BB82-00AA00BDCE0B }
Data.l $3050F485
Data.w $98B5 , $11CF
Data.b $BB , $82 , $00 , $AA , $00 , $BD , $CE , $0B
IID_IHTMLInputElement: ; { 3050f5d2-98b5-11cf-bb82-00aa00bdce0b }
Data.l $3050F5D2
Data.w $98B5 , $11CF
Data.b $BB , $82 , $00 , $AA , $00 , $BD , $CE , $0B
EndDataSection
EndProcedure
If OpenWindow(0, 0, 0, 600, 300, "WebGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
WebGadget(#web_gadget, 10, 20, 580, 280, "http://www.google.de")
SetGadgetAttribute(#web_gadget, #PB_Web_BlockPopupMenu, #True)
ButtonGadget(1,0,0,100,20,"Suchen")
StringGadget(2,120,0, 306, 20, "")
Repeat
Select WaitWindowEvent()
Case #PB_Event_Gadget
Select EventGadget()
Case 1
sKey.s = "q"
text$= GetGadgetText(2)
WebgadgetInput ( sKey.s , text$ , flag=0 )
SetGadgetText(#web_gadget, "javascript:document.all.tags("+Chr(34)+"form"+Chr(34)+")[0].submit();")
EndSelect
Case #PB_Event_CloseWindow
Select EventWindow()
Case 0
CloseWindow(0)
Break
EndSelect
EndSelect
ForEver
EndIf
vielen dank nochmal