Hallo zusammen,
da ich in letzter Zeit vergesslicher werde und immer wieder die eingrenzenden Suchfunktionen von Google vergesse, habe ich ein kleines Script geschrieben, um diese Suche zu vereinfachen.
Um beispielsweise die Avatar-Bilder aus dem AutoIt.de-Forum im JPG-Format bei Google zu finden geht man idR folgendermaßen vor:
Browser öffnen, Google aufrufen in die Bildersuche wechseln und dort in der Eingabezeile folgendes eintragen:
avatar site:https://autoit.de/www.autoit.de filetype:jpg
Google sucht dann nur innerhalb der bei site: angegebenen website und nach dem Dateiformat, welches bei fileformat: angegeben wurde. Aber es gibt natürlich noch mehr dieser Möglichkeiten zu filtern.
ErGo hilft dabei...[Blockierte Grafik: http://www.abload.de/thumb/ergo_picpsjk.jpg]
Man kann bei ErGo persönliche Sucheinstellungen in einer Vorlagenliste eintragen, als kleines Schmankerl werden die Favicons der Website, auf der gesucht werden soll, mit in diese Vorlagenliste eingetragen.
Beispielsweise sucht man nach AutoIt-Codebeispielen zum Thema "WM_Command" mit ErGo auf den einschlägigen Webseiten folgendermaßen:
ErGo starten, die zu durchsuchenden Webseiten in der Vorlagenliste anhaken (auch mehrere), im oberen Inputfeld den Suchbegriff WM_Command eintragen, Enter drücken und der Standardbrowser präsentiert (ggf nach automatischem Start) in einzelnen Reitern die Suchergebnisse der ausgewählten Seiten!
Auch die Suche im AutoIt-Forum findet jetzt viiiele Treffer mehr wie mit der "internen" Suche auf der Website.
Genau wie auf http(s):\\ Seiten, kann Google natürlich auch auf FTP-Servern suchen, oder auch nach oder in Büchern und und und
Leider ist ErGo (zzt noch) auf die Zusammenarbeit mit Opera, Firefox, Iron und natürlich dem Internetzexplodierer beschränkt, aber es sollte kein Problem sein, jeden anderen beliebigen Browser einzubinden.
Btw., ich hatte das Programm erst nur für Opera geschrieben, aber Freunde baten mich es etwas umzustricken, damit es auch mit anderen Browsern automatisch läuft.
Daher ist der Code stellenweise etwas "gewöhnungsbedürftig"^^
Auf der ToDo-Liste steht schon einiges, z.B. hätte ich gerne die heruntergeladenen Favicons alle in einem Container.
Viel Spass beim Suchen mit ErGo
Andy
Spoiler anzeigen
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_icon=ErGo.ico
#AutoIt3Wrapper_outfile=ErGoSuche.exe
#AutoIt3Wrapper_Res_Fileversion=1.0.3.1
#AutoIt3Wrapper_Res_Language=1031
;#AutoIt3Wrapper_Run_After=copy "%in%" "z:\test\g_suche\"
;#AutoIt3Wrapper_Run_After=copy "%out%" "z:\test\g_suche\"
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <Constants.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <Array.au3>
#include <File.au3>
#include <Inet.au3>
#include <StructureConstants.au3>
#include <GuiImageList.au3>
#include <GuiListView.au3>
#include <ListViewConstants.au3>
#include <GuiStatusBar.au3>
#include <GUIConstantsEx.au3>
#include <ListBoxConstants.au3>
#include <WindowsConstants.au3>
#include <Misc.au3>
;*************Variablen*****************
Local $iExWindowStyle = BitOR($WS_EX_DLGMODALFRAME, $WS_EX_CLIENTEDGE, $LBS_EXTENDEDSEL)
Local $iExListViewStyle = BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_GRIDLINES, $LVS_EX_CHECKBOXES, $LVS_EX_DOUBLEBUFFER, $LVS_EX_TRACKSELECT)
Local $aStatusbar_Text[2] = [" Ver "&_scriptversion(), "Info"], $aStatusbar_Parts[2] = [60, -1] ;statusbar
Global $suchmaschine, $browserfenster, $combostring
Global $RadioString = "allintitle:", $hstatus, $mausaltx = 0, $mausalty = 0, $toolstarttime, $toolflag = 0, $Faviconfile = ""
Global $Browserwindow[10], $DefaultBrowser, $Browsername, $Browserprocess, $browsermainwin, $browsernewwindow
Global $dll = DllOpen("user32.dll") ; für die WindowsMessages WM_notify-Funktion
Global $hImage = _GUIImageList_Create(16, 16, 5, 5) ;Liste für die Favicons
Global $defaulticon = "ErGo.ico", $inifile = "ErGo.ini"
_GetBrowserInfo() ;stellt standardbrowser fest und setzt entsprechend die fensterdaten
Global $progname = "ErGo Erweiterte Googlesuche mit " & $Browsername
Opt("GUIOnEventMode", 1)
Opt("TCPTimeout", 500)
Opt('TrayMenuMode', 1) ; Tray-Standardmenü ausschalten
Opt('TrayAutoPause', 0) ; AutoPause ausschalten
;Opt("WinTitleMatchMode",2)
;************Instanzen***********
[/autoit] [autoit][/autoit] [autoit]if _Singleton($progname,1) = 0 Then
Msgbox(0,"Warnung",$progname&@crlf&" wird bereits ausgeführt!")
Exit
EndIf
;*********GUI***************
$GUI = GUICreate($progname, 635, 515, ((@DesktopWidth - 635) / 2), ((@DesktopHeight - 515) / 2) - 50)
GUISetIcon($defaulticon);'icon_g_suche.ico')
GUISetOnEvent($GUI_EVENT_CLOSE, "_GUIClose")
GUISetOnEvent($GUI_EVENT_MINIMIZE, "_GUIMinimize")
$StatusBar = _GUICtrlStatusBar_Create($GUI, $aStatusbar_Parts, $aStatusbar_Text)
;_GUICtrlStatusBar_SetMinHeight($StatusBar, 17)
;********Suchwörter Inputfeld*********
$Group1 = GUICtrlCreateGroup("Suchen nach ", 8, 8, 617, 49)
$Input = GUICtrlCreateInput("", 16, 24, 601, 21); ,bitor($ES_AUTOvSCROLL,$ES_WANTRETURN))
;GUICtrlSetOnEvent($Input, "Button1Click") ;wenn enter gedrückt, dann Suche beginnen
;********Suche eingrenzen, Liste erstellen**********
$Group2 = GUICtrlCreateGroup("Suche eingrenzen auf ", 8, 64, 617, 201)
$Liste = GUICtrlCreateListView("Vorlage|Erweiterte Google-Parameter", 16, 130, 601, 125, $iExWindowStyle, $iExListViewStyle)
_GUICtrlListView_SetExtendedListViewStyle($Liste, $iExListViewStyle)
_GUICtrlListView_SetColumnWidth($Liste, 0, 200)
_GUICtrlListView_SetColumnWidth($Liste, 1, 380)
$Input_URL = GUICtrlCreateInput("", 17, 96, 378, 21)
$Input_EXT = GUICtrlCreateInput("", 411, 96, 43, 21)
$Label1 = GUICtrlCreateLabel("URL:", 18, 79, 31, 17)
$Label2 = GUICtrlCreateLabel("Dateiendung:", 412, 75, 68, 17)
$Label3 = GUICtrlCreateLabel("Googlesuche in", 498, 75, 78, 17)
$Combo = GUICtrlCreateCombo("Web", 498, 96, 116, 25)
GUICtrlSetData(-1, "Bilder|Buchsuche|Maps|News|Video")
;********Listview-Kontextmenü*******
$context = GUICtrlCreateContextMenu($Liste)
$item1 = GUICtrlCreateMenuItem("Neue Vorlage", $context)
$item2 = GUICtrlCreateMenuItem("Markierte Vorlage(n) löschen", $context)
;$item3 = GUICtrlCreateMenuItem("Eingabeparameter in aktuelle Vorlage übertragen", $context)
;GUICtrlSetOnEvent($item3, "_Bearbeiten")
GUICtrlSetOnEvent($item1, "_Neu")
GUICtrlSetOnEvent($item2, "_Delete")
GUICtrlSetOnEvent($Liste, "List1Click")
;***************Erweiterte Parameter**********
$Group4 = GUICtrlCreateGroup(" Erweiterte Suche mit folgenden Parametern ", 8, 272, 617, 153)
$Radio1 = GUICtrlCreateRadio("Webseiten finden, welche die Suchwörter im Titel haben allintitle:Wort", 16, 288, 377, 33)
$Radio2 = GUICtrlCreateRadio("Webseiten finden, welche das erste Suchwort im Titel und das weitere Suchwort in der Seite haben intitle:Wort1 Wort2", 16, 312, 585, 33)
$Radio3 = GUICtrlCreateRadio("URL´s finden, welche die Suchwörter enthalten allinurl:Wort1 Wort2 ", 16, 336, 561, 33)
$Radio4 = GUICtrlCreateRadio("URL´s finden, welche das erste Suchwort in der URL und das weitere Suchwort in der Seite haben inurl:Wort1 Wort2", 16, 360, 585, 33)
$Radio5 = GUICtrlCreateRadio("Seite finden mit den Suchwörtern nur im Text und nicht als Link intext:Wort1 Wort2", 17, 392, 591, 25)
GUICtrlSetOnEvent($Radio1, "Radio1Click")
GUICtrlSetState($Radio1, $GUI_CHECKED)
GUICtrlSetOnEvent($Radio2, "Radio2Click")
GUICtrlSetOnEvent($Radio3, "Radio3Click")
GUICtrlSetOnEvent($Radio4, "Radio4Click")
GUICtrlSetOnEvent($Radio5, "Radio5Click")
;***************Buttons******************
$Group3 = GUICtrlCreateGroup(" Aktion ", 8, 432, 617, 57)
$Button1 = GUICtrlCreateButton("Suche starten", 16, 448, 169, 33, $BS_DEFPUSHBUTTON)
$Button2 = GUICtrlCreateButton("Erweiterte Suche", 232, 448, 169, 33, 0)
$Button3 = GUICtrlCreateButton("Ende", 448, 448, 169, 33, 0)
GUICtrlSetOnEvent($Button1, "Button1Click")
GUICtrlSetOnEvent($Button2, "Button2Click")
GUICtrlSetOnEvent($Button3, "Button3Click")
_inilesen() ;inidatei auslesen und werte in die listview eintragen
[/autoit] [autoit][/autoit] [autoit]GUIRegisterMsg($WM_NOTIFY, "WM_Notify_Events") ;Funktion der WindowsMessage zuweisen
GUIRegisterMsg($WM_COMMAND, "WM_COMMAND") ;Funktion den WindowsMessages zuweisen
GUISetState(@SW_SHOW)
While 1 ;hauptschleife, macht nichts, ausser die infotexte in die statusbar zu schreiben
Sleep(50)
_Mouseover()
WEnd
Func Button1Click() ;Browser aufrufen mit der Suchanfrage
If _isinput() Then ;wenn das inputfeld nicht leer ist.....
Local $checkflag = 0, $suchstring = ""
For $iIndex = 0 To _GUICtrlListView_GetItemCount($Liste) ;nacheinander die listenitems aufrufen
Local $googlestring = ""
If _GUICtrlListView_GetItemChecked($Liste, $iIndex) Then ;wenn ein listeneintrag angehakt oder markiert ist
Local $checkflag = 1 ;merken, dass ein eintrag angehakt ist
Local $row = _GUICtrlListView_GetItem($Liste, $iIndex, 1) ;listenzeile spalte 1 in array schreiben
$googlestring = StringLeft($row[3], StringInStr($row[3], " ")) ;ggf site: und filetype:
$combostring = StringRight($row[3], StringLen($row[3]) - StringInStr($row[3], " ", 0, -1)) ;wo soll google suchen?
_stringselect() ;fenstertitel und googleseite holen
Local $suchstring = GUICtrlRead($Input) & " " & $googlestring
_Browsercall($suchstring, $suchmaschine, $browserfenster)
EndIf
Next
If $checkflag = 0 Or GUICtrlRead($Input_URL) <> "" Or GUICtrlRead($Input_EXT) <> "" Then ;keine zeile in der liste ausgewählt, dann im web suchen
$combostring = GUICtrlRead($Combo)
If GUICtrlRead($Input_URL) <> "" Then $suchstring = "site:" & GUICtrlRead($Input_URL)
; msgbox(0,GUICtrlRead($Input_URL),$suchstring)
If GUICtrlRead($Input_EXT) <> "" Then $suchstring &= " filetype:" & GUICtrlRead($Input_EXT)
; msgbox(0,GUICtrlRead($Input_URL),$suchstring)
_stringselect()
Local $sstring = GUICtrlRead($Input) & " " & $suchstring
;msgbox(0,$suchmaschine,$sstring)
_Browsercall($sstring, $suchmaschine, $browserfenster) ;browser aufrufen
EndIf
EndIf
EndFunc ;==>Button1Click
Func _stringselect()
Select
Case $combostring = "Web"
$suchmaschine = "http://www.google.de/"
$browserfenster = "Google - " & $Browsername ;name des Browserfensters
Case $combostring = "Bilder"
$suchmaschine = "http://images.google.de/"
$browserfenster = "Google Bilder - " & $Browsername
Case $combostring = "Buchsuche"
$suchmaschine = "http://www.google.de/books?hl=de"
$browserfenster = "Google Bücher - " & $Browsername
Case $combostring = "Video"
$suchmaschine = "http://video.google.de/?hl=de"
$browserfenster = "Google Video - " & $Browsername
Case $combostring = "News"
$suchmaschine = "http://news.google.de/nwshp?hl=de"
$browserfenster = "Google News - " & $Browsername
Case $combostring = "Maps"
$suchmaschine = "http://maps.google.de/maps?hl=de&tab=wl"
$browserfenster = "Google Maps - " & $Browsername
EndSelect
EndFunc ;==>_stringselect
Func suchstring_aufbereiten()
EndFunc ;==>suchstring_aufbereiten
Func Button2Click()
If _isinput() Then _Browsercall($RadioString & GUICtrlRead($Input), "http://www.google.de/", "")
EndFunc ;==>Button2Click
Func _GUIMinimize()
Opt('TrayIconHide', 0) ; Tray-Menü anzeigen
TraySetIcon($defaulticon) ; Icon für Tray-Menü setzen
GUISetState(@SW_HIDE, $GUI) ; Fenster verstecken
While 2 ; Tray-Menü-Schleife
Switch TrayGetMsg() ; Anhand des eingetretenen Tray-Ereignisses die entsprechenden Befehle ausführen
Case $TRAY_EVENT_PRIMARYDOWN; wurde 'Anzeigen' aufgerufen, dann...
Opt('TrayIconHide', 1) ; Tray-Menü wieder verstecken
GUISetState(@SW_SHOW, $GUI) ; Fenster anzeigen
GUISetState(@SW_RESTORE, $GUI) ; und wiederherstellen (minimieren rückgängig machen)
ExitLoop ; Tray-Menü-Schleife verlassen
;~ Case $TrayExit ; Benutzer hat 'Beenden' ausgewählt
;~ Exit ; Programm beenden
EndSwitch
WEnd
EndFunc ;==>_GUIMinimize
Func Button3Click()
_GUIClose()
EndFunc ;==>Button3Click
Func _GUIClose()
_inischreiben()
_GUICtrlListView_UnRegisterSortCallBack($Liste)
Exit
EndFunc ;==>_GUIClose
Func List1Click()
_GUICtrlListView_SortItems(GUICtrlGetHandle($Liste), GUICtrlGetState($Liste))
EndFunc ;==>List1Click
Func Radio1Click()
$RadioString = "allintitle:"
EndFunc ;==>Radio1Click
Func Radio2Click()
$RadioString = "intitle:"
EndFunc ;==>Radio2Click
Func Radio3Click()
$RadioString = "allinurl:"
EndFunc ;==>Radio3Click
Func Radio4Click()
$RadioString = "inurl:"
EndFunc ;==>Radio4Click
Func Radio5Click()
$RadioString = "intext:"
EndFunc ;==>Radio5Click
Func _neu() ;neuen listeneintrag erstellen, ggf favicon holen
Local $vorlagename = InputBox("Vorlage", "Bitte geben Sie einen Namen für die Vorlage ein. Wenn Sie nach einer Minute keinen Namen eingegeben haben, dann wird diese Eingabebox geschlossen!", "", " M20", -1, -1, -1, -1, 40, GUICtrlGetHandle($GUI))
If @error = 1 Or $vorlagename = "" Then Return
Local $iconindex = 0
_GUICtrlListView_BeginUpdate($Liste) ;liste sperren
$Faviconfile = _getfavicon((GUICtrlRead($Input_URL))) ;favicon der website holen
If FileExists($Faviconfile) Then
$iconindex = _GUIImageList_GetImageCount($hImage)
_GUIImageList_AddIcon($hImage, $Faviconfile)
EndIf
$index = _GUICtrlListView_AddItem($Liste, $vorlagename, $iconindex, _GUICtrlListView_GetItemCount($Liste) + 9999)
Local $Site = "", $Ext = ""
If GUICtrlRead($Input_URL) <> "" Then $Site = StringStripWS("site:" & GUICtrlRead($Input_URL),
If GUICtrlRead($Input_EXT) <> "" Then $Ext = " " & StringStripWS("filetype:" & GUICtrlRead($Input_EXT),
_GUICtrlListView_AddSubItem($Liste, $index, $Site & " " & $Ext & " " & GUICtrlRead($Combo), 1)
_GUICtrlListView_EndUpdate($Liste) ;liste freigeben
EndFunc ;==>_neu
Func _bearbeiten()
_GUICtrlListView_BeginUpdate($Liste)
_GUICtrlListView_EndUpdate($Liste)
EndFunc ;==>_bearbeiten
Func _delete() ;zeilen in der liste löschen
If MsgBox(262144 + 32 + 4, "", "Markierte bzw. angehakte Zeilen löschen? ") = 6 Then
_GUICtrlListView_DeleteItemsSelected(GUICtrlGetHandle($Liste))
EndIf
EndFunc ;==>_delete
Func _Browsercall($sstring, $suchmaschine, $Winname) ;Browser aufrufen und google aktivieren
_GUICtrlStatusBar_SetText($StatusBar, ' Browser wird gestartet, bitte warten Sie....', 1, 0)
ShellExecute($suchmaschine) ;standardbrowser wird aufgerufen
[/autoit] [autoit][/autoit] [autoit]If Not ProcessExists($Browserprocess) Then ;Browser zzt nicht aktiv
Local $Browser = $DefaultBrowser
If $Browser <> "" And @error = 0 Then ;Browser existiert in der registry
Local $run = Run($Browser) ;Browser starten
If $run <> 0 Then ;wenn es keine Probleme beim Start gibt
Local $timer = TimerInit()
Do
If TimerDiff($timer) > 10000 Then ;wenn nach 10 sekunden kein Browser aktiv ist, dann ende
MsgBox(262144, "Fehler!", "Entweder ist " & $Browsername & " nicht auf Ihrem System installiert, oder " & $Browsername & " kann nicht automatisch gestartet werden!" & @CRLF & "Dieses Programm wird beendet!")
_GUIClose()
EndIf
Until ProcessExists($Browserprocess) ;solange, bis browser läuft, oder 10 sekunden vorbei sind
Else
MsgBox(262144, "Fehler!", "Entweder ist " & $Browsername & " nicht auf Ihrem System installiert, oder " & $Browsername & " kann nicht automatisch gestartet werden!" & @CRLF & "Dieses Programm wird beendet!")
_GUIClose()
EndIf
Else ;opera ist nicht auf dem system installiert
MsgBox(262144, "Fehler!", "Das Programm hat keinen " & $Browsername & "-Eintrag in der Registry gefunden!" & @CRLF & "Entweder ist Opera nicht auf Ihrem System installiert, oder " & $Browsername & " kann nicht automatisch gestartet werden!" & @CRLF & "Dieses Programm wird beendet!")
_GUIClose()
EndIf
EndIf
If $Winname = "" Then $Winname = "Google - " & $Browsername ;Parameter für die erweiterte suche
WinActivate($Winname) ;warten bis browserfenster aktiv
If Not WinWaitActive($Winname, "", 10) Then ;wenn nach 10 sekunden das Fenster nicht aktiv ist, dann
_browserwin_notactive_msg() ;Info, später nochmal versuchen, ggf schreibt opera wieder mal fleissig dateien
Else ;alle Fenster zur Eingabe bereit.....
WinWaitActive($Winname, "", 5) ;warten
ClipPut($sstring) ;suchstring in die zwischenablage
Send("^v{ENTER}") ;und ab damit an google
EndIf
EndFunc ;==>_Browsercall
Func _browserwin_notactive_msg()
MsgBox(262144, "Information!", $Browsername & " ist aktiv aber beschäftigt! Daher sind die " & $Browsername & "-Fenster nicht aktivierbar." & @CRLF & "Bitte warten sie, bis " & $Browsername & " die Aktion beendet hat und versuchen sie es erneut!")
EndFunc ;==>_browserwin_notactive_msg
Func _isinput()
If GUICtrlRead($Input) = "" Then
MsgBox(262144 + 64, "Information", "Bitte geben Sie im obersten Eingabefeld ihre Suchbegriffe ein!")
Return 0
EndIf
Return 1
EndFunc ;==>_isinput
Func _getfavicon($url) ;holt das favicon von der angegebenen website
[/autoit] [autoit][/autoit] [autoit]_GUICtrlStatusBar_SetText($StatusBar, ' Favicon der Website downloaden.....bitte warten', 1, 0)
_GUICtrlListView_BeginUpdate($Liste) ;liste sperren
If _isurl($url) Then ;wenn die url "regulär" ist, dann suche dort nach einem favicon
If FileExists("favicon_" & _domain_from_url($url) & ".ico") Then Return "favicon_" & _domain_from_url($url) & ".ico" ;wenn es bereits ein favicon gibt, dann braucht man keins zu laden
$protokoll = StringRegExp($url, "^(?:(?:ht|f)tp(?:s?)\:\/\/|~/|/)", 3) ;ist protokoll http o.ä. in der url?
If @error <> 0 Then local $protokoll[1] = ["http://"] ; $url="http://"&$url ;website mit "http://" vornedran versuchen
Local $domain = _extracturl($url) ;erster teil protokoll+domain z.b. http://www.testtest.de
Local $iconfile = $protokoll[0] & $domain & "/favicon.ico" ;damit wird im rootdirectory der HP nach dem iconfile gesucht
Local $pagetext = _INetGetSource(_domain_from_url($url)) ;quellcode laden, darin befindet sich ggf ein Hinweis auf das favicon
;filewrite("test2.html",$pagetext)
If @error = 1 Then ;fehler beim lesen des quellcodes der site
$a = MsgBox(262144, "Fehler!", "Die angegebene Website " & _domain_from_url($url) & " ist zur Zeit nicht erreichbar!" & @CRLF & "Bitte erlauben sie diesem Programm auch den Zugriff auf das Internet durch Ihre Firewall.")
Else ;kein fehler beim laden des quellcodes, also durchsuchen nach hinweisen auf das favicon
Local $u = StringInStr($pagetext, "shortcut icon") ;den text suchen
If $u <> 0 Then ;icon-text gefunden, site nach url vom favicon scannen
$z1 = StringInStr($pagetext, @LF, 0, 1, $u) ;nächstes lf finden ACHTUNG inetget macht aus CRLF ein LF
$z2 = StringInStr($pagetext, @LF, 0, -1, $u) ;vorheriges lf finden, dazwischen steht die zeile mit dem icon
Local $zeile = StringMid($pagetext, $z2, $z1 - $z2) ;zeile im text, welche auf ein icon hinweist
$u = StringInStr($zeile, "href") ; nächsten ref suchen
$u1 = StringInStr($zeile, '"', 0, 1, $u) ;erstes anführungszeichen
$u2 = StringInStr($zeile, '"', 0, 1, $u1 + 1) ;zweites anführungszeichen, dazwischen steht der pfad
$ico=StringMid($zeile, $u1 + 1, $u2 - $u1 - 1)
$ico_ext=stringtrimleft($ico,stringinstr($ico,".",default,-1)-1)
$ico=stringreplace(Stringtrimright($ico,stringlen($ico_ext)),".","") &$ico_ext
$iconpfad = $protokoll[0] &_domain_from_url($url) & "/" &$ico
[/autoit] [autoit][/autoit] [autoit]If InetGet($iconpfad, @ScriptDir & "/favicon_" & _domain_from_url($url) & ".ico") Then ;icon holen und in datei schreiben
_GUICtrlStatusBar_SetText($StatusBar, ' Favicon heruntergeladen!', 1, 0)
_GUICtrlListView_EndUpdate($Liste) ;liste zum bearbeiten freigeben
Return @ScriptDir & "/favicon_" & _domain_from_url($url) & ".ico" ;icon zurückgeben
EndIf
Else ;kein icontext gefunden
If InetGet($iconfile, @ScriptDir & "/favicon_" & _domain_from_url($url) & ".ico") Then ;icon im rootdirectory suchen
_GUICtrlStatusBar_SetText($StatusBar, ' Favicon heruntergeladen!', 1, 0)
_GUICtrlListView_EndUpdate($Liste)
Return @ScriptDir & "/favicon_" & _domain_from_url($url) & ".ico"
EndIf
EndIf
EndIf
EndIf
if _GUIImageList_GetImageCount($hImage)=0 then;noch kein icon im index
_GUIImageList_AddIcon($hImage,"shell32.dll",130) ;erstes favicon ist das windows-dateizeichen
_GUICtrlListView_SetImageList($Liste, $hImage, 1) ;imageliste faktualisieren
endif
_GUICtrlListView_EndUpdate($Liste)
_GUICtrlStatusBar_SetText($StatusBar, ' Kein Favicon heruntergeladen!', 1, 0)
Return 0
EndFunc ;==>_getfavicon
Func _inilesen()
If FileExists($inifile) Then
Local $aSections = IniReadSectionNames($inifile) ;ini lesen
; _arraydisplay($asections)
If @error Then
MsgBox(262144 + 64, "Information", "Die Datei " & $inifile & " ist beschädigt und wird gelöscht!")
FileDelete($inifile)
Else
Local $anz_icons = 0 ;anzahl favicons
_GUICtrlListView_BeginUpdate($Liste)
if fileexists($defaulticon) then ;defaulticon existiert
_GUIImageList_AddIcon($hImage, @ScriptDir & "\" & $defaulticon) ;Erstes favicon in der imageliste ist das G-icon
else ;defaulticon existiert nicht
_GUIImageList_AddIcon($hImage,"shell32.dll",130) ;erstes favicon ist das windows-dateizeichen
endif
For $iIndex = 0 To $aSections[0] - 1 ;alle sektionen nacheinander durchsuchen
Local $a = IniReadSection($inifile, String($iIndex)) ;
If FileExists($a[3][1]) Then ;ein favicon existiert als datei
$anz_icons += 1 ;zähler in der liste erhöhen
_GUIImageList_AddIcon($hImage, @ScriptDir & "/" & $a[3][1]) ;Icon in die imageliste schreiben
_GUICtrlListView_AddItem($Liste, $a[1][1], $anz_icons, _GUICtrlListView_GetItemCount($Liste) + 9999) ;Listeneintrag und Favicon schreiben
Else ;kein favicon als datei gefunden
_GUICtrlListView_AddItem($Liste, $a[1][1], 0, _GUICtrlListView_GetItemCount($Liste) + 9999) ;listeneintrag mit G-icon schreiben
EndIf
_GUICtrlListView_AddSubItem($Liste, $iIndex, $a[2][1], 1) ;Spalte mit den parametern schreiben
Next
_GUICtrlListView_SetImageList($Liste, $hImage, 1) ;imageliste fertig
_GUICtrlListView_EndUpdate($Liste) ;liste zum bearbeiten freigeben
_GUICtrlListView_RegisterSortCallBack($Liste, True, True) ;sortierfunktion einschalten
EndIf
EndIf
EndFunc ;==>_inilesen
Func _inischreiben() ;inidatei schreiben
_GUICtrlListView_BeginUpdate($Liste)
FileDelete($inifile)
For $iIndex = 0 To _GUICtrlListView_GetItemCount($Liste) - 1 ;alle zeilen der liste abarbeiten
Local $row = _GUICtrlListView_GetItem($Liste, $iIndex, 0)
$vorlage = $row[3] ;vorlagenname
$row = _GUICtrlListView_GetItem($Liste, $iIndex, 1)
$sstring = $row[3] ;string des listensubitems, die Suchparameter
$iconfile = ""
If StringInStr($sstring, "site:") <> 0 Then ;site im string
$sString2 = StringTrimLeft($sstring, 5) ;erste 5 zeichen kappen
$url = StringLeft($sString2, StringInStr($sString2, " ") - 1) ;alles bis zum ersten leerzeichen ist die url
if fileexists("favicon_" & _domain_from_url($url) & ".ico") then $iconfile = "favicon_" & _domain_from_url($url) & ".ico" ;nur wenn es ein favicon gibt, dann voller dateiname des favicons
;msgbox(0,0,"favicon url :"&$iconfile)
EndIf
IniWriteSection($inifile, $iIndex, "Vorlage=" & $vorlage & @LF & "Suchstring=" & $sstring & @LF & "Iconfile=" & $iconfile)
Next
_GUICtrlListView_EndUpdate($Liste)
EndFunc ;==>_inischreiben
Func _extracturl($sURL) ;ersten teil der url holen, um das icon auf der page zu finden
Local $a = StringRegExp($sURL, '^(?#Protocol)(?:(?:ht|f)tp(?:s?)\:\/\/|~/|/)?(?#Username:Password)(?:\w+:\w+@)?(?#Subdomains)(?:(?:[-\w]+\.)+(?#TopLevel Domains)(?:com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|museum|travel|[a-z]{2}))', 3)
If @error = 0 Then Return $a[0]
MsgBox(0, 0, $sURL & " ist keine url")
EndFunc ;==>_extracturl
Func _isurl($sURL) ;test ob string im url-Format vorliegt, regex hier gefunden: http://geekswithblogs.net/casualjim/arch…2/01/61722.aspx
$a = StringRegExp($sURL, "^(?#Protocol)(?:(?:ht|f)tp(?:s?)\:\/\/|~/|/)?(?#Username:Password)(?:\w+:\w+@)?(?#Subdomains)(?:(?:[-\w]+\.)+(?#TopLevel Domains)(?:com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|museum|travel|[a-z]{2}))(?#Port)(?::[\d]{1,5})?(?#Directories)(?:(?:(?:/(?:[-\w~!$+|.,=]|%[a-f\d]{2})+)+|/)+|\?|#)?(?#Query)(?:(?:\?(?:[-\w~!$+|.,*:]|%[a-f\d{2}])+=(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)(?:&(?:[-\w~!$+|.,*:]|%[a-f\d{2}])+=(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)*)*(?#Anchor)(?:#(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)?$", 3)
If @error = 0 Then Return 1 ;url ist im korrekten Format
If $sURL <> "" Then MsgBox(262144 + 64, "Information", "Ihre angegebene URL: " & @CRLF & $sURL & @CRLF & "entspricht nicht dem URL-Format!" & @CRLF & "Bitte ändern sie die URL!")
Return 0
EndFunc ;==>_isurl
Func _domain_from_url($url) ;gibt ein http://www.xxxx.de von http://www.xxxx.de/test/test2 zurück
Local $t = StringRegExp(_extracturl($url), "(?:\w+:\w+@)?(?#Subdomains)(?:(?:[-\w]+\.)+(?#TopLevel Domains)(?:com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|museum|travel|[a-z]{2}))", 3)
Return $t[0]
EndFunc ;==>_domain_from_url
Func ListView_HOTTRACK($iSubItem)
Local $HotItem = _GUICtrlListView_GetHotItem($Liste)
; If $HotItem <> -1 Then _GUICtrlStatusBar_SetText($Statusbar, "Hot Item: " & $HotItem & " SubItem: " & $iSubItem)
EndFunc ;==>ListView_HOTTRACK
Func WM_NOTIFY_EVENTS($hWnd, $iMsg, $iwParam, $ilParam)
#forceref $hWnd, $iMsg, $iwParam
Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView, $tInfo
$hWndListView = $Liste
If Not IsHWnd($Liste) Then $hWndListView = GUICtrlGetHandle($Liste)
$tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
$hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
$iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
$iCode = DllStructGetData($tNMHDR, "Code")
Switch $hWndFrom
[/autoit] [autoit][/autoit] [autoit]Case $hWndListView
Switch $iCode
Case $LVN_HOTTRACK ; Sent by a list-view control when the user moves the mouse over an item
$tInfo = DllStructCreate($tagNMLISTVIEW, $ilParam)
ListView_HOTTRACK(DllStructGetData($tInfo, "SubItem"))
Return 0 ; allow the list view to perform its normal track select processing.
;Return 1 ; the item will not be selected.
Case $NM_CLICK ; Sent by a list-view control when the user clicks an item with the left mouse button
$tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
Case $NM_DBLCLK ; Sent by a list-view control when the user double-clicks an item with the left mouse button
$tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
_listview_doubleclick(DllStructGetData($tInfo, "Index"))
Case $NM_RDBLCLK ; Sent by a list-view control when the user double-clicks an item with the right mouse button
$tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_NOTIFY_EVENTS
Func WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
Local $IdFrom, $iCode, $iGetInput, $iRegExp
$IdFrom = BitAND($wParam, 0x0000FFFF) ;loword
$iCode = BitShift($wParam, 16) ;hiword
;consolewrite("Command Event "&$en_update&" "&$input&" "&$idfrom&" "&$icode&@crlf)
Switch $IdFrom
Case $Input
If $iCode = $EN_UPDATE Then
$iGetInput = GUICtrlRead($Input)
If StringInStr($iGetInput, @CRLF) Then
MsgBox(0, StringLen($iGetInput), "enter", 1)
EndIf
EndIf
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_COMMAND
Func _listview_doubleclick($index) ;listview doppelgeklickt, die Inputfelder werden gefüllt
Local $row = _GUICtrlListView_GetItem($Liste, $index, 1) ;alle daten aus der listviewzeile in ein array
Local $zeile = $row[3] ;der Zeileninhalt als string
If $zeile <> "" Then
GUICtrlSetData($Combo, StringRight($zeile, StringLen($zeile) - StringInStr($zeile, " ", 0, -1)))
EndIf
If StringInStr($zeile, "site:") <> 0 Then ;wenn site: in der zeile, dann
Local $url = StringTrimLeft($zeile, 5)
$url = StringLeft($url, StringInStr($url, " ") - 1)
GUICtrlSetData($Input_URL, $url)
Else
GUICtrlSetData($Input_URL, "")
EndIf
If StringInStr($zeile, "filetype:") <> 0 Then
Local $x = StringInStr($zeile, "filetype:")
$ft = StringTrimLeft($zeile, $x +
$ft = StringLeft($ft, StringInStr($ft, " ") - 1)
GUICtrlSetData($Input_EXT, $ft)
Else
GUICtrlSetData($Input_EXT, "")
EndIf
EndFunc ;==>_listview_doubleclick
Func _Mouseover() ;Mausposition abfragen und Infos in die Statuszeile schreiben
If WinActive($progname) Then
Local $a = GUIGetCursorInfo($GUI)
;_GUICtrlStatusBar_SetText($StatusBar, $a[4] & " " & $a[1], 0, 0)
If Abs($a[0] - $mausaltx) > 10 Or Abs($a[1] - $mausalty) > 10 Then ;statusbar nur beschreiben, wenn Mauscursor sich bewegt hat
$mausaltx = $a[0]
$mausalty = $a[1]
Switch $a[4]
Case $Button1
_GUICtrlStatusBar_SetText($StatusBar, ' Browser mit den in den Eingabefeldern gemachten Angaben aufrufen! Angehakte Seiten in der Liste abarbeiten.', 1, 0)
Case $Button2
_GUICtrlStatusBar_SetText($StatusBar, ' Browser mit der erweiterten Suche aufrufen', 1, 0)
Case $Button3
_GUICtrlStatusBar_SetText($StatusBar, ' Beendet das Programm', 1, 0)
Case $Liste
_GUICtrlStatusBar_SetText($StatusBar, ' Doppelklick auf Zeile: Daten in Felder übertragen Rechtsklick: Auswahlmenü Haken: Suche im Browser', 1, 0)
Case $Input, $Group1
_GUICtrlStatusBar_SetText($StatusBar, ' Suchbegriffe eingeben', 1, 0)
Case $Input_URL, $Label1
_GUICtrlStatusBar_SetText($StatusBar, ' Webadresse eingeben, es wird erst ab dem angegebenen Unterverzeichnis gesucht', 1, 0)
Case $Input_EXT, $Label2
_GUICtrlStatusBar_SetText($StatusBar, ' Dateierweiterung eingeben z.B. JPG, HTML, TXT es wird nur nach diesen Dateien gesucht', 1, 0)
Case $Combo, $Label3
_GUICtrlStatusBar_SetText($StatusBar, ' Angeben, in welchen speziellen Bereichen auf Google gesucht werden soll', 1, 0)
Case $Group4, $Radio1, $Radio2, $Radio3, $Radio4, $Radio5
_GUICtrlStatusBar_SetText($StatusBar, ' Auswahl treffen, dann den Button "Erweiterte Suche" anwählen', 1, 0)
Case Else
_GUICtrlStatusBar_SetText($StatusBar, '', 1, 0)
EndSwitch
EndIf
EndIf
EndFunc ;==>_Mouseover
Func FindPathToDefaultBrowser() ;findet den vollen Pfad zum Standardbrowser
Local $RegLocation = RegRead("HKEY_CLASSES_ROOT\" & ".html", "")
Local $RegLoc = RegRead("HKEY_CLASSES_ROOT\" & $RegLocation & "\Shell\Open\command", "")
$RegLoc = StringMid($RegLoc, 2, StringInStr($RegLoc, '"', 0, 2) - 2)
If $RegLoc = "" Then
MsgBox(262144, "Fehler!", "Der Pfad zum in Windows installierten Standardbrowser konnte nicht ermittelt werden!" & @CRLF & "Bitte installieren sie einen Browser oder teilen Sie dem System den Standardbrowser mit." & @CRLF & "Das Programm wird beendet!")
_GUIClose()
Else
Return SetError(@error, 0, $RegLoc)
EndIf
EndFunc ;==>FindPathToDefaultBrowser
Func _GetBrowserInfo() ;holt sich aus der registry den standardbrowser und setzt die Fensternamen
Local $cPath, $cFDrive, $cFDir, $cFName, $cFExt
$DefaultBrowser = FindPathToDefaultBrowser()
Local $a = _PathSplit($DefaultBrowser, $cFDrive, $cFDir, $cFName, $cFExt)
;_arraydisplay($a)
$browser_exe = $a[3] & $a[4]
$Browser = $a[3]
Switch $Browser
Case "OPERA"
$Browsername = "Opera"
$Browserprocess = "Opera.exe"
$browsernewwindow = "Schnellwahl - " & $Browsername
Case "IEXPLORER"
$Browsername = "Windows Internet Explorer"
$Browserprocess = "iexplore.exe"
$browsernewwindow = "Neue Registerkarte - " & $Browsername
Case "Firefox"
$Browsername = "Mozilla Firefox"
$Browserprocess = "firefox.exe"
$browsernewwindow = $Browsername
Case "IRON"
$Browsername = "Iron"
$Browserprocess = "iron.exe"
$browsernewwindow = "Neuer Tab - " & $Browsername
Case Else
$Browsername = "Windows Internet Explorer"
$Browserprocess = "iexplore.exe"
EndSwitch
EndFunc ;==>_GetBrowserInfo
func _scriptversion()
if stringright(@scriptname,4)=".exe" Then ;ist exe-datei
return fileGetVersion(@ScriptName)
Else
local $file=fileopen(@scriptname,0)
while 1
local $scource=filereadline($file)
If @error = -1 then
fileclose($file)
return "N/A"
else
if stringinstr($scource,"#AutoIt3Wrapper_Res_Fileversion") Then
return StringStripWS(stringright($scource,stringlen($scource)-stringinstr($scource,"=")),8)
endif
endif
wend
endif
endfunc