Seite 1 von 1

Benzin-Preis-Anzeiger

Verfasst: 11.08.2008 16:16
von spider84
Hallo!
Das Programm ist leider noch etwas unfertig, aber vlt hat sich sowas ja der ein oder andere gewünscht: Es zeigt den aktuellen Benzinpreis einer vorher ausgewählten Tankstelle im Tray an.
Ihr könnt gerne an den Ecken, die ich jetzt noch nicht implementieren konnte mithelfen.

Code: Alles auswählen

; Programm zum anzeigen des aktuellen Benzin-Preises
;----------------------------------------------------------------------------------
; Get text contents of an internet site
; Text einer Internetseite auslesen
Procedure.l GB_DownloadToMem ( url.s, *lpRam, ramsize.l ) 
  Protected agent.s, hINet.l, hData.l, bytes.l 

  
  ;  #INTERNET_OPEN_TYPE_DIRECT    = 1 
  ;  #INTERNET_DEFAULT_HTTP_PORT   = 80 
  ;  #INTERNET_SERVICE_HTTP        = 3 
  ;  #INTERNET_FLAG_NO_CACHE_WRITE = $4000000 
  ;  #INTERNET_FLAG_RELOAD         = $8000000 
  

  agent.s = "Mozilla/4.0 (compatible; ST)" 
  hINet.l = InternetOpen_ ( @agent.s,0,0,0,0 ) 
  hData.l = InternetOpenUrl_ ( hINet, @url.s, "", 0, $4000000, 0 ) 
  
  If hData > 0 : InternetReadFile_ ( hData, *lpRam, ramsize.l, @bytes.l ) : Else : bytes = -1 : EndIf 
  
  InternetCloseHandle_ (hINet) 
  InternetCloseHandle_ (hFile) 
  InternetCloseHandle_ (hData) 
  ProcedureReturn bytes.l 
EndProcedure 

Procedure HideFromTaskBar(hWnd.l, Flag.l)
  Protected TBL.ITaskbarList

  CoInitialize_(0)
  If CoCreateInstance_(?CLSID_TaskBarList, 0, 1, ?IID_ITaskBarList, @TBL) = #S_OK
    TBL\HrInit()
    If Flag
      TBL\DeleteTab(hWnd)
    Else
      TBL\AddTab(hWnd)
    EndIf
    TBL\Release()
  EndIf
  CoUninitialize_()
 
  DataSection
    CLSID_TaskBarList:
    Data.l $56FDF344
    Data.w $FD6D, $11D0
    Data.b $95, $8A, $00, $60, $97, $C9, $A0, $90
    IID_ITaskBarList:
    Data.l $56FDF342
    Data.w $FD6D, $11D0
    Data.b $95, $8A, $00, $60, $97, $C9, $A0, $90
  EndDataSection
EndProcedure 

stdURL.s = "http://www.clever-tanken.de/showtank_payed.asp?Tankstelle=ARAL+Hafenstr.+19-21+Mannheim&secureid=5150&typ=Super&ort=681"

If OpenPreferences("Einstellungen.ini") = 0
  CreatePreferences("Einstellungen.ini") 
  PreferenceGroup("URL") 
    WritePreferenceString("clever-tanken-URL", stdURL.s) 
  PreferenceGroup("Suchstring") 
    WritePreferenceString("string","Super:") 
  PreferenceGroup("Offset") 
    WritePreferenceString("Offset","63") 
  ClosePreferences() 
EndIf
  PreferenceGroup("URL") 
    URL.s = ReadPreferenceString("clever-tanken-URL", stdURL.s)  
  PreferenceGroup("Suchstring") 
    Suchstring.s = ReadPreferenceString("string","Super:")
  PreferenceGroup("Offset") 
    Offset.s = ReadPreferenceString("Offset","63")
ClosePreferences() 


*MemoryID = AllocateMemory(50000)
If *MemoryID
  sitelength = GB_DownloadToMem(URL.s, *MemoryID, 50000)
  If sitelength > 0
    Debug "Die geladene Internetseite hat eine Größe von: " + Str(sitelength) + " Bytes"
    text$ = PeekS(*MemoryID)
    position=FindString(text$,Suchstring.s,1)
    ;Debug text$
    Debug "Position: "+Str(position)
    text$ = PeekS(*MemoryID + position + Val(Offset.s), 5)
    Debug text$
  Else
    Debug "Konnte angeforderte Internetseite nicht laden!"
  EndIf
Else
  Debug "Konnte den angeforderten Speicher nicht reservieren!"
EndIf
TrayWnd       = FindWindow_("Shell_TrayWnd", 0)
TrayNofifyWnd = FindWindowEx_(TrayWnd, 0, "TrayNotifyWnd", 0) ;für Win9x

GetWindowRect_(TrayNofifyWnd,win.RECT)

x=win\left : y=win\top
w=win\right-win\left : h=win\bottom-win\top

