Sorry,
aber dafür ja in ner zip.
Und Virustotal.com gibt es ja auch noch.
So ist einfach alles drinnen, das man optimal testen kann.
Sorry,
aber dafür ja in ner zip.
Und Virustotal.com gibt es ja auch noch.
So ist einfach alles drinnen, das man optimal testen kann.
Es spielt doch keine Rolle, wie die Exe verpackt wurde... am Ende steht der User da und muss sie starten... und darauf vertrauen, dass sie keinen Mist macht.
Und Virustotal.com gibt es ja auch noch.
Sicher... aber ich sehe gar nicht ein, meine knapp bemessene Zeit dafür zu opfern und die Exe dort zu checken... denn in derselben Zeit hast du die Scripte auch in ein Archiv gepackt.
Nun, wie auch immer, meine Meinung dazu kennst du jetzt...
Ok, dann sorry. Ich dachte das ganze hilft. Weil ich nicht verstehe warum es nicht so funktioniert wie ich meine.
Hier jetzt nochmal das script
#include 'ImageSearch.au3'
#include <MsgBoxConstants.au3>
While -1
$checksum = PixelChecksum(7,515,39,530)
While $checksum = PixelChecksum(7,515,39,530)
Sleep(100)
WEnd
MsgBox($MB_SETFOREGROUND, "Achtung", "Es hat sich was geändert!")
Dim $x = 1, $y = 1
$iSearch = _ImageSearch(@ScriptDir & "\suche.jpg", 1,$x, $y, 70)
If iSearch <> 1 Then Exit
MsgBox(64, 'Vorsicht', 'Aufpassen' )
Sleep(200)
WEnd
Alles anzeigen
Das war mein Tipp, weil er schrieb:
Aber ich bekomme bei jedem Durchlauf auch die zweite MsgBox obwohl die suche.jpg nicht vorhanden ist.
.. Er prüfte vorher $x = 1 nachdem er selbst $x mit 1 initialisiert hatte.
if $x = 1 Then Exit
Danke @ Bitnugger, genau das was ich gesucht habe. Leider müssen noch a paar Minuten her um alles zu verstehen.
Noch eine Frage zu deiner Func_Check
Func _Check()
Local Static $resultPosition = 1, $x = $g_aRegion[0] + $g_aRegion[2] / 2, $y = $g_aRegion[1] + $g_aRegion[2] / 2, $tolerance = 20
$g_iCheckSum2 = PixelChecksum($g_aRegion[0], $g_aRegion[1], $g_aRegion[2], $g_aRegion[3])
If $g_iCheckSum1 = $g_iCheckSum2 Then Return
ConsoleWrite('$g_iCheckSum2 = 0x' & Hex($g_iCheckSum2, 8) & @CRLF)
AdlibUnRegister('_Check')
AdlibUnRegister('_ToolTip')
AdlibUnRegister('_GetMousePos')
ToolTip('')
;MsgBox(64, 'Achtung', 'Es hat sich was geändert!')
Local $iSearch = _ImageSearch($g_sJPG, $resultPosition, $x, $y, $tolerance)
ConsoleWrite('$iSearch = ' & $iSearch & @CRLF)
If $iSearch = 0 Then
$g_iCheckSum2 = -1
AdlibRegister('_GetMousePos')
AdlibRegister('_ToolTip')
AdlibRegister('_Check')
Else
MsgBox(64, 'Vorsicht', '>>>>>>>>> Aufpassen <<<<<<<<<')
;Exit
EndIf
EndFunc
Alles anzeigen
Wie bekomme ich das ganze dazu, nachdem
gefunden wurde. Wieder vorne angefangen wird ?
Schönen Gruß
Wieder vorne angefangen wird ?
Na wie wäre es denn mit einer Schleife? Du könntest zwar die Funktion nochmal aufrufen, aber das würde sich rekursiv stapeln und irgendwann abstürzen.
Erstelle dir einfach eine Schleife die so lange läuft, bis du nicht mehr drin bleiben möchtest. Dann kannst du ExitLoop aufrufen.
@alpines
Die Funktion wird doch bereits durch AdlibRegister('_Check') alle 250 ms aufgerufen...
@*wudu*
Etwa so...
Func _Check()
Local Static $iMsgBoxAnswer, $resultPosition = 1, $x = $g_aRegion[0] + $g_aRegion[2] / 2, $y = $g_aRegion[1] + $g_aRegion[2] / 2, $tolerance = 20, $iSearch
If $iSearch <> '' Then Return
$g_iCheckSum2 = PixelChecksum($g_aRegion[0], $g_aRegion[1], $g_aRegion[2], $g_aRegion[3])
If $g_iCheckSum1 = $g_iCheckSum2 Then Return
ConsoleWrite('$g_iCheckSum2 = 0x' & Hex($g_iCheckSum2, 8) & @CRLF)
; _Check erst wieder ausführen, wenn wir ein Ergebnis von _ImageSearch bekommen haben.
$iSearch = -1
;~ MsgBox(64, 'Achtung', 'Es hat sich was geändert!')
;~ Du kannst wahlweise das BMP oder GIF als Suchmaske verwenden... funktioniert beides, mit BMP geht es aber logischerweise schneller!
;~ $iSearch = _ImageSearch($g_sBMP, $resultPosition, $x, $y, $tolerance)
$iSearch = _ImageSearch($g_sGIF, $resultPosition, $x, $y, $tolerance)
ConsoleWrite('$iSearch = ' & $iSearch & @CRLF)
If $iSearch Then
$iMsgBoxAnswer = MsgBox(262180, 'Vorsicht', '>>>>>>>>> Aufpassen <<<<<<<<<' & @CRLF & @CRLF & 'Press "Yes" to continue or "No" to Exit')
Select
Case $iMsgBoxAnswer = 6 ;Yes
$iSearch = ''
$g_iCheckSum2 = -1
Case $iMsgBoxAnswer = 7 ;No
Exit
EndSelect
EndIf
EndFunc
Alles anzeigen
Die Funktion wird doch bereits durch AdlibRegister('_Check') alle 250 ms aufgerufen...
Ich hab nur die _Check-Funktion in seinem Post gesehen und mir nicht das Archiv angeguckt. Ich hätts ja sowieso ganz anders gemacht
Ich hätts ja sowieso ganz anders gemacht
Jetzt hast du mich aber neugierig gemacht... wie anders?
wie anders?
Naja, anders anders halt
ImageSearch erstmal komplett weggelassen, das sollte man einfach nicht verwenden.
Falls die GUI Win32-Controls anbietet, hätte ich lieber die Control*-Funktionen verwendet um die zu manipulieren.
Ich weiß jetzt nicht genau was der TE machen möchte aber ich hätte grundsätzlich die Pixel-Funktionen nicht verwendet - bin kein großer Fan davon.
Er hat ja nicht mal das Ergebnis von AutoIt Window Info hochgeladen, er sprach nur von einer uralten Software und da stehen die Chancen hervorragend,
das man mit den Control*-Funktionen sehr weit kommt.
Hi,
nachdem ich nur die Verknüpfung auf den Stick kopiert habe, kann ich die Daten erst morgen liefern.
Schande über mich
@alpines
Ja klar... bei mir wären PixelChecksum / _ImageSearch natürlich auch die allerletze Wahl, weil die zu verarbeitenden Werte allesamt variabler Natur sind und das Ergebnis somit sehr unsicher ist!
Hallo,
hier mal die zwei Dateien, die ich mit dem Infotool ausgelesen habe.
Hier steht der Text drinnen, nachdem ich suchen möchte:
und hier findet die Veränderung statt:
@ alpines, ich hoffe du kannst was damit anfangen.
Schönen Gruß
Wieso bitte lädst du die Dateien nicht direkt hier im Forum hoch, sondern auf einer Wald-und-Wiesen-Seite, die mit Werbung nerven will?
Schau mal ob du hiermit was tun kannst...
#Region ;************ Includes ************
#Include <Array.au3>
#include <WinAPISys.au3>
#EndRegion ;************ Includes ************
;-- TIME_STAMP 2017-05-16 18:17:02 v 0.1
Global $g_aResult, $g_hWnd, $g_hLV, $g_hGRID
$g_aResult = _Test1() ; sollte so funktionieren...
If @error = 0 Then
ConsoleWrite("_Test1() --> $g_aResult --> " & $g_aResult & @CRLF & "!@ " & @TAB & "#Error: " & @error & @CRLF)
$g_aResult = _Test2() ; aber falls nicht...
If @error Then Exit ConsoleWrite("_Test2() --> $g_aResult --> " & $g_aResult & @CRLF & "!@ " & @TAB & "#Error: " & @error & @CRLF)
EndIf
_ArrayDisplay($g_aResult, '$g_aResult')
AdlibRegister('_CheckWin') ; Window alle 250 ms auf Veränderungen prüfen...
Do
Sleep(500)
Until $g_hGRID = ''
ConsoleWrite('$g_hGRID = ' & $g_hGRID & @CRLF)
ConsoleWrite('Text from $g_hWnd....: ' & WinGetText($g_hWnd) & @CRLF)
ConsoleWrite('Text from $g_hGRID...: ' & ControlGetText($g_hGRID, '', '') & @CRLF)
Local $bVisible = False ; wir wollen auch die nicht sichtbaren in der Liste haben...
Local $aChildWindows = _WinAPI_EnumChildWindows($g_hWnd, $bVisible)
Local $FO = '> %5i %-13s %-32s %s\r\n'
ConsoleWrite(StringFormat($FO, '0', 'Window handle', 'Window class name', 'WindowText'))
ConsoleWrite(StringFormat($FO, '0', $g_hWnd, _WinAPI_GetClassName($g_hWnd), WinGetText($g_hWnd)))
For $i = 1 To $aChildWindows[0][0] Step 1
ConsoleWrite(StringFormat($FO, $i, $aChildWindows[$i][0], $aChildWindows[$i][0], WinGetText($aChildWindows[$i][0])))
Next
Exit 0
Func _Test1()
Local $hWnd = WinGetHandle('[TITLE:[1] Arbeiten-Automatik; CLASS:TfrmArbeitenAutomatik]')
If $hWnd = 0 Then Return SetError(1, 0, False)
Local $hLV = ControlGetHandle($hWnd, '', '[CLASS:TListView; INSTANCE:1]')
If $hLV = 0 Then Return SetError(2, 0, False)
Return _GetListViewItems($hWnd, $hLV)
EndFunc
Func _Test2()
$iOpt1 = Opt('WinTitleMatchMode', 2) ; 2 = Match any substring in the title
Local $hWnd = WinGetHandle('[TITLE:Arbeiten-Automatik; CLASS:TfrmArbeitenAutomatik]')
Opt('WinTitleMatchMode', $iOpt1)
Local $hLV = ControlGetHandle($hWnd, '', '[CLASS:TListView; INSTANCE:1]')
If $hLV = 0 Then Return SetError(2, 0, False)
Return _GetListViewItems($hWnd, $hLV)
EndFunc
Func _GetListViewItems($hWnd, $hLV)
$g_hWnd = $hWnd
$g_hLV = $hLV
Local $iItemCount = ControlListView($hLV, '', '', "GetItemCount")
Local $iSubItemCount = ControlListView($hLV, '', '', "GetSubItemCount")
ConsoleWrite('$hWnd = ' & $hWnd & @CRLF)
ConsoleWrite('$hLV = ' & $hLV & @CRLF)
ConsoleWrite('$iItemCount = ' & $iItemCount & @CRLF)
ConsoleWrite('$iSubItemCount = ' & $iSubItemCount & @CRLF)
Local $aLVItems[$iItemCount][$iSubItemCount]
For $i = 0 To $iItemCount -1 Step 1
For $j = 0 To $iSubItemCount -1 Step 1
$aLVItems[$i][$j] = ControlListView($hLV, '', '', "GetText", $i, $j)
Next
Next
EndFunc
Func _CheckWin()
Local $hGRID = ControlGetHandle($g_hWnd, '', '[CLASS:TS3Grid; INSTANCE:1]')
If $hGRID Then
MsgBox(262208, 'TADA....', 'In dem Window hat sich was geändert!!!' & @CRLF & @CRLF & '$hGRID = ' & $hGRID)
EndIf
AdlibUnRegister('_CheckWin')
$g_hGRID = $hGRID
EndFunc
Alles anzeigen
Hi,
wusste nicht das ich hier was uploaden kann.
Gelobe Besserung.
Sehe leider nicht wo ich das Suchwort eintragen kann.
Boar... dann verate uns doch einfach mal, welches Wort das ist...
Das suchwort ist Dysprosium
In den beiden Ausgaben (Suchwort / Veränderung) vom AutoIT-Info-Tool ist dieses Wort aber nicht zu sehen...
Was hat denn mein Script (Grid) an Ausgaben produziert? Ist das Wort da evtl. in der Ausgabe zu finden? Schiebe die komplette Ausgabe doch einfach mal hier als Datei hoch...