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