webgadget mit frames quelltext auslesen ?

Für allgemeine Fragen zur Programmierung mit PureBasic.
bossi
Beiträge: 12
Registriert: 07.10.2004 19:40

Beitrag von bossi »

stbi hat geschrieben: Wie ich bereits sagte, das Webgadget kennt die URL und die gerenderte Seite, aber nicht den HTML-Quellcode! D.h. der HTML-Quellcode steht somit nicht im Speicher.
Noch ne Alternative: lass einen http-proxy-Thread mitlaufen, über den sich das Webgadget versorgt und der die Dateien mitschneidet.

Das mit dem Paidmailer (wassollndassein?) und der Zeit im Frame und dem nächsten Seitenaufruf hab ich leider nicht kapiert.
also, ich bekomme von ein AMI-paidmailer 10 mails an tag in der 2-3 links die ich für ein paar cent besuchen soll.
diese seite muss eine bestimmte zeit geöffnet sein
frame1 der seite : ein javascript das nach der bestimmten zeit ne meldung zum server macht (seite besucht, auf konto gutschreiben) :roll:
frame2 der seite : die eigendliche seite die bewundert werden soll :lol:

mein programm durchsucht die mails nach paidlinks und fügt diese in eine liste ein.
die liste wird nun link für link abgearbeitet und dafür brauche ich die aufenthaltszeit.
die aufenthaltszeit steht in frame1, deshalb brauche ich von frame1 den quellcode oder textinhalt.
habe ich die aufenthaltszeit, weis das programm wann der nächste link am dransten ist.
Benutzeravatar
stbi
Beiträge: 685
Registriert: 31.08.2004 15:39
Wohnort: Cleverly Hills

Beitrag von stbi »

uff, auch ne Art, sein Geld zu verdienen ... :lol:

ok, habs kapiert.

Der HTML-Code für den Javascript-Frame nützt Dir nix, Du musst ja wissen, wann der Counter tatsächlich heruntergezählt hat, d.h. Du musst wirklich den Text aus dem WebGadget auslesen. Da gab es mal einen Thread im alten Forum (Pureboard-Archiv), wie man Text aus Fenstern ausliest, das geht, wenn man den Fenstertitel kennt relativ einfach, soweit ich das noch in Erinnerung habe. In den Thread ging es konkret darum, den Inhalt des PB-Debugger-Fensters in eine Datei zu speichern, vielleicht hilft das beim suchen. Wahrscheinlich hat das auch seinen Weg ins Codearchiv gefunden.
Im Codearchiv ist auch noch ein Beispiel drin, wie man den Inhalt des Webgadgets in die Zwischenablage kopiert, das könnte doch auch funktionieren, schau mal unter Gadgets/Webgadget.

Viel Erfolg!
PB 4.02 XP Pro SP2 "Der Code ist willig, aber der Prozessor ist schwach."

Es gibt keine Vista-Witze. Es ist alles wahr!
Benutzeravatar
stbi
Beiträge: 685
Registriert: 31.08.2004 15:39
Wohnort: Cleverly Hills

Beitrag von stbi »

jetzt hab ich mir heute schon die Finger wundgetippt, jetzt musste ich es doch auch mal ausprobieren :D

so gehts mit der Zwischenablage:

Code: Alles auswählen

; English forum: http://purebasic.myforums.net/viewtopic.php?t=7337
; Author: Freak
; Date: 26. August 2003

; modified for PB3.80 by Freak on 07th September 2003

Enumeration 1 
  #OLECMDID_OPEN          
  #OLECMDID_NEW        
  #OLECMDID_SAVE          
  #OLECMDID_SAVEAS            
  #OLECMDID_SAVECOPYAS    
  #OLECMDID_PRINT        
  #OLECMDID_PRINTPREVIEW        
  #OLECMDID_PAGESETUP        
  #OLECMDID_SPELL            
  #OLECMDID_PROPERTIES  
  #OLECMDID_CUT          
  #OLECMDID_COPY        
  #OLECMDID_PASTE            
  #OLECMDID_PASTESPECIAL    
  #OLECMDID_UNDO            
  #OLECMDID_REDO          
  #OLECMDID_SELECTALL        
  #OLECMDID_CLEARSELECTION 
  #OLECMDID_ZOOM            
  #OLECMDID_GETZOOMRANGE      
  #OLECMDID_UPDATECOMMANDS  
  #OLECMDID_REFRESH            
  #OLECMDID_STOP              
  #OLECMDID_HIDETOOLBARS      
  #OLECMDID_SETPROGRESSMAX    
  #OLECMDID_SETPROGRESSPOS  
  #OLECMDID_SETPROGRESSTEXT    
  #OLECMDID_SETTITLE          
  #OLECMDID_SETDOWNLOADSTATE  
  #OLECMDID_STOPDOWNLOAD      