If OpenWindow(0,x-7,y+5,27,15,"blub", #PB_Window_BorderLess)
   CreateGadgetList(WindowID(0))
   ;ProgressBarGadget(1,0,0,10,h,0,100,#PB_ProgressBar_Smooth)
   TextGadget(1, 0, 0, 27, 15, text$) 
   SetWindowPos_(WindowID(0),#HWND_TOPMOST,0,0,0,0,#SWP_NOMOVE|#SWP_NOSIZE)
   SetGadgetColor(1, #PB_Gadget_BackColor, $FF0000)
   If CreatePopupMenu(0)    ; hier beginnt das Erstellen des Menüs...
        MenuItem(1, "Wechseln")
        MenuItem(2, "Schließen"  +Chr(9)+"Ctrl+C")
    EndIf

EndIf
HideFromTaskBar(WindowID(0), 1)
;hier könnte routine für Transparenz stehen

;HideWindow(0, 1)
;MessageRequester("","Bla",#PB_MessageRequester_Ok)
;hier sollte ein wartebefehl her, der das programm z.B. immer um 15:00 uhr aktualisiert
closeapp=0
Repeat
  HideFromTaskBar(WindowID(0), 1)
  Select WaitWindowEvent()
  Case #WM_RBUTTONDOWN
    DisplayPopupMenu(0, WindowID(0))
  Case #PB_Event_Menu        ; ein Eintrag des Popup-Menüs wurde angeklickt
          Select EventMenu()       ; ermittle den angeklickten Menü-Eintrag...
            Case 1 : Debug "Wechsel..."
            Case 2 : closeapp=1
          EndSelect
  EndSelect
Until closeapp=1

Verfasst: 12.08.2008 22:29
von Bisonte
Der Sinn bei diesem CleverTanken.de ist mir fremd.... was nützen einem die Benzinpreise von vor 3 Tagen ? Aber die idee ist nett...

Verfasst: 13.08.2008 00:42
von Helmut
Kann ich aber nicht auf Diesel anpassen, Offset?
Suchstring geändert, trotzdem immer Super-Benzin-Preis???

Verfasst: 13.08.2008 01:12
von spider84
@Helmut:
doch, das geht!
1. Executable erstellen, 2. 1x so ausführen, 3. In der jetzt erstellten Einstellungen.ini Suchstring in Diesel: und Offset auf 64 ändern.

Wenn du das Programm aus der Entwicklungsumgebung startest, speichert er möglicherweise eine Einstellungen.ini irgendwo hin und löscht sie danach nicht wieder. Wenn du dann die Werte im Programm selbst änderst, liest er sie aus der alten Datei weil es nur Default-Werte sind.

Verfasst: 13.08.2008 01:19
von Helmut
Hast recht, mit einmal exe erstellen war es ok.
Das Blaue ist mir noch zu blau, aber sonst doch ganz gut!!!!
Gute Nacht und vielen Dank!!

Verfasst: 14.08.2008 11:26
von spider84
Jo, PB hat irgendwo ein temp-verzeichnis.
An dem Blau hatte ich mich auch schon gestört, aber hübscher als grau find ich es schon. Aus mysteriösen Gründen musste ich aus der Farbtabelle aber ein Rot auswählen um Blau zu erhalten, also komplementär. Das sind auch die Gründe warum ich noch nach Möglichkeiten der Transparenz suche

Verfasst: 14.08.2008 12:48
von HeX0R
spider84 hat geschrieben:Aus mysteriösen Gründen musste ich aus der Farbtabelle aber ein Rot auswählen um Blau zu erhalten
Aus der in der IDE enthaltenen Farbtabelle ? (Alt + P)

Verfasst: 14.08.2008 13:16
von Kaeru Gaman
spider84 hat geschrieben:Aus mysteriösen Gründen musste ich aus der Farbtabelle aber ein Rot auswählen um Blau zu erhalten, also komplementär.
das ist nicht misteriös, sondern völlig normal.

in einer Programm ist ein Farbwert in RGB ein 24bit wert,
der in der Reihenfolge 1byte Rot - 1byte Grün - 1byte Blau im speicher steht.

wenn man speicheradressen zu einem gesamtwert zusammenfasst,
dann beginnt man mit der niederwertigsten.

also wird der resultierende Farbwert 1*Rot + 256*Grün + 65536*Blau sein.

wenn man das als Hex-Wert schreibt,
dann steht Blau als höchstwertigstes an erster stelle der notation,
weil es an letzter stelle im speicher steht.
der Hex-Code liest also: BBGGRR

bei web-farben ist das umgekehrt: sie werden gemäß Regel in RRGGBB notiert.
tatsächlich ist eine Webfarbe also kein 24bit-Hex-Farbwert,
sondern die Web-Notation von drei 8bit-Hex-Farbkanal-Einzelwerten.

Verfasst: 03.10.2008 18:25
von Oliver1994
Ide ist gut!

Am visuellen lässt sich noch arbeiten!

ist sehr klein und sehr schwer zu lesen!

außerdem wäre es einfacher wenn die einstellungen im programm vornehmbar sind!


gruß

JENS