Darter: Kann sein dass du kein XP hast, dann liegen die Dateien für die Image-Anzeige auch nicht in dem Pfad. Hält M$ ja nicht für nötig, sowas durchgängig beizubehalten. Verwende einfach eigene Bilder zum Testen.
Beiträge von BugFix
-
-
Jetzt verstehe ich nur noch Bahnhof.
In Post 1 schreibst duZitatText aus einer CMD auszulesen, welche aber NICHT durch AutoIt gestartet wurde.
und jetzt startest du die CMD doch selber(ob AutoIt od. Batch ist doch da egal)?
Zitatdie cmd. die bat/cmd-datei kann per doppelklick ausgeführt werden
Also rufst du die CMD doch selbst auf (wenn auch über eine Batch). Dann kannst du doch auch den StdOut-Stream anfordern. Noch besser nicht die Batch nehmen sondern aus AutoIt aufrufen, das vereinfacht die Angelegenheit.
Ich hatte dich bisher so verstanden, dass du keinen Einfluß auf den CMD-Aufruf hast. Aber du bist nur zu faul dich von der Batch zu verabschieden, du Schlingel.
-
-
funkey: Das läßt sich aber nicht formatieren.

Habe meine Version mal noch aktualisiert und Textmeter integriert. Dann braucht man keine Größe mehr übergeben. Als Position wird standardmäßig die Mausposition (bzw. rechts unterhalb davon) gewählt.
Hier zu finden: SplashImage / -Text, randlos, formatierbar -
Mußt du dir dann selbst schreiben: Gui mit Style WS_POPUP, dann kannst du formatieren, wie du lustig bist.
Ich hatte da mal was:
Spoiler anzeigen
[autoit]#include-once
[/autoit] [autoit][/autoit] [autoit]
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <WinAPI.au3>
#include <FontConstants.au3>_SplashOn('Hello World', 200, 100,-1,-1,-1,-1,-1,0)
[/autoit] [autoit][/autoit] [autoit];==================================================================================================
[/autoit]
; Function Name: _SplashOn($Item, $width=-1, $height=-1, $left=-1, $top=-1, $timeout=-1, $txtCol=-1, $bkCol=-1, $trans=1, $size=-1, $font=-1)
; Description:: Show an SplashImage (gif,jpg,bmp) or an SplashText
; Parameter(s): $Item - Path picture file or SplashText; Autodetection if file or text
; part optional $width - text: width; picture: - by default(-1) use original size of picture
; part optional $height - text: height; picture: - by default(-1) use original size of picture
; optional $left - left margin (default=-1 horizontal centered)
; optional $top - upper margin (default=-1 vertikal centered)
; optional $timeout- time how long to show picture/text (default=-1, 3 seconds)
; optional $txtCol - SplashText: text color RGB (default=-1, red)
; optional $bkCol - SplashText: back color RGB (default=-1, black)
; optional $trans - SplashText: background transparency yes/now (default=1, yes)
; optional $size - SplashText: font size (default=-1, 30) ; 14 conforms approximately 12 at TimesNewRoman
; optional $font - SplashText: font name (default=-1, Arial)
; Return: Succes - 1
; Failure - 0 set @error: 1= given file doesn't exist; 2= no size given for textarea
; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
;==================================================================================================
Func _SplashOn($Item, $width=-1, $height=-1, $left=-1, $top=-1, $timeout=-1, $txtCol=-1, $bkCol=-1, $trans=1, $size=-1, $font=-1) ; picture path or text
If $timeout < 0 Then $timeout = 3000
If $txtCol < 0 Then $txtCol = 0xFF0000
If $bkCol < 0 Then $bkCol = 0x000000
If $trans < 0 Then $trans = 0
If $size < 0 Then $size = 30
If $font = -1 Then $font = 'Arial'
If StringRegExp(StringLeft($Item, 3), '[a-zA-Z]:\\') Then ; picture
If Not FileExists($Item) Then Return SetError(1,0,0)
If ($width = -1) Or ($height = -1) Then
Local $objShell = ObjCreate("Shell.Application")
Local $objFSO = ObjCreate("Scripting.FileSystemObject")
Local $objFile = $objFSO.GetFile($Item)
Local $FileName = $objFSO.GetFileName($objFile)
Local $objFolder = $objShell.Namespace($objFSO.GetParentFolderName($objFile))
For $strFileName In $objFolder.Items
If $objFolder.GetDetailsOf($strFileName, 0) <> $FileName Then ContinueLoop
$width = StringRegExpReplace($objFolder.GetDetailsOf($strFileName, 27), '(\d+).*', '$1')
$height = StringRegExpReplace($objFolder.GetDetailsOf($strFileName, 28), '(\d+).*', '$1')
Next
EndIf
Local $gui = GUICreate("", $width, $height, $left, $top, $WS_POPUP, $WS_EX_TOPMOST)
Local $ctrl = GUICtrlCreatePic($Item, 0, 0, $width, $height)
GUISetState(@SW_SHOW)
Local $pos = WinGetPos($gui), $combined_rgn = _WinAPI_CreateRectRgn(0, 0, 0, 0)
Local $ctrl_pos = ControlGetPos($gui, "", $ctrl)
Local $ctrl_rgn = _WinAPI_CreateRectRgn($ctrl_pos[0], $ctrl_pos[1], $ctrl_pos[0] + $ctrl_pos[2], $ctrl_pos[1] + $ctrl_pos[3])
_WinAPI_CombineRgn($combined_rgn, $combined_rgn, $ctrl_rgn, $RGN_OR)
_WinAPI_DeleteObject($ctrl_rgn)
_WinAPI_SetWindowRgn($gui, $combined_rgn)
Sleep($timeout)
GUIDelete($gui)
Else ; text
If ($width = -1) Or ($height = -1) Then Return SetError(2,0,0)
If $left = -1 Then $left = Int((@DesktopWidth/2) - ($width/2))
If $top = -1 Then $top = Int((@DesktopHeight/2) - ($height/2))
Local $tRECT, $hFont, $hOldFont, $hDC
$tRECT = DllStructCreate($tagRect)
DllStructSetData($tRECT, "Left", $left)
DllStructSetData($tRECT, "Top", $top)
DllStructSetData($tRECT, "Right", $left + $width)
DllStructSetData($tRECT, "Bottom", $top + $height)
$hDC = _WinAPI_GetDC(0)
$hFont = _WinAPI_CreateFont($size, 0, 0, 0, 400, False, False, False, $DEFAULT_CHARSET, _
$OUT_DEFAULT_PRECIS, $CLIP_DEFAULT_PRECIS, $DEFAULT_QUALITY, 0, $font)
$hOldFont = _WinAPI_SelectObject($hDC, $hFont)
Local $sH = Hex($txtCol,6)
$txtCol = '0x' & StringRight($sH, 2) & StringMid($sH,3,2) & StringLeft($sH, 2)
$sH = Hex($BkCol,6)
$bkCol = '0x' & StringRight($sH, 2) & StringMid($sH,3,2) & StringLeft($sH, 2)
_WinAPI_SetTextColor($hDC, $txtCol)
_WinAPI_SetBkColor($hDC, $bkCol)
If $trans Then _WinAPI_SetBkMode($hDC, $TRANSPARENT)
Local $timer = TimerInit()
Do
_WinAPI_DrawText($hDC, $Item, $tRECT, $DT_CENTER)
Sleep(20)
Until TimerDiff($timer) > $timeout
_WinAPI_SelectObject($hDC, $hOldFont)
_WinAPI_DeleteObject($hFont)
_WinAPI_ReleaseDC(0, $hDC)
_WinAPI_InvalidateRect(0, 0)
$tRECT = 0
EndIf
Return 1
EndFunc ;==>_SplashOn -
Das sollte helfen:
FileOpenDialog()
FileRead()
GuiCtrlSetData() -
cmd.exe startet deine *.exe, und woher/wie weis die cmd.exe wie deine *.exe heißt?
bzw warum startet sie denn deine *.exe überhaupt?
Dann wär es ja einfach. Nein, eine Fremdanwendung startet in sich eine CMD - und auf diese wollte er Zugriff, was imho nicht machbar ist, da beim Aufruf der CMD die notwendigen Parameter übergeben werden müssen. -
Diese Form der Berechnung hat allerdings einen Nachteil. Als Basis wird die Gradzahl herangezogen. An den beiden Scheitelpunkten der Ellipse liegen die Punkte am dichtesten, während die auf der übrigen Bahn relativ weit gestreut liegen. Ursache ist die unterschiedliche Bahngeschwindigkeit. Da wäre es vielleicht sinnvoll mit dem Bogenmaß zu rechnen, damit man zwischen 2 Punkten stets dieselbe zurückgelegte Strecke hat. Dann hätten wir auch eine gleichförmige Bahnbewegung.
-
Wie wäre ein Start über Batch (Call) und da direkt die EXE, die dann sein Nötiges macht?
Alina, das Problem bleibt gleich: Die CMD wird ja aus einer fremden Anwendung heraus gestartet und diese Anwendung sollte dann Parameter für die Stream-Auswertung übergeben, damit die Auswertung möglich wird. -
Hier findest du eine Leer-Dll und die Beschreibung, wie du mit dem Ressource-Hacker eigenen Inhalt einfügen kannst.
-
das man nicht für jedes Event ein eignes image File Anlegen muss.
Schieb die drei Bilder, am besten als Icon, in eine Dll und lade bei entsprechendem Event das zugehörige Pict. -
Öffne mal VBA in Excel97 (ein Excel-Dokument öffnen, Alt+F11). Dort öffne den Objektkatalog (das Symbol, das aussieht wie ien Pappkarton) und durchsuche mal die dort angegebenen Objekte und Methoden. Vielleicht findest du was Brauchbares.
-
Hmm, wo ist jetzt der Bezug zu AutoIt? Tesseract ist doch eine OCR-Software?
Oder hast du eine Anbindung an AutoIt programmiert?
Dann zeig doch mal, was dein Skript bisher tut und wo es hakt. -
Aber da muss man im CMD auch sagen das er es an ConsoleRead.exe senden soll, mit | ConsoleRead.exe am Ende dran hängen.
Das ist, was ich meinte. Egal welche Verrenkungen man macht - letztendlich muß der aufrufende Prozeß in irgendeiner Form bekanntgeben, dass er Werte bereitstellt.
-
Nach meinem Verständnis ist das nicht möglich. Der aufrufende Prozeß muß die entsprechenden Flags (stdout, stderr) beim Aufruf setzen, damit diese Berücksichtigung finden.
Aber wieso kannst du den Aufruf nicht selbst vornehmen?
-
Danke Oscar für den Tipp. Werde ich sofort anpassen.
-
Hi,
die Funktion _FileListToArray() gibt uns nur die Datei-/Ordnernamen zurück. Häufig benötigt man aber die kpl. Pfade.
Deshalb habe ich diese Funktion erstellt, die identisch funktioniert aber die gesamten Pfade listet.
Für rekursive Auflistung gibt es ja bereits genügend Lösungen._FilePathListToArray
[autoit];===============================================================================
[/autoit]
; Function Name: _FilePathListToArray($sPath, $sFilter='*', $iFlag=0)
; Description: Analog zu _FileListToArray ==> aber es werden die kpl. Pfade ausgegeben
; Parameter(s): $sPath Pfad zum Ordner, von dem die Dateiliste erstellt werden soll
; $sFilter Dateiendung nach der gefiltert werden soll, Standard ist '*'
; $iFlag Rückgabe Dateien und/oder Ordner,
; 0 = Dateien u. Ordner (Standard)
; 1 = nur Dateien
; 2 = nur Ordner
; Return Value(s): Erfolg Array mit den Pfaden, $array[0] enthält die Anzahl der Dateien/Ordner
; Fehler 0 set @error 1 - Pfad existiert nicht
; 2 - Filter ungültig
; 3 - Flag ungültig
; 4 - keine Dateien/Ordner gefunden
; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
;===============================================================================
Func _FilePathListToArray($sPath, $sFilter='*', $iFlag=0)
Local $oFSO, $oFolder, $sOut = '', $iLen
If Not FileExists($sPath) Then Return SetError(1,0,0)
If StringRegExp($sFilter, "[\\/:><\|]|(?s)\A\s*\z") Then Return SetError(2,0,0)
If Not StringInStr('0 1 2', $iFlag) Then Return SetError(3,0,0)
$oFSO = ObjCreate('Scripting.FileSystemObject')
$oFolder = $oFSO.GetFolder($sPath)
If StringInStr('0 2', $iFlag) Then
For $SubFolder In $oFolder.Subfolders
$sOut &= $sPath & '\' & $SubFolder.Name & @LF
Next
EndIf
If $iFlag < 2 Then
$iLen = StringLen($sFilter)
For $File In $oFolder.Files
If $sFilter <> '*' Then
If StringRight($File.Name, $iLen) <> $sFilter Then ContinueLoop
EndIf
$sOut &= $sPath & '\' & $File.Name & @LF
Next
EndIf
If $sOut = '' Then Return SetError(4,0,0)
Return StringSplit(StringTrimRight($sOut, 1), @LF)
EndFunc ;==>_FilePathListToArray -
Jetzt Packen und auch Entpacken möglich. - Update s. Post #1
-
Hi,
hiermit könnt ihr ZIP-Archive mit dem in Windows integrierten ZIP erstellen:Parameter $iIndexBase=1 ==> Falls das übergebene Array an Pos 0 einen Zähler führt ist BaseIndex=1 (Standard).
_FileListToArray kann man leider nicht für das Array verwenden, da diese Funktion nicht den Pfad ausliest.Edit:
NEU - nun auch Entpacken.Edit2:
Fixed - Fehler Variablenname. Beim Zusammenführen der beiden Funktionen hatte ich vergessen die Variablennamen anzugleichen. Und keiner hats gemerkt
Edit3:
Fixed - Relative Dateinamen. Der Pfad zur Zip-Datei kann jetzt relativ angegeben werden. Danke Oscar für den Hinweis._BuildInZIP
[autoit];===============================================================================
[/autoit]
; Function Name: _BuildInZIP($sPath, $s_a_ToZip, $fUnZip=True, $iIndexBase=1, $fOverwrite=True)
; Description: Erstellt aus einer Datei od. einem Array von Dateien eine ZIP-Datei
; mit Hilfe der Windows eigenen ZIP-Funktion
; Parameter(s): $sPath Pfad der zu erstellenden ZIP-Datei // Bestehenden ZIP-Datei
; $s_a_ToZip String der Einzeldatei oder Array der zu zippenden Dateien
; // Pfad des Zielordners, in den entpackt werden soll
; $fUnZip=True Entpacken=True, Packen=False (Standard)
; $iIndexBase Index Basis (erstes Element mit Pfad) des übergebenen Arrays (0 od.1)
; $fOverwrite Falls $sPath existiert ==> Überschreiben (Standard=True)
; Return Value(s): Erfolg 1
; Fehler set @error 1 - Überschreiben aus, aber Zieldatei existiert
; 2 - Zieldatei endet nicht auf ".zip"
; 3 - zu komprimierende Datei existiert nicht
; @extended: Anzahl der fehlenden Dateien
; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
;===============================================================================
Func _BuildInZIP($sPath, $s_a_ToZip, $fUnZip=False, $iIndexBase=1, $fOverwrite=True)
Local $fh, $sNul = '', $sZIPHeader, $objShell = ObjCreate("Shell.Application"), $objZipOrdner, $err = 0
$sPath = FileGetLongName($sPath, 1)
If $fUnZip Then
Local $temp, $objZip
If Not FileExists($s_a_ToZip) Then DirCreate($s_a_ToZip)
$temp = $objShell.Namespace($s_a_ToZip)
$objZip = $objShell.Namespace($sPath)
$temp.CopyHere($objZip.Items)
Return 1
EndIf
If (Not $fOverwrite) And FileExists($sPath) Then Return SetError(1,0,0)
If StringRight($sPath, 4) <> '.zip' Then Return SetError(2,0,0)
For $i = 1 To 18
$sNul &= Chr(0)
Next
$sZIPHeader = Chr(80) & Chr(75) & Chr(5) & Chr(6) & $sNul
$fh = FileOpen($sPath, 10)
FileWrite($fh, $sZIPHeader)
FileClose($fh)
$objZipOrdner = $objShell.Namespace($sPath)
If Not IsArray($s_a_ToZip) Then
If Not FileExists($s_a_ToZip) Then Return SetError(3,1,0)
$objZipOrdner.CopyHere($s_a_ToZip)
Sleep(1000)
Return 1
EndIf
For $i = $iIndexBase To UBound($s_a_ToZip) -1
If Not FileExists($s_a_ToZip[$i]) Then
$err += 1
ContinueLoop
EndIf
$objZipOrdner.CopyHere($s_a_ToZip[$i])
Sleep(1000)
Next
If $err Then Return SetError(3,$err,0)
Return 1
EndFunc ;==>_BuildInZIP -
Nun, gerade im Internet ist ein gesundes Maß an Mißtrauen angebracht. Und wenn jemand ein "Prepaid-Konto" für mich einrichten will, dann schreit doch das schon sehr laut nach Betrug. Denn dafür gibt es doch nun nicht den geringsten Anlaß. Für sowas verwendet man PayPal und das richtet man nicht über irgendwen, sondern direkt bei PayPal ein.
Was Vertragsabschlüsse im Internet angeht: Fernabsatzgesetz! Hast du eine Widerrufsbelehrung erhalten? Wenn nein, kannst du dich ganz entspannt zurücklegen. Solange die Belehrung nicht erfolgt ist greift auch keine Kündigungsfrist. Du brauchst nicht mal Mahnungen beachten. Ich habe Ähnliches mit meinem Sohn hinter mir. Hab den Typen dann geschrieben, dass ich den Klageweg beschreite, falls ich weiterhin mit irgendwelchen Mahnungen belästigt werde und darauf verwiesen, dass der Vertrag aufgrund fehlender Widerrufsbelehrung nicht rechtsgültig ist. Zwei Tage später war die Kündigungsbestätigung da.
Die kochen alle nur mit Wasser, laß dich bloß nicht ins Bockshorn jagen.