EndEnumeration 

Enumeration 0 
  #OLECMDEXECOPT_DODEFAULT      
  #OLECMDEXECOPT_PROMPTUSER        
  #OLECMDEXECOPT_DONTPROMPTUSER    
  #OLECMDEXECOPT_SHOWHELP        
EndEnumeration 

; ----------------------------------------------------- 

; Now the code 

#WebGadget = 1 
#Button = 2 

OpenWindow(0, 0, 0, 800, 600, #PB_Window_Screencentered|#PB_Window_SystemMenu, "WebBrowser") 
CreateGadgetList(WindowID()) 

WebGadget(#WebGadget, 10, 40, 780, 550, "www.purebasic.com") 
ButtonGadget(#Button, 10, 10, 60, 20, "Copy") 

; Fred the genius stored the Interface pointer to IWebBrowser2 in the DATA 
; member of the windowstructure of the WebGadget containerwindow, so we can get 
; that easily: 
WebObject.IWebBrowser2 = GetWindowLong_(GadgetID(#WebGadget), #GWL_USERDATA) 

Repeat 
  Event = WaitWindowEvent() 
  If Event = #PB_EventGadget And EventGadgetID() = #Button 
    
    ; Now here's the actual copy thing, not that complicated... 
    WebObject\ExecWB(#OLECMDID_SELECTALL, #OLECMDEXECOPT_DONTPROMPTUSER, 0, 0) 
    WebObject\ExecWB(#OLECMDID_COPY, #OLECMDEXECOPT_DONTPROMPTUSER, 0, 0) 
    
    ; little test: 
    MessageRequester("", GetClipboardText(), 0) 
    
  EndIf 
Until Event = #PB_EventCLoseWindow 

End
; ExecutableFormat=Windows
; FirstLine=1
; EnableXP
; EOF
Die Zeile mit dem _SelectAll habe ich ergänzt, damit der gesamte Inhalt des Webgagdets markiert ist.
PB 4.02 XP Pro SP2 "Der Code ist willig, aber der Prozessor ist schwach."

Es gibt keine Vista-Witze. Es ist alles wahr!
bossi
Beiträge: 12
Registriert: 07.10.2004 19:40

Beitrag von bossi »

hi stbi,
das funz schon was du da machst, aber nicht bei frames :cry:
versuch dein code mal mit : http://de.selfhtml.org/html/frames/anzeige/frames.htm
dann ist die ablage leer und alter bestand :(
Benutzeravatar
stbi
Beiträge: 685
Registriert: 31.08.2004 15:39
Wohnort: Cleverly Hills

Beitrag von stbi »

ich sehe nur zwei Möglichkeiten:
1. beide Frames in unterschiedliche Webgadgets laden, dann kannst Du den Frame mit dem Javascript-Counter auslesen
2. die Aktivierung des gewünschten Frames erzwingen. Im IE springt man mit Strg-Tab zwischen den Frames bzw. mit einem Mausklick. Ersteres funktioniert im WegGadget aber nicht. Möglicherweise gibt es auch einen Befehl analog zum Selektieren und Kopieren in die Zwischenablage, da bin ich mit meinem Latein aber völlig am Ende.
PB 4.02 XP Pro SP2 "Der Code ist willig, aber der Prozessor ist schwach."

Es gibt keine Vista-Witze. Es ist alles wahr!
Mereep
Beiträge: 72
Registriert: 01.09.2004 18:55
Wohnort: Annaberg-Buchholz

Beitrag von Mereep »

srry, dass ich den alten Thread nach oben hole, aber ich brauche eine Möglichkeit den Text aus einem Frame zu kopieren, ohne Benutzerzutun.
Das mit dem automatischen markieren und kopieren klappt soweit prima, aber nur für das erste Frame.
Allerdings darf ich keine direkten Requests an den Server stellen(Wir wollen ja mal die Regeln beachten) deshalb auch erst der Umweg übers Webgadget.
Wie kann ich das anstellen, dass der mir den richtigen Frame ins Clipboard pushed? PlZ Help ;-)

MfG Mereep
Print("Hallo Welt")
Benutzeravatar
Eric
Beiträge: 303
Registriert: 05.09.2004 09:50
Wohnort: Göttingen

Beitrag von Eric »

Im englischen Forum gab es dazu einen Thread:
http://www.purebasic.fr/english/viewtopic.php?t=16837

Und speziell diesen Post:
http://www.purebasic.fr/english/viewtop ... 506#103506
El_Choni_work: cant't you just spit the binary data to sqlite, as you would spit a hamster into a microwave oven?
* Fangles falls off the chair laughing
Bild
Antworten