Welches Programm erstellt diese Dateien?
Wenn es eine DOS-Bilddatei ist, dann: http://www.programmersheaven.com/download/4980/download.aspx
Welches Programm erstellt diese Dateien?
Wenn es eine DOS-Bilddatei ist, dann: http://www.programmersheaven.com/download/4980/download.aspx
Nur mal so um die Idee von XovoxKingdom aufzugreifen:
Global $aIP1[10] = ['10.10.10.10', '10.10.10.11', '10.10.10.12', '10.10.10.13', '10.10.10.14', '10.10.10.15', '10.10.10.16', '10.10.10.17', '10.10.10.18', '10.10.10.19']
Global $aIP2[10] = ['10.10.11.10', '10.10.11.11', '10.10.11.12', '10.10.11.13', '10.10.11.14', '10.10.11.15', '10.10.11.16', '10.10.11.17', '10.10.11.18', '10.10.11.19']
If $CmdLine[0] = 0 Then
For $i = 1 To 2
Run(@AutoItExe & ' /AutoIt3ExecuteScript "' & @ScriptFullPath & '" ' & $i)
Next
Exit
EndIf
Local $aIP = Eval('aIP' & $CmdLine[1])
For $j = 0 To UBound($aIP) - 1
Ping($aIP[$j], 1)
;~ MsgBox(0,$CmdLine[1] & ' ' & $aIP[$j] , Ping($aIP[$j], 1))
Next
Die Auswertung musst du dann noch selber hinzufügen.
Da es Programme gibt, bei denen man mit ControlGetText keine Erfolge erzielt (hauptsächlich Programme mit QWidget-Controls die nicht kompatibel zur Windows-API sind), gibt es nur die Möglichkeit, die benötigten Daten über OCR auszulesen. Durch diesen diesen Artikel von Andy wurde ich auf die Programme djpeg und gocr aufmerksam. Es sind Komandozeilentools um aus einem Bild Text auszulesen. djpeg wandelt das jpg-Bild in ein Graustufenbild um, damit gocr besser den Text finden kann.
_ReadControl_OCR funktioniert es mit allen Controls und nicht nur mit QWidgets
Mit _ReadGuiArea_OCR kann ein Bereich eines Fensters ausgewählt werden.
djpeg.exe
gocr.exe
Diese Dateien habe ich im Beispiel im Ordner @ScriptDir&'\App liegen.
#include <ScreenCapture.au3>
[/autoit] [autoit][/autoit] [autoit]Local $pid = Run('notepad.exe')
WinWait('[Class:Notepad]')
WinActivate('[Class:Notepad]')
WinWaitActive('[Class:Notepad]')
Send('Das wird über OCR ausgelesen!')
Local $text = _ReadControl_OCR("[Class:Notepad]", "", "Edit1", 2, 2, @ScriptDir&'\App')
If @error Then
MsgBox(16, "Fehler", @error)
Else
MsgBox(64, "Ergebnis", $text)
EndIf
Local $text = _ReadGuiArea_OCR("[Class:Notepad]", "", 3, 2, 350, 18, @ScriptDir&'\App')
If @error Then
MsgBox(16, "Fehler", @error)
Else
MsgBox(64, "Ergebnis", $text)
EndIf
ProcessClose($pid)
[/autoit] [autoit][/autoit] [autoit]Func _ReadControl_OCR($hWnd, $sText, $hCtrl, $iBorderX = 0, $iBorderY = 0, $AppDir = @ScriptDir)
;funkey
WinActivate($hWnd)
Local $Timeout = WinWaitActive($hWnd, $sText, 1)
If Not $Timeout Then Return SetError(1, 0, "")
Local $WinPos = WinGetPos($hWnd, $sText)
Local $ControlPos = ControlGetPos($hWnd, $sText, $hCtrl)
If @error Then Return SetError(2, 0, "")
Local $aClientSize = WinGetClientSize($hWnd, $sText)
If @error Then Return SetError(3, 0, "")
Local $Rahmen = ($WinPos[2] - $aClientSize[0]) / 2
Local $iOffsetx = $WinPos[2] - $aClientSize[0] - $Rahmen
Local $iOffsety = $WinPos[3] - $aClientSize[1] - $Rahmen
Local $Wert = ""
_ScreenCapture_Capture(@ScriptDir & '\TextControl.jpg', _
$WinPos[0] + $ControlPos[0] + $iOffsetx + $iBorderX, _
$WinPos[1] + $ControlPos[1] + $iOffsety + $iBorderY, _
$WinPos[0] + $ControlPos[0] + $ControlPos[2] + $iOffsetx - $iBorderX, _
$WinPos[1] + $ControlPos[1] + $ControlPos[3] + $iOffsety - $iBorderY, False)
RunWait($AppDir & '\djpeg -greyscale -dither none TextControl.jpg TextControl.pnm', @ScriptDir, @SW_HIDE)
Local $App = Run($AppDir & '\gocr -i TextControl.pnm', @ScriptDir, @SW_HIDE, 0x2)
While 1
$Wert &= StdoutRead($App)
If @error Then ExitLoop
WEnd
FileDelete(@ScriptDir & '\TextControl.jpg')
FileDelete(@ScriptDir & '\TextControl.pnm')
Return $Wert
EndFunc ;==>_ReadQWidget
Func _ReadGuiArea_OCR($hWnd, $sText, $x1, $y1, $x2, $y2, $AppDir = @ScriptDir)
;funkey
WinActivate($hWnd)
Local $Timeout = WinWaitActive($hWnd, $sText, 1)
If Not $Timeout Then Return SetError(1, 0, "")
Local $WinPos = WinGetPos($hWnd, $sText)
Local $aClientSize = WinGetClientSize($hWnd, $sText)
If @error Then Return SetError(2, 0, "")
Local $Rahmen = ($WinPos[2] - $aClientSize[0]) / 2
Local $iOffsetx = $WinPos[2] - $aClientSize[0] - $Rahmen
Local $iOffsety = $WinPos[3] - $aClientSize[1] - $Rahmen
Local $Wert = ""
_ScreenCapture_Capture(@ScriptDir & '\TextArea.jpg', _
$WinPos[0] + $x1 + $iOffsetx, _
$WinPos[1] + $y1 + $iOffsety, _
$WinPos[0] + $x2 + $iOffsetx, _
$WinPos[1] + $y2 + $iOffsety, False)
RunWait($AppDir & '\djpeg -greyscale -dither none TextArea.jpg TextArea.pnm', @ScriptDir, @SW_HIDE)
Local $App = Run($AppDir & '\gocr -i TextArea.pnm', @ScriptDir, @SW_HIDE, 0x2)
While 1
$Wert &= StdoutRead($App)
If @error Then ExitLoop
WEnd
FileDelete(@ScriptDir & '\TextArea.jpg')
FileDelete(@ScriptDir & '\TextArea.pnm')
Return $Wert
EndFunc ;==>_ReadQWidget
Kommentare sind herzlich willkommen ![]()
Geht super Progandy
Ich vergesse manchmal wie einfach das mit GUISetAccelerators geht.
Schau dir das Hilfe-Beispiel zu
[autoit]HotKeySet
[/autoit]an.
ContinueLoop
[/autoit]So zum Beispiel:
[autoit]$Antwort = MsgBox(36, "Starten", "Willst du das Skript starten?")
If $Antwort <> 6 Then Exit
MsgBox(0, "Credits", "Das ist von uns ;)", 5)
Einfach den TimeOut der MsgBox verwenden oder SplashTextOn, Sleep, SplashOff.
[autoit]MsgBox(0, "Credits", "Das ist von uns ;)", 5)
[/autoit]Da fehlt nur ein Local, (oder Global, oder Dim)
[autoit]Local $array[5] = ["Berlin", "Franktfurt", "Mailand", "Venedig", "Kapstadt"]
ControlSetText("ProjectX", "Stadt", "Edit5", $array[Random(0, UBound($array) - 1, 1)])
$Zufall = Random(1,3,1)
$Frage = IniRead("C:\Dokumente und Einstellungen\Charlie\Desktop\Fragen\Frage" & $Zufall & ".ini", "Frage","Frage", "Nicht gefunden")
Die Liste steht doch in der Hilfe zu Send!
Das kannst du doch leicht testen einfach über und unter dem 'While 1' eine leere MsgBox ![]()
Einwandfrei! Wieder mal ein tolles Produkt von dir. Läuft bei mir fehlerfrei! ![]()
![]()
Da das Spiel mit 4 Buttons zum spielen ausgestattet ist, könnte man auch die Pfeiltasten verwenden um die Buttons auszuwählen und die Leertaste um das Spiel (neu-)zustarten.
Schwieriger Fall um dir zu helfen. Wie weit kommt die Funktion? Ich kann nicht sagen wo die Funktion verlassen wird, das musst du schon selber herausfinden.
Ich denke, dass du den ganzen Pfad zur Datei benötigst und nicht nur den Dateinamen.
Was erhälst du da?
Local $icount = _GUICtrlListView_GetItemCount($hListViewon)
MsgBox(0, $icount, "")
Wenn $icount = 0 dann wird die schleife gar nicht ausgeführt!
Hab ein paar Sachen umgestellt. Im OnEventMode ist alles einfacher ![]()
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <TreeViewConstants.au3>
#include <StaticConstants.au3>
#include <INet.au3>
#include <String.au3>
#include <File.au3>
#include <array.au3>
#include <GUIConstants.au3>
#include <GuiTreeView.au3>
#include <GuiConstants.au3>
Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]Dim $Allarray, $array2, $a, $b, $s, $t, $u, $v, $w, $x, $y, $z, $arrayPic, $showtemp, $iIndex
[/autoit] [autoit][/autoit] [autoit]$GUI = GUICreate("List", 1200, 750, -1, -1)
GUISetOnEvent($GUI_EVENT_CLOSE, "_Ende")
Global $TreeView = GUICtrlCreateTreeView(6, 6, 350, 700, BitOR($TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS), $WS_EX_CLIENTEDGE)
$TreeItem2007 = GUICtrlCreateTreeViewItem("2007", $TreeView)
$Pic = GUICtrlCreatePic("", 370, 5, 800, 650)
ReadArray2007()
[/autoit] [autoit][/autoit] [autoit]GUICtrlSetState($TreeItem2007, BitOR($GUI_FOCUS, $GUI_EXPAND))
[/autoit] [autoit][/autoit] [autoit]GUISetState(@SW_SHOW, $GUI)
[/autoit] [autoit][/autoit] [autoit]While 1
Sleep(100000)
WEnd
Func ReadArray2007()
_FileReadToArray("2007.txt", $Allarray)
For $a = 1 To $Allarray[0]
$array2 = _StringBetween($Allarray[$a], '(', ')')
GUICtrlCreateTreeViewItem($array2[0], $TreeItem2007)
GUICtrlSetOnEvent(-1, '_ReadTree')
Next
EndFunc ;==>ReadArray2007
Func _Ende()
Exit
EndFunc ;==>_Ende
Func _ReadTree()
Local $v = GUICtrlRead($TreeView, 1)
GUICtrlSetImage($Pic, $v & ".jpeg")
MsgBox(64, "", $v)
EndFunc ;==>_ReadTree
Wie sieht denn beispielweise diese 2007.txt aus?