1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Andy

Beiträge von Andy

  • aus eins mach zwei

    • Andy
    • 22. Juli 2009 um 10:45

    Hi,
    bei A-B-B-A - Dancing-Queen.mp3 wirds mit stringsplit aber bitter^^
    Das Problem wurde durch Einführung der ID3-tagsversucht in den Griff zu bekommen...
    ciao
    Andy

  • Sudoku Rechner

    • Andy
    • 22. Juli 2009 um 10:38

    Hi,

    Zitat

    auf jedenfall hab ichs geschafft ein fehlerfreies sudoku löse programm zu erstellen, hätte nicht gedacht dass es so einfach ist.


    Aha...dann erstarre ich vor Erfurcht und werde mich deshalb nicht erdreisten, dem Meister aller Klassen auch nur noch in irgendeinem anderen Post hier im Forum antworten zu dürfen....

    Zitat

    und mir ists eigentlich egal ob irgend wo erklärt is wie ans machen soll, ich machs so wies mir passt, und entwickle meine eigenen methoden.


    Solange dabei weiterhin solch hochqualifizierte Aussagen und Leistungen bei herauskommen, nur weiter so, denn dann bleibst du der produktiven Arbeitswelt verschont und viele lange Jahre ein

    Zitat

    Schulstubenhocker


    ciao
    Andy

  • Lösung gesucht: wie sämtliche Dateitypen starten?

    • Andy
    • 22. Juli 2009 um 10:17

    Hi,
    also ich habe in mehreren meiner Scripte keine Probleme mit Shellexecute()
    Präzisiere mal:

    Zitat

    funktioniert auch nicht überall:


    Teste folgendes mit verschiedenen "problematischen" Dateiendungen

    Spoiler anzeigen
    [autoit]

    #include <File.au3>

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $ext = InputBox("Leere Eingabe=ENDE", "Dateiendung eingeben:")
    If $ext = "" Then Exit
    FileOpen("test." & $ext, 2)
    $Exec = FindExecutable("test." & $ext)
    if $exec=@scriptdir&"\test." & $ext or $exec="" then $exec="keinem Programm"
    MsgBox(0, 0, "Die Dateiendung " & $ext & " ist verknüpft mit:" & @CRLF & "DLL-Call: "&$Exec&@crlf&"Registry: "&findpathtoprog($ext))
    FileDelete("test." & $ext)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func FindExecutable($cFile)
    Local $hDLL = DllOpen("shell32.dll"), $cPath, $cFDrive, $cFDir, $cFName, $cFExt
    _PathSplit($cPath, $cFDrive, $cFDir, $cFName, $cFExt)
    Local $structEXE = DllStructCreate("char[260]")
    Local $avResult = DllCall($hDLL, "int", "FindExecutableA", "str", $cFile, "str", $cPath, "ptr", DllStructGetPtr($structEXE))
    DllClose($hDLL)
    Return SetError(@error, 0, DllStructGetData($structEXE, 1))
    EndFunc ;==>FindExecutable

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func FindPathToProg($ext) ;findet den vollen Pfad zum Standardbrowser
    Local $RegLocation = RegRead("HKEY_CLASSES_ROOT\" & "."&$ext, "")
    Local $RegLoc = RegRead("HKEY_CLASSES_ROOT\" & $RegLocation & "\Shell\Open\command", "")
    $RegLoc = StringMid($RegLoc, 2, StringInStr($RegLoc, '"', 0, 2) - 2)
    Return SetError(@error, 0, $RegLoc)
    EndFunc ;==>FindPathToDefaultBrowser

    [/autoit]


    Ich weiss nicht WIE shellexecute die Verknüpfung bestimmt, aber das o.g. Script (dll-call) findet bei einem Browserwechsel die Verknüpfung zum neuen Standardbrowser nicht, aber shellexecute bzw die Registrysuche schon....

    ciao
    Andy

  • combobox problem

    • Andy
    • 20. Juli 2009 um 19:52

    Hi,

    Zitat

    ne steht nicht

    disqualifiziert dich für jede zukünftige Antwort!

    Denn selbst in der Hilfe hier im Forum findet man
    http://www.autoit.de/dokumentation_…riteSection.htm
    incl Beispiel....

    ciao
    Andy

  • Sudoku Rechner

    • Andy
    • 20. Juli 2009 um 15:33

    Hier gabs das wichtigste dazu....wenn du dort durch bist, weisst du sicher mehr
    ciao
    Andy

  • Sudoku Rechner

    • Andy
    • 19. Juli 2009 um 01:46

    Hallo,
    schau mal in dem von dir schon angesprochenen mü-it-Thread nach den dortigen Solvern, die lösen mit Strategien und wenn das auch nicht mehr hilft, per Bruteforce/Backtrackalgorithmen.
    Dort findest du auch einige "Testroutinen", um deinen Solver mal zu prüfen incl. einiger (>40000) Sudokus^^
    Auch ein Import von Sudokustrings wäre sinnvoll.
    Btw die beste Seite zum Thema ist HIER, ich habe keine Sammlung so gut erklärter Strategien gefunden wie dort .
    ciao
    Andy

  • µit - Juli

    • Andy
    • 17. Juli 2009 um 14:34

    Hallo BugFix,

    Zitat

    Das sollte doch ein Wettbewerb sein.

    Wenn sich 2 Wochen lang niemand meldet und meine Fragen zum Thema immer noch offen stehen, dann gibt es aus meiner Sicht zwei Möglichkeiten:
    1.) Der Wettbewerb ist "eingeschlafen", der Threadersteller hat ggf. schon eine andere "Lösung" seines Problems gefunden und keine Lust mehr weiterzumachen.
    2.) Niemand hält meine Fragen zum Thema für so wichtig, daß sie beantwortet/kommentiert werden müssten.
    In beiden Fällen gibt es für mich bzw mein Script keinerlei Verbesserungspotential, und bevor ich es auch noch "vergesse", stelle ich es lieber online. Ggf kann es ja jemand gebrauchen.
    Sorry falls ich damit den Wettbewerb gestört haben sollte, aber ich glaube auch kaum, dass ich mit meinem Script auch nur eine ansatzweise Chance hätte.
    ciao
    Andy

  • µit - Juli

    • Andy
    • 17. Juli 2009 um 12:59

    hi,
    Ich stell mal mein Script online...
    Auch getestet an großen Textdateien, scheint zu funktionieren^^, die "kurze" Version hatte üble Performance-Probleme bei extrem langen Texten.

    ciao
    Andy

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $sText = "Und Bund rund Undelete und Fundbüro; Und. und! und? und'" & ' und" ' & "Und" & @LF & "Rund" & @CR & "Rund" & @CRLF & "Rund;" & @CRLF & "Aber Aberglaube labern makaber aber"

    [/autoit] [autoit][/autoit] [autoit]

    $t = TimerInit()

    [/autoit] [autoit][/autoit] [autoit]

    _Check(1, _StringinStrCount("test TEST Test TestTest", "Test", False, False, "", False), 3)
    _Check(2, _StringinStrCount("test TEST Test TestTest", "Test", True, False, "", False), 1)
    _Check(3, _StringinStrCount("test TEST Test TestTest", "Test", False, True, "", False), 5)
    _Check(4, _StringinStrCount("test TEST Test TestTest", "Test", True, True, "", False), 3)
    _Check(5, _StringinStrCount("test TEST Test TestTest", "TEST Test", True, True, "", False), 1)
    _Check(6, _StringinStrCount("test TEST Test TestTest", "TEST Test", True, True, " ", False), 4)
    _Check(7, _StringinStrCount("test TEST Test TestTest", "TEST Test", True, False, " ", False), 2)
    _Check(8, _StringinStrCount("test TEST Test TestTest", "TEST Test", False, False, " ", False), 6)
    _Check(9, _StringinStrCount("testXTESTXTestXTestTest", "", False, False, "X", False), 20)
    _Check(10, _StringinStrCount("test TEST Test TestTest", "", False, False, "", False), 23)
    _Check(11, _StringinStrCount("test TEST Test TestTest", "", False, False, "", True), "1;23")
    _Check(12, _StringinStrCount("test TEST Test TestTest", "", False, False, " ", True), "1;20")
    _Check(13, _StringinStrCount("test TEST Test TestTest", "TEST Test", False, False, "", True), "1;1")
    _Check(14, _StringinStrCount("test TEST Test TestTest", "TEST Test", False, False, " ", True), "2;3;3")
    _Check(15, _StringinStrCount("test TEST Test TestTest", "T;EST", False, False, ";", True), "2;0;0")
    _Check(16, _StringinStrCount("test TEST Test TestTest", "T;E,S", False, False, ";,", True), "3;0;0;0")
    _Check(17, _StringinStrCount("Testat, testen, Test, Attest. Ostestland", "Test", False, False, "", False), 1)

    [/autoit] [autoit][/autoit] [autoit]

    _Check(1, _StringinStrCount($sText, "und", False, False, "", False), 8)
    _Check(2, _StringinStrCount($sText, "und", True, False, "", False), 5)
    _Check(3, _StringinStrCount($sText, "und", True, True, "", False), 11)
    _Check(4, _StringinStrCount($sText, "und", False, True, "", False), 15)

    [/autoit] [autoit][/autoit] [autoit]

    _Check(5, _StringinStrCount($sText, "aber", False, False, "", False), 2)
    _Check(6, _StringinStrCount($sText, "aber", True, False, "", False), 1)
    _Check(7, _StringinStrCount($sText, "aber", True, True, "", False), 3)
    _Check(8, _StringinStrCount($sText, "aber", False, True, "", False), 5)

    [/autoit] [autoit][/autoit] [autoit]

    _Check(9, _StringinStrCount($sText, "und;aber", False, False, ";", False), 10)
    _Check(10, _StringinStrCount($sText, "und;aber", True, False, ";", False), 6)
    _Check(11, _StringinStrCount($sText, "und;aber", True, True, ";", False), 14)
    _Check(12, _StringinStrCount($sText, "und;aber", False, True, ";", False), 20)

    [/autoit] [autoit][/autoit] [autoit]

    _Check(13, _StringinStrCount($sText, "und;aber", False, False, ";", True), "2;8;2")
    _Check(14, _StringinStrCount($sText, "und;aber", True, False, ";", True), "2;5;1")
    _Check(15, _StringinStrCount($sText, "und;aber", True, True, ";", True), "2;11;3")
    _Check(16, _StringinStrCount($sText, "und;aber", False, True, ";", True), "2;15;5")

    [/autoit] [autoit][/autoit] [autoit]

    _Check(17, _StringinStrCount($sText, "", False, True, "", False), 119)
    _Check(17, _StringinStrCount($sText, "", False, True, " ", False), 104)
    ConsoleWrite(TimerDiff($t) / 1000 & @CRLF)
    Exit

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _StringinStrCount($string, $SubString, $bSense = False, $bPartial = False, $sdelim = '', $bReturn = False)
    Local $casesense = "(?-i)", $part1 = "", $part2 = "", $treffer = 0 ;würde auch noch in die nächste zeile passen ;)
    Dim $retarray1[2] = [1, StringLen($string)], $retarray[1], $aSplit[1] = [$SubString]
    If $SubString = "" And $sdelim = "" And $bReturn = False Then Return StringLen($string) ; :o)
    If $SubString = "" And $sdelim = "" Then Return $retarray1
    If $SubString = "" And $bReturn = False Then Return UBound(StringRegExp($string, "[^(" & $sdelim & ")]", 3))
    If $SubString = "" Then
    Dim $retarray2[2] = [1, UBound(StringRegExp($string, "[^(" & $sdelim & ")]", 3))]
    Return $retarray2
    EndIf
    If $sdelim <> "" Then Dim $aSplit = StringSplit($SubString, $sdelim, 2) ;wird der Substring mit dem Trennzeichen gesplittet in ein nullbasiertes Array
    If $bSense = False Then $casesense = "(?i)"
    If $bPartial = False Then ;der suchbegriff muss alleinstehend sein
    $part1 = "(?<![\d|\x{041}-\x{0ff}])" ;vornedran dürfen nur zeichen kleiner ascii0x41 sein aber keine zahlen
    $part2 = "(?![\d|\x{041}-\x{0ff}])" ;hintendran dürfen nur leerzeichen sein und satzzeichen oder das textende
    EndIf
    For $i = 0 To UBound($aSplit) - 1 ;Zählschleife für das splitarray von null bis zur anzahl splitstrings
    If $bReturn = False Then $treffer += UBound(StringRegExp($string, $casesense & $part1 & "(" & $aSplit[$i] & ")" & $part2, 3))
    ReDim $retarray[UBound($retarray) + 1]
    $retarray[0] += 1
    $retarray[UBound($retarray) - 1] = UBound(StringRegExp($string, $casesense & $part1 & "(" & $aSplit[$i] & ")" & $part2, 3))
    Next
    If $bReturn = True Then Return $retarray
    Return $treffer
    EndFunc ;==>_StringinStrCount

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _Check($i, $j, $k)
    Local $sj = "", $sk = ""
    ConsoleWrite("Test " & $i & ": ")
    Switch StringInStr($k, ";")
    Case False
    If $j = $k Then
    ConsoleWrite(" Richtig: " & @TAB & $j & @LF)
    Else
    ConsoleWrite(" Falsch: " & @TAB & $j & @TAB & " (richtig wäre: " & $k & ")" & @LF)
    EndIf
    Case Else
    $k = StringSplit($k, ";", 2)
    If Not IsArray($j) Then
    ConsoleWrite(" Falsch: " & @TAB & " Rückgabe ist kein Array" & @LF)
    Return
    EndIf
    If UBound($j) <> UBound($k) Then
    For $l = 0 To UBound($j) - 1
    $sj &= " " & $j[$l]
    Next
    For $l = 0 To UBound($k) - 1
    $sk &= " " & $k[$l]
    Next
    ConsoleWrite(" Falsch: " & @TAB & $sj & @TAB & " (richtig wäre: " & $sk & ")" & @LF)
    Return
    EndIf
    Local $bRichtig = True
    For $l = 0 To UBound($j) - 1
    If $j[$l] <> $k[$l] Then $bRichtig = False
    $sj &= " " & $j[$l]
    $sk &= " " & $k[$l]
    Next
    If $bRichtig Then
    ConsoleWrite(" Richtig: " & @TAB & $sk & @LF)
    Else
    ConsoleWrite(" Falsch: " & @TAB & $sj & @TAB & " (richtig wäre: " & $sk & ")" & @LF)
    EndIf
    EndSwitch
    EndFunc ;==>_Check

    [/autoit]
  • Mit ErGo die Suchtreffer bei Google einschränken

    • Andy
    • 17. Juli 2009 um 11:21

    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
    [autoit]

    #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>

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;*************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

    [/autoit] [autoit][/autoit] [autoit]

    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"

    [/autoit] [autoit][/autoit] [autoit]

    _GetBrowserInfo() ;stellt standardbrowser fest und setzt entsprechend die fensterdaten
    Global $progname = "ErGo Erweiterte Googlesuche mit " & $Browsername

    [/autoit] [autoit][/autoit] [autoit]

    Opt("GUIOnEventMode", 1)
    Opt("TCPTimeout", 500)
    Opt('TrayMenuMode', 1) ; Tray-Standardmenü ausschalten
    Opt('TrayAutoPause', 0) ; AutoPause ausschalten
    ;Opt("WinTitleMatchMode",2)

    [/autoit] [autoit][/autoit] [autoit]

    ;************Instanzen***********

    [/autoit] [autoit][/autoit] [autoit]

    if _Singleton($progname,1) = 0 Then
    Msgbox(0,"Warnung",$progname&@crlf&" wird bereits ausgeführt!")
    Exit
    EndIf

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;*********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)

    [/autoit] [autoit][/autoit] [autoit]

    ;********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

    [/autoit] [autoit][/autoit] [autoit]

    ;********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")

    [/autoit] [autoit][/autoit] [autoit]

    ;********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")

    [/autoit] [autoit][/autoit] [autoit]

    ;***************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")

    [/autoit] [autoit][/autoit] [autoit]

    ;***************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")

    [/autoit] [autoit][/autoit] [autoit]

    _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)

    [/autoit] [autoit][/autoit] [autoit]

    While 1 ;hauptschleife, macht nichts, ausser die infotexte in die statusbar zu schreiben
    Sleep(50)
    _Mouseover()
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    Func suchstring_aufbereiten()
    EndFunc ;==>suchstring_aufbereiten

    [/autoit] [autoit][/autoit] [autoit]

    Func Button2Click()
    If _isinput() Then _Browsercall($RadioString & GUICtrlRead($Input), "http://www.google.de/", "")
    EndFunc ;==>Button2Click

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    Func Button3Click()
    _GUIClose()
    EndFunc ;==>Button3Click

    [/autoit] [autoit][/autoit] [autoit]

    Func _GUIClose()
    _inischreiben()
    _GUICtrlListView_UnRegisterSortCallBack($Liste)
    Exit
    EndFunc ;==>_GUIClose

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    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), 8)
    If GUICtrlRead($Input_EXT) <> "" Then $Ext = " " & StringStripWS("filetype:" & GUICtrlRead($Input_EXT), 8)
    _GUICtrlListView_AddSubItem($Liste, $index, $Site & " " & $Ext & " " & GUICtrlRead($Combo), 1)
    _GUICtrlListView_EndUpdate($Liste) ;liste freigeben
    EndFunc ;==>_neu

    [/autoit] [autoit][/autoit] [autoit]

    Func _bearbeiten()
    _GUICtrlListView_BeginUpdate($Liste)
    _GUICtrlListView_EndUpdate($Liste)
    EndFunc ;==>_bearbeiten

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    Func _Browsercall($sstring, $suchmaschine, $Winname) ;Browser aufrufen und google aktivieren
    _GUICtrlStatusBar_SetText($StatusBar, ' Browser wird gestartet, bitte warten Sie....', 1, 0)

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    $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

    [/autoit] [autoit][/autoit] [autoit]

    $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

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func ListView_HOTTRACK($iSubItem)
    Local $HotItem = _GUICtrlListView_GetHotItem($Liste)
    ; If $HotItem <> -1 Then _GUICtrlStatusBar_SetText($Statusbar, "Hot Item: " & $HotItem & " SubItem: " & $iSubItem)
    EndFunc ;==>ListView_HOTTRACK

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    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")

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    Func WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
    Local $IdFrom, $iCode, $iGetInput, $iRegExp

    [/autoit] [autoit][/autoit] [autoit]

    $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

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    If StringInStr($zeile, "filetype:") <> 0 Then
    Local $x = StringInStr($zeile, "filetype:")
    $ft = StringTrimLeft($zeile, $x + 8)
    $ft = StringLeft($ft, StringInStr($ft, " ") - 1)
    GUICtrlSetData($Input_EXT, $ft)
    Else
    GUICtrlSetData($Input_EXT, "")
    EndIf
    EndFunc ;==>_listview_doubleclick

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit]

    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

    Dateien

    ErGoSuche.zip 471,83 kB – 361 Downloads
  • Pixelgetcolor Frage

    • Andy
    • 16. Juli 2009 um 11:30

    Hallo,
    Hilfe hilft.....

    Aus der Hilfe:
    PixelGetColor
    --------------------------------------------------------------------------------
    Gibt die Farbe des Pixels x,y zurück.
    PixelGetColor ( x , y [, hwnd] )
    Parameter

    x X-Koordinate des Pixels.
    y Y-Koordinate des Pixels.
    hwnd [optional] Handle des zu verwendenden Fensters

    ciao
    Andy

  • GUI Optionen

    • Andy
    • 16. Juli 2009 um 09:05

    Hallo,
    schau mal bei guicreate() in der Hilfe nach, dort gibt es als Parameter die Stileund auch die Tabelle der erweiterten Stile
    Und schau dir mal das Beispielscript dort an...
    ciao
    Andy

  • http:// teamspeak://öffnen

    • Andy
    • 16. Juli 2009 um 07:47

    Hallo.
    für Mail hat Microsoft MAPI zur Verfügung gestellt, so dass aus fast allen anderen Anwendungen Mails versendet werden können, ohne das Mailprogramm zu benutzen. Sicher gibt es solch eine Schnittstelle auch für Protokolle, d.h. es wird mit einem "Start" einer Anfrage mit http(s) oder ftp oder auch teamspeak der browser geöffnet. Damit könnte man unabhängig vom vorhandenen Browser TS² starten usw.
    Standardbrowser in der Registry herausfinden und diesem dann den "Link" an Teamspeak übergeben funzt auch...oder ts² direkt starten^^
    cia
    Andy

  • If Abfrage spinnt?

    • Andy
    • 15. Juli 2009 um 13:15

    Hi, jetzt hab ichs begriffen^^
    Habe leider erst heute abend wieder zeit, bis denne
    Andy

  • If Abfrage spinnt?

    • Andy
    • 15. Juli 2009 um 03:19

    Hallo Dustyn,
    ich glaube ich habs begriffen :rolleyes:
    Ich versuche es mal zusammenzufassen:
    - Du suchst im Prinzip die Anzahl der Rohstoffe, diese Anzahl befindet sich innerhalb des html-Codes, allerdings mehrfach?
    - Es gibt mehrere Rohstoffe, Holz, Eisen, Lehm usw...
    - Die Anzahl der Rohstoffe stehen im Code "in der Nähe" der Rohstoffnamen "Holz", "Eisen" usw.

    Ich vermute mal, du siehst das VIEL zu kompliziert^^, obwohl dein Ansatz richtig ist!
    Ich würde es so machen:
    Die Anzahl(blauer String) ist doch immer zwischen dem roten und dem grünen Stringteil?!
    $html=<img src="graphic/lehm.png?1" title="Lehm" alt="">124<span class="grey">.</span>646 >
    1. Roten String suchen im htmlcode mittels stringinstr(). Du erhälst die Position im html-Code.
    2. Zu dieser Position zählst du die Länge des roten Strings ( stringlen() ) dazu. Deine Position ist nun genau VOR dem blauen String, nennen wir P1
    3. Alles links von dieser Position abschneiden mit stringtrimleft($html,$p1), übrig bleibt der String mit der Anzahl am Anfang
    $Anzahl_Holz=124<span class="grey">.</span>646 >
    3. mittels stringinstr() den grünen String im html-Code suchen(eigentlich ja nur das nächste <-Zeichen?! ), du bist jetzt also genau HINTER der Anzahl der Rohstoffe.(hinter dem blauen String), nennen wir P2
    4. Alle Zeichen bis zur Position P2 (egal wieviele) sind also die Anzahl der Rohstoffe. mit Stringleft($anzahl_holz,$p2) erhälst du diesen String
    $anzahl_Holz=124
    5. Da dein blauer String nur aus Zahlen besteht, kannst du auch damit rechnen......wenn nicht, ggf mit stringstripws() alle Leerzeichen entfernen

    ciao
    Andy

    Spoiler anzeigen
    [autoit]

    $Source = '"<tbody><tr><th>Erspähte Rohstoffe:</th><td><img src="graphic/holz.png?1" title="Holz" alt="">454 <img src="graphic/lehm.png?1" title="Lehm" alt="">1<span class="grey">.</span>646 <img src="graphic/eisen.png?1" title="Eisen" alt="">1<span class="grey">.</span>061 </td></tr>'

    [/autoit] [autoit][/autoit] [autoit]

    $s_holz='<tbody><tr><th>Erspähte Rohstoffe:</th><td><img src="graphic/holz.png?1" title="Holz" alt="">'
    $s_lehm='<img src="graphic/lehm.png?1" title="Lehm" alt="">'
    $s_eisen='<img src="graphic/eisen.png?1" title="Eisen" alt="">'

    [/autoit] [autoit][/autoit] [autoit]

    $Anzahl_holz=stringtrimleft($source,stringinstr($source,$s_holz) + stringlen($s_holz)-1) ;Alles links von der Anzahl abschneiden
    $p2=stringinstr($anzahl_Holz,"<")-1 ;Position genau vor dem <-Zeichen
    $anzahl_Holz=StringStripWS(stringleft($anzahl_Holz,$p2),8) ;alles abschneiden rechts von der Position $p2, alle leerzeichen entfernen

    [/autoit] [autoit][/autoit] [autoit]

    $Anzahl_lehm=stringtrimleft($source,stringinstr($source,$s_lehm) + stringlen($s_lehm)-1) ;Alles links von der Anzahl abschneiden
    $p2=stringinstr($anzahl_lehm,"<")-1 ;Position genau vor dem <-Zeichen
    $anzahl_lehm=StringStripWS(stringleft($anzahl_lehm,$p2),8) ;alles abschneiden rechts von der Position $p2, alle leerzeichen entfernen

    [/autoit] [autoit][/autoit] [autoit]

    $Anzahl_eisen=stringtrimleft($source,stringinstr($source,$s_eisen) + stringlen($s_eisen)-1) ;Alles links von der Anzahl abschneiden
    $anzahl_eisen=StringStripWS(stringleft($anzahl_eisen,stringinstr($anzahl_eisen,"<")-1),8) ;alles abschneiden rechts von der Position $p2, alle leerzeichen entfernen

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    msgbox(0,"Rohstoffe","Anzahl Holz = "&$anzahl_holz&@crlf& _
    "Anzahl Lehm = "&$anzahl_lehm&@crlf& _
    "Anzahl Eisen = "&$anzahl_eisen)

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • If Abfrage spinnt?

    • Andy
    • 15. Juli 2009 um 00:45

    Hi,
    zunächst würde ich den HTML-Code (der wichtige Ausschnitt) in den $source - String giessen! Dann sehen wir auch was Sache ist!
    Also Sourcecode kopieren, und in den Autoit-Quellcode einfügen

    [autoit]

    $source="HIERHINEINKOPIEREN"

    [/autoit]


    Innerhalb deiner For/To Schleife dimensionierst du immer wieder neu, dazu besteht keinerlei Grund!
    Ich ahne halbwegs was du vorhat, aber so ganz steige ich nicht durch. ^^
    Fasse das mal in Worte :thumbup:

    Andy

  • If Abfrage spinnt?

    • Andy
    • 15. Juli 2009 um 00:07

    Hallo,

    Zitat

    Habe es mir zu Herzen genommen und durchgelesen.

    braaaaav^^
    Wenn du (gutgemeinter Rat, nicht böse sein) auch von den "guten" AutoIt´lern hier eine Antwort haben möchtest, dann solltest du wenn möglich deinen kompletten Code posten.
    Zu deinen Beispielen:

    [autoit]

    $Test1 = 10
    $Test2= 288
    $Bestand = ($Test1*1000)+$Test2
    msgbox(0,0,$bestand)

    [/autoit]

    hier kommt IMMER das richtige Ergebnis raus!
    Allerdings kann keiner von uns erahnen, woher deine Variablen kommen. daher ist es wichtig, den Code soweit wie nötig vorzulegen.
    Wenn du selbst nicht weist, welchen Datentyp deine Variable hat, dann erzwinge doch einen Fehler und du weisst sofort Bescheid!

    Spoiler anzeigen
    [autoit]

    $Test1 = 10
    $Test2 = 288
    If IsNumber($Test1) And IsNumber($Test2) Then ;nur wenn beide eine Zahl sind
    $Bestand = ($Test1 * 1000) + $Test2 ;dann addieren
    MsgBox(0, 0, $Bestand)
    Else ;falls $test 1 oder $test2 keine zahlen sind..
    MsgBox(0, "FEHLER", " Es dürfen nur Zahlen addiert werden!")
    EndIf

    [/autoit]

    Setze einfach mal Anführungsstrichelchen vor und hinter die 10 und lasse das Script nochmal laufen....

    Zitat

    Oder liegt es einem falschen Datentyp?

    Ohne den Code gesehen zu haben, mit 99%iger Sicherheit JA^^

    Zitat

    Was ist ein 0-basierendes Array?


    Was ein Array ist weisst du? Ich erkläre das meist anhand von einer Tabellenkalkulation.
    Ein eindimensionales Array ist eine Spalte in der Tabelle, man kann die einzelnen Zellen mit A1, A2, A3 usw ansprechen
    Ein zweidimensionales Array ist ein Tabellenblatt, dort spricht man die einzelnen Zellen über ihre "Koordinaten" an, also Zeile und Spalte: A1, B7,K12
    Ein dreidimensionales Array hast du wenn Tabellenblätter T ins spiel kommen:T1A1,T3B4,T5K12 usw...

    In einer Tabelle findest du die Zellen über Zeilen und Spalten, MEISTENS fängt die Zählweise mit erste Spalte, erste Reihe an...logo, ist ja auch die erste Spalte bzw. Reihe!
    In einem NULLBASIERTEN Array ist der Index der ERSTEN Reihe/Spalte aber keine Eins, sondern eine Null!
    Wenn du nun ein Array dimensionierst, wird das noch besser^^. Die Funktion Ubound() ist dein Freund!
    Der Wert, der von UBound zurückgegeben wird, ist um 1 größer als der Index des letzten Elements im Array, da die Untergrenze einer Dimension immer 0 ist.

    [autoit]

    dim $a[3]=[1,2,3] ;die 1 hat den Index NULL, also $a[0]=1 !!!!

    [/autoit][autoit][/autoit][autoit]

    msgbox(0,0,"Das Array hat "&ubound($a)&" Elemente")

    [/autoit][autoit][/autoit][autoit]

    for $index=0 to ubound($a)-1 ;ubound liefert 3 elemente, erste Zahl ist 1 mit dem Index null!!!
    msgbox(0,"Arrayelemente", $index+1 & ". Element= " & $a[$index]) ;beachte index+1 und $a[$i]
    next

    [/autoit]

    ciao
    Andy


    *edit*

    Zitat

    Gibt es eine Möglichkeit, diese Strings in Zahlen umzuwandeln?


    yepp,

    [autoit]

    $a = "12 " ;ein string, leerzeichen beachten!
    $b = Number($a) ;eine Zahl
    MsgBox(0, 0,"$a & $a = " & $a & $a & @CRLF & _ ;klar, 2 strings werden aneinandergehängt
    "$a * $a = " & $a * $a & @CRLF & _ ;mit strings kann man nicht rechnen, daher null*null=null
    "$b & $a = " & $b & $a & @CRLF & _ ;wieder 2 strings
    "$b + $a = " & $b + $a & @CRLF & _ ;12+0=12
    "$b + $b = " & $b + $b) ;12+12=24

    $a = "12" ;ein string!!!
    $b = Number($a) ;eine Zahl
    MsgBox(0, 0,"$a & $a = " & $a & $a & @CRLF & _ ;klar, 2 strings werden aneinandergehängt
    "$a * $a = " & $a * $a & @CRLF & _ ;Autoit macht aus dem string eine Zahl wenn möglich, um damit zu rechen!
    "$b & $a = " & $b & $a & @CRLF & _ ;wieder 2 strings
    "$b + $a = " & $b + $a & @CRLF & _ ;12+12=24
    "$b + $b = " & $b + $b) ;12+12=24

    [/autoit]
    Zitat

    Oder einfach das kaufmännische UND benutzen?


    6, setzen^^

  • Koda, Quelltext auf die Button legen

    • Andy
    • 14. Juli 2009 um 23:22

    Hallo,

    Zitat

    Kenne mich leider nur mit dem Microsoft Visual Studio aus

    was heisst "leider", bis Koda nur in die Nähe des Studios kommt vergehen noch einige Jährchen^^
    In AutoIt ist Handarbeit gefragt, d.h. du musst deine Funktionen per Hand den einzelnen Events zuordnen.
    Im Grunde machst du es schon richtig, erst den Code basteln und dann die Gui drumherumstricken.
    Beim Eventhandling hast du mehrere Möglichkeiten, entweder kannst du wie in Alinas Beispiel in einerEndlosschleife die Ereignisse abfragen und deinen Funktionen zuordnen.
    Oder du nutzt den GUIOnEventMode. Damit weist du Ereignissen oder Events die DEIN Control betreffen direkt einer Funktion zu. Du musst dich im Programmablauf also nicht mehr darum kümmern, denn immer wenn dein Control ein Event auslöst, wird deine Funktion aufgerufen.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt("GUIOnEventMode", 1) ; Change to OnEvent mode
    $mainwindow = GUICreate("Hello World", 200, 100)
    GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked") ;wenn irgendwann der Event "klick auf gui-schliessen-button" auftritt, dann funktion closeclicked aufrufen
    GUICtrlCreateLabel("Hello world! How are you?", 30, 10)
    $okbutton = GUICtrlCreateButton("OK", 70, 50, 60) ;$okbutton hat die id vom control
    GUICtrlSetOnEvent($okbutton, "OKButton") ;wenn irgendwann einmal dieses control aufgerufen wird. dann funktion OKButton aufrufen
    GUISetState(@SW_SHOW) ;gui zeigen

    [/autoit] [autoit][/autoit] [autoit]

    While 1 ;endlosschleife, macht nichts ausser auf events warten
    Sleep(1000) ; gibt Prozessor für andere anwendungen frei
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func OKButton() ;wird immer aufgerufen, wenn button geklickt
    ;Note: at this point @GUI_CTRLID would equal $okbutton,
    ;and @GUI_WINHANDLE would equal $mainwindow
    MsgBox(0, "GUI Event", "You pressed OK!")
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func CLOSEClicked()
    ;Note: at this point @GUI_CTRLID would equal $GUI_EVENT_CLOSE,
    ;and @GUI_WINHANDLE would equal $mainwindow
    MsgBox(0, "GUI Event", "You clicked CLOSE! Exiting...")
    Exit
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit]

    Für "kleine" GUI´s ist die Variante mit GuiGetMsg() schneller "gehackt", für GUI´s mit vielen Events halte ich den OnEventMode für übersichtlicher.

    ciao
    Andy

  • Ispressed/Hotkeyset - 2 tasten wurden gedrückt?

    • Andy
    • 14. Juli 2009 um 19:53

    Hallo,

    Zitat

    Ich glaube nicht, dass Laura einen Keylogger machen wollte...

    das glaube ich ehrlich gesagt auch nicht, aber es wird "immer" geloggt, bei Hotkeyset brauchen wir nicht drüber zu reden, aber wenn man "zu Fuß" eine Abfrage nach einem "Hallo irgendwo auf der Windowsoberfläche" macht, dann ist man nur EINE ZEILE von einem perfekten Keylogger entfernt.
    Eine, wie ich meine tolle Anwendung (Idee) für dieses "logging" gabs vor einiger Zeit hier im Forum. Ein User wollte in einem Spiel nach Eingabe eines (zufällig vom Spiel zugewiesenen) Heldennamens sich die optimalen von diesem Helden verwendeten Items vorlesen lassen. Also ingame den Heldennamen eingeben, und das Script liest die Items vor, die dieser Held am besten in einem Shop kaufen sollte....Link
    Mit einer Handvoll umbauten wurde daraus ein "akustischer Vokabeltrainer" für meine Tochter. Der Trainer liest die Vokabeln vor, meine Tochter schreibt und bekommt sofort die akustische Rückmeldung ob richtig oder falsch, und der Papa hat Zeit zu kochen und hört im Hintergrund mit^^.
    Keylogger sind nicht immer "böse" :thumbup:
    ciao
    Andy

  • GUICtrlCreateInput in Send einbringen

    • Andy
    • 14. Juli 2009 um 19:04

    Hallo peethebee,

    Zitat

    ist wohl ratsam

    die Zielgruppe ....jaja, so gehts :rofl:
    wobei ich eigentlich nie direkt "sende" sondern immer so, da gerade bei langen Texten wesentlich schneller:

    [autoit]

    clipput(GUICtrlRead($inputid)) ; Daten vom Control mit der id auslesen
    Send("^v") ;daten vom Input an notepad senden

    [/autoit]


    ciao
    Andy

  • GUICtrlCreateInput in Send einbringen

    • Andy
    • 14. Juli 2009 um 07:53

    Hallo,
    mit

    [autoit]

    guictrlread()

    [/autoit]

    wird Status und Daten vom Steuerelement gelesen. So zum Beispiel

    [autoit]

    #include <GUIConstantsEx.au3>
    GUICreate("Test") ;gui basteln
    $inputid = GUICtrlCreateInput("", 10, 10, 100, 21) ;inputid ist nur die identifikationsnummer von der Eingabebox
    $buttonid = GUICtrlCreateButton("Senden", 20, 50, 80, 33) ;genau wie beim Button
    GUISetState() ;gui anzeigen

    [/autoit][autoit][/autoit][autoit]

    Do ;endlosschleife starten
    $msg = GUIGetMsg() ;wurde ein Button gedrückt?
    If $msg = $buttonid Then ;wenn Button mit der $buttonid gedrückt wurde, dann
    $inputinhalt = GUICtrlRead($inputid) ; Daten vom Control mit der $inputid auslesen
    Run("notepad.exe") ;notepad starten
    WinActivate("Unbenannt - Editor") ;in den Vordergrund holen
    WinWaitActive("Unbenannt - Editor") ;solange warten bis notepad im Vordergrund ist
    Send($inputinhalt) ;daten vom Input an notepad senden
    EndIf
    Until $msg = $GUI_EVENT_CLOSE ;solange wiederholen, bis fenster geschlossen angeklickt

    [/autoit]


    ciao
    Andy

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™