Hallo,
in solchen Fällen hilft ein beherztes TRACE Add Tracelines in den Scite- Tools.
Nach einem freundlichen F5 gibt dann 2 Möglichkeiten:
1. Script hängt in einer endlosschleife fest, dann "abschiessen" und in den letzten Zeilen der Console nachschauen was los war
2. Script hängt an einem Befehl (z.B. ping), dann steht die letzte ausgeführte Zeile auch in der Console
ciao
Andy
Beiträge von Andy
-
-
Hallo,
ELSEIF´s waren in deinem Script nicht nötig.Spoiler anzeigen
[autoit]Local $line
[/autoit] [autoit][/autoit] [autoit]
Dim $ListViewText[2] = [1, "HOST"];
[/autoit]
While 1
If FileExists('\\server\share\' & $ListViewText[1] & '.log') Then
$line = FileRead('\\server\share\' & $ListViewText[1] & '.log')
If StringInStr($line, "Flag") Then
MsgBox(0, "", "String in Log vorhanden")
Else
MsgBox(0, "", "String in Swscan nicht vorhanden")
ExitLoop
EndIf
Else
Ping($ListViewText[1], 1) ; Host anpingen
If @error Then
MsgBox(0, 0, "Ping auf " & $ListViewText[1] & " nicht erfolgreich!")
ExitLoop
Else
RegRead("\\" & $ListViewText[1] & "\HKEY_LOCAL_MACHINE\SOFTWARE\xxx\Flag", "ProductName")
If @error = 0 Then
MsgBox(0, "", "Flag eintrag x32 vorhanden")
ExitLoop
Else
RegRead("\\" & $ListViewText[1] & "\HKEY_LOCAL_MACHINE\SOFTWARE\WoW64\xxx\Flag", "ProductName")
If @error = 0 Then
MsgBox(0, "", "Flag eintrag x64 vorhanden")
ExitLoop
EndIf
EndIf
EndIf
EndIf
WEnd
Es ist generell in solchen Fällen sinnvoll, sich mit einigen Strichen einen kurzen Ablaufplan aufzuzeichnen bzw. mit eigenen Worten aufzuschreiben, und diesen dann GENAU so umzusetzen^^
Also:Code
Alles anzeigenEndlosschleife: Wenn file existiert, dann lies das File und reagiere auf inhalt ansonsten pinge Rechner an Wenn fehler beim ping, dann Nachricht und raus aus der endlosschleife ansonsten Registry lesen 32 bit Wenn Registry 32 bit dann nachricht 32 bit und raus aus der endlosschleife ansonsten registry lesen 64 bit Wenn Registry 64 bit dann nachricht 64 bit und raus aus der endlosschleife Endlosschleife LOOP
ciao
Andyps: Wenn du mit Scite arbeitest, zwischendurch ab und zu mal CTRL+t drücken oder bei Tools den Tidy anwerfen....
-
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 -
Hi,
Zitatauf 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....Zitatund 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 einZitatSchulstubenhocker
ciao
Andy -
Hi,
also ich habe in mehreren meiner Scripte keine Probleme mit Shellexecute()
Präzisiere mal:Zitatfunktioniert auch nicht überall:
Teste folgendes mit verschiedenen "problematischen" DateiendungenSpoiler anzeigen
[autoit]#include <File.au3>
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
$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)
WEndFunc FindExecutable($cFile)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
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 ;==>FindExecutableFunc FindPathToProg($ext) ;findet den vollen Pfad zum Standardbrowser
[/autoit]
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
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 -
Hi,
Zitatne 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 -
Hier gabs das wichtigste dazu....wenn du dort durch bist, weisst du sicher mehr
ciao
Andy -
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 -
Hallo BugFix,
ZitatDas 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 -
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
AndySpoiler 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)
[/autoit] [autoit][/autoit] [autoit]
_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)_Check(1, _StringinStrCount($sText, "und", False, False, "", False),
[/autoit] [autoit][/autoit] [autoit]
_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)_Check(5, _StringinStrCount($sText, "aber", False, False, "", False), 2)
[/autoit] [autoit][/autoit] [autoit]
_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)_Check(9, _StringinStrCount($sText, "und;aber", False, False, ";", False), 10)
[/autoit] [autoit][/autoit] [autoit]
_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)_Check(13, _StringinStrCount($sText, "und;aber", False, False, ";", True), "2;8;2")
[/autoit] [autoit][/autoit] [autoit]
_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")_Check(17, _StringinStrCount($sText, "", False, True, "", False), 119)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
_Check(17, _StringinStrCount($sText, "", False, True, " ", False), 104)
ConsoleWrite(TimerDiff($t) / 1000 & @CRLF)
ExitFunc _StringinStrCount($string, $SubString, $bSense = False, $bPartial = False, $sdelim = '', $bReturn = False)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
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 ;==>_StringinStrCountFunc _Check($i, $j, $k)
[/autoit]
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 -
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:jpgGoogle 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 undLeider 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 ****
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
#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*****************
[/autoit] [autoit][/autoit] [autoit]
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, $browsernewwindowGlobal $dll = DllOpen("user32.dll") ; für die WindowsMessages WM_notify-Funktion
[/autoit] [autoit][/autoit] [autoit]
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
[/autoit] [autoit][/autoit] [autoit]
Global $progname = "ErGo Erweiterte Googlesuche mit " & $BrowsernameOpt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]
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
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Msgbox(0,"Warnung",$progname&@crlf&" wird bereits ausgeführt!")
Exit
EndIf;*********GUI***************
[/autoit] [autoit][/autoit] [autoit]
$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*********
[/autoit] [autoit][/autoit] [autoit]
$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**********
[/autoit] [autoit][/autoit] [autoit]
$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ü*******
[/autoit] [autoit][/autoit] [autoit]
$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**********
[/autoit] [autoit][/autoit] [autoit]
$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******************
[/autoit] [autoit][/autoit] [autoit]
$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
[/autoit] [autoit][/autoit] [autoit]
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
[/autoit] [autoit][/autoit] [autoit]
Sleep(50)
_Mouseover()
WEndFunc Button1Click() ;Browser aufrufen mit der Suchanfrage
[/autoit] [autoit][/autoit] [autoit]
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 ;==>Button1ClickFunc _stringselect()
[/autoit] [autoit][/autoit] [autoit]
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 ;==>_stringselectFunc suchstring_aufbereiten()
[/autoit] [autoit][/autoit] [autoit]
EndFunc ;==>suchstring_aufbereitenFunc Button2Click()
[/autoit] [autoit][/autoit] [autoit]
If _isinput() Then _Browsercall($RadioString & GUICtrlRead($Input), "http://www.google.de/", "")
EndFunc ;==>Button2ClickFunc _GUIMinimize()
[/autoit] [autoit][/autoit] [autoit]
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 ;==>_GUIMinimizeFunc Button3Click()
[/autoit] [autoit][/autoit] [autoit]
_GUIClose()
EndFunc ;==>Button3ClickFunc _GUIClose()
[/autoit] [autoit][/autoit] [autoit]
_inischreiben()
_GUICtrlListView_UnRegisterSortCallBack($Liste)
Exit
EndFunc ;==>_GUICloseFunc List1Click()
[/autoit] [autoit][/autoit] [autoit]
_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 ;==>Radio5ClickFunc _neu() ;neuen listeneintrag erstellen, ggf favicon holen
[/autoit] [autoit][/autoit] [autoit]
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 ;==>_neuFunc _bearbeiten()
[/autoit] [autoit][/autoit] [autoit]
_GUICtrlListView_BeginUpdate($Liste)
_GUICtrlListView_EndUpdate($Liste)
EndFunc ;==>_bearbeitenFunc _delete() ;zeilen in der liste löschen
[/autoit] [autoit][/autoit] [autoit]
If MsgBox(262144 + 32 + 4, "", "Markierte bzw. angehakte Zeilen löschen? ") = 6 Then
_GUICtrlListView_DeleteItemsSelected(GUICtrlGetHandle($Liste))
EndIf
EndFunc ;==>_deleteFunc _Browsercall($sstring, $suchmaschine, $Winname) ;Browser aufrufen und google aktivieren
[/autoit] [autoit][/autoit] [autoit]
_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
[/autoit] [autoit][/autoit] [autoit]
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 ;==>_BrowsercallFunc _browserwin_notactive_msg()
[/autoit] [autoit][/autoit] [autoit]
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_msgFunc _isinput()
[/autoit] [autoit][/autoit] [autoit]
If GUICtrlRead($Input) = "" Then
MsgBox(262144 + 64, "Information", "Bitte geben Sie im obersten Eingabefeld ihre Suchbegriffe ein!")
Return 0
EndIf
Return 1
EndFunc ;==>_isinputFunc _getfavicon($url) ;holt das favicon von der angegebenen website
[/autoit] [autoit][/autoit] [autoit]_GUICtrlStatusBar_SetText($StatusBar, ' Favicon der Website downloaden.....bitte warten', 1, 0)
[/autoit] [autoit][/autoit] [autoit]
_GUICtrlListView_BeginUpdate($Liste) ;liste sperren
If _isurl($url) Then ;wenn die url "regulär" ist, dann suche dort nach einem faviconIf 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
[/autoit] [autoit][/autoit] [autoit]
$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)
[/autoit] [autoit][/autoit] [autoit]
$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
[/autoit] [autoit][/autoit] [autoit]
_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
EndIfif _GUIImageList_GetImageCount($hImage)=0 then;noch kein icon im index
[/autoit] [autoit][/autoit] [autoit]
_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 ;==>_getfaviconFunc _inilesen()
[/autoit] [autoit][/autoit] [autoit]
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 ;==>_inilesenFunc _inischreiben() ;inidatei schreiben
[/autoit] [autoit][/autoit] [autoit]
_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 ;==>_inischreibenFunc _extracturl($sURL) ;ersten teil der url holen, um das icon auf der page zu finden
[/autoit] [autoit][/autoit] [autoit]
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 ;==>_extracturlFunc _isurl($sURL) ;test ob string im url-Format vorliegt, regex hier gefunden: http://geekswithblogs.net/casualjim/arch…2/01/61722.aspx
[/autoit] [autoit][/autoit] [autoit]
$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 ;==>_isurlFunc _domain_from_url($url) ;gibt ein http://www.xxxx.de von http://www.xxxx.de/test/test2 zurück
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
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_urlFunc ListView_HOTTRACK($iSubItem)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Local $HotItem = _GUICtrlListView_GetHotItem($Liste)
; If $HotItem <> -1 Then _GUICtrlStatusBar_SetText($Statusbar, "Hot Item: " & $HotItem & " SubItem: " & $iSubItem)
EndFunc ;==>ListView_HOTTRACKFunc WM_NOTIFY_EVENTS($hWnd, $iMsg, $iwParam, $ilParam)
[/autoit] [autoit][/autoit] [autoit]
#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
[/autoit] [autoit][/autoit] [autoit]
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_EVENTSFunc WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
[/autoit] [autoit][/autoit] [autoit]
Local $IdFrom, $iCode, $iGetInput, $iRegExp$IdFrom = BitAND($wParam, 0x0000FFFF) ;loword
[/autoit] [autoit][/autoit] [autoit]
$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_COMMANDFunc _listview_doubleclick($index) ;listview doppelgeklickt, die Inputfelder werden gefüllt
[/autoit] [autoit][/autoit] [autoit]
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)))
EndIfIf StringInStr($zeile, "site:") <> 0 Then ;wenn site: in der zeile, dann
[/autoit] [autoit][/autoit] [autoit]
Local $url = StringTrimLeft($zeile, 5)
$url = StringLeft($url, StringInStr($url, " ") - 1)
GUICtrlSetData($Input_URL, $url)
Else
GUICtrlSetData($Input_URL, "")
EndIfIf StringInStr($zeile, "filetype:") <> 0 Then
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
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_doubleclickFunc _Mouseover() ;Mausposition abfragen und Infos in die Statuszeile schreiben
[/autoit] [autoit][/autoit] [autoit]
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 ;==>_MouseoverFunc FindPathToDefaultBrowser() ;findet den vollen Pfad zum Standardbrowser
[/autoit] [autoit][/autoit] [autoit]
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 ;==>FindPathToDefaultBrowserFunc _GetBrowserInfo() ;holt sich aus der registry den standardbrowser und setzt die Fensternamen
[/autoit] [autoit][/autoit] [autoit]
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 ;==>_GetBrowserInfofunc _scriptversion()
[/autoit]
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 -
Hallo,
Hilfe hilft.....Aus der Hilfe:
PixelGetColor
--------------------------------------------------------------------------------
Gibt die Farbe des Pixels x,y zurück.
PixelGetColor ( x , y [, hwnd] )
Parameterx X-Koordinate des Pixels.
y Y-Koordinate des Pixels.
hwnd [optional] Handle des zu verwendenden Fenstersciao
Andy -
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 -
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 -
Hi, jetzt hab ichs begriffen^^
Habe leider erst heute abend wieder zeit, bis denne
Andy -
Hallo Dustyn,
ich glaube ich habs begriffen
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 entfernenciao
AndySpoiler 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="">'
[/autoit] [autoit][/autoit] [autoit]
$s_lehm='<img src="graphic/lehm.png?1" title="Lehm" alt="">'
$s_eisen='<img src="graphic/eisen.png?1" title="Eisen" alt="">'$Anzahl_holz=stringtrimleft($source,stringinstr($source,$s_holz) + stringlen($s_holz)-1) ;Alles links von der Anzahl abschneiden
[/autoit] [autoit][/autoit] [autoit]
$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$Anzahl_lehm=stringtrimleft($source,stringinstr($source,$s_lehm) + stringlen($s_lehm)-1) ;Alles links von der Anzahl abschneiden
[/autoit] [autoit][/autoit] [autoit]
$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$Anzahl_eisen=stringtrimleft($source,stringinstr($source,$s_eisen) + stringlen($s_eisen)-1) ;Alles links von der Anzahl abschneiden
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$anzahl_eisen=StringStripWS(stringleft($anzahl_eisen,stringinstr($anzahl_eisen,"<")-1),8) ;alles abschneiden rechts von der Position $p2, alle leerzeichen entfernenmsgbox(0,"Rohstoffe","Anzahl Holz = "&$anzahl_holz&@crlf& _
[/autoit] [autoit][/autoit] [autoit][/autoit]
"Anzahl Lehm = "&$anzahl_lehm&@crlf& _
"Anzahl Eisen = "&$anzahl_eisen) -
Hi,
[autoit]
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$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 WorteAndy
-
Hallo,
ZitatHabe es mir zu Herzen genommen und durchgelesen.
braaaaav^^
[autoit]
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:$Test1 = 10
[/autoit]
$Test2= 288
$Bestand = ($Test1*1000)+$Test2
msgbox(0,0,$bestand)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
[/autoit]
$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!")
EndIfSetze einfach mal Anführungsstrichelchen vor und hinter die 10 und lasse das Script nochmal laufen....
ZitatOder liegt es einem falschen Datentyp?
Ohne den Code gesehen zu haben, mit 99%iger Sicherheit JA^^
ZitatWas 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!
[autoit]
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.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!!!
[/autoit]
msgbox(0,"Arrayelemente", $index+1 & ". Element= " & $a[$index]) ;beachte index+1 und $a[$i]
nextciao
Andy*edit*
ZitatGibt es eine Möglichkeit, diese Strings in Zahlen umzuwandeln?
[autoit]
yepp,$a = "12 " ;ein string, leerzeichen beachten!
[/autoit]
$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=24ZitatOder einfach das kaufmännische UND benutzen?
6, setzen^^ -
Hallo,
ZitatKenne 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
[/autoit] [autoit][/autoit] [autoit]
$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 zeigenWhile 1 ;endlosschleife, macht nichts ausser auf events warten
[/autoit] [autoit][/autoit] [autoit]
Sleep(1000) ; gibt Prozessor für andere anwendungen frei
WEndFunc OKButton() ;wird immer aufgerufen, wenn button geklickt
[/autoit] [autoit][/autoit] [autoit]
;Note: at this point @GUI_CTRLID would equal $okbutton,
;and @GUI_WINHANDLE would equal $mainwindow
MsgBox(0, "GUI Event", "You pressed OK!")
EndFuncFunc CLOSEClicked()
[/autoit] [autoit][/autoit] [autoit][/autoit]
;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
EndFuncFü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 -
Hallo,
ZitatIch 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"
ciao
Andy