Danke für die Hinweise, ist geändert ![]()
Beiträge von TheLuBu
-
-
in Zeile 43 fehlt ein Leerzeichen hinter "robocopy"
So müsste es klappen:
[autoit]$RoboCopy = RunWait(@ComSpec & " /c "& "robocopy " & $aReadINI[$i][1] & " " & $OutPut & " /COPY:DT /MIR /XO /XF *.avi *.mp3 *.jpg *.wav *.wma /R:10 /W:10 /V", "" ,@SW_HIDE)
[/autoit] -
Ich verstehe nicht, welches Icon du meinst.
Das der erstellten Datei oder das der Autoit exe? -
So, hier auch die passende Funktion, um das Exceldatum (Dezimal) in ein normales Ausgabeformat zu ändern
Spoiler anzeigen
[autoit]; #FUNCTION#
[/autoit]
;===============================================================================
;
; Name...........: _ExcelDateToNormaldate
; Description ...: Wandelt ein Excel Datum (Dezimal) in das Datum um (YYYY/MM/DD[ HH:MM:SS]) um
; Syntax.........: _ExcelDateToNormaldate($i_date)
; Parameters ....: $i_date - Das Datum, wie es von Excel ausgegeben wird
; Requirements...: _ExcelTimeToNormalTime()
; ...: #include <Date.au3>
; Return values .: Success - Das Datum im Format YYYY/MM/DD
; - Wenn $i_date Float ist, dann wird auch die Uhrzeit zurückgegeben YYYY/MM/DD HH:MM:SS
; Failure - Returns 0 and Sets @Error:
; |0 - Kein Fehler
; |1 - $i_date ist keine gültige Zahl
; Author ........: TheLuBu ([email='LuBu@veytal.com'][/email])
; Modified.......:
; Remarks .......:
; Related .......:
; Link ..........;
;
;==========================================================================================
Func _ExcelDateToNormaldate($i_date)
$i_date = StringReplace($i_date, ",", ".")
If Not IsNumber($i_date) Then Return SetError(1, 0, 0)
If IsInt($i_date) Then
Return _DateAdd("d", $i_date, "1899/12/30")
ElseIf IsFloat($i_date) Then
$date = _DateAdd("d", Int($i_date), "1899/12/30")
$hour = _ExcelTimeToNormalTime($i_date - Int($i_date))
Return $date & " " & $hour
EndIf
EndFunc ;==>_ExcelDateToNormaldate
; #FUNCTION#
;===============================================================================
;
; Name...........: _ExcelTimeToNormalTime
; Description ...: Wandelt eine Exceluhrzeit (Dezimal) in eine normale Uhrzeit (hh:mm:ss) um
; Syntax.........: _ExcelTimeToNormalTime($i_time)
; Parameters ....: $i_time - Die Uhrzeit, wie sie von Excel gespeichert wird
; Return values .: Success - Die normale Uhrzeit
; Failure - Returns 0 and Sets @Error:
; |0 - Kein Fehler
; |1 - $i_time ist keine gültige Zahl
; Author ........: TheLuBu ([email='LuBu@veytal.com'][/email])
; Modified.......:
; Remarks .......:
; Related .......:
; Link ..........;
;
;==========================================================================================
Func _ExcelTimeToNormalTime($i_time)
$i_time = StringReplace($i_time, ",", ".")
If Not IsNumber($i_time) Then Return SetError (1,0,0)
Return StringRight("0" & Int($i_time * 24), 2) & ":" & StringRight("0" & Int((($i_time * 24) - Int($i_time * 24)) * 60), 2) & ":" & StringRight("0" & Int(((($i_time * 24) - Int($i_time * 24)) * 60 - Int((($i_time * 24) - Int($i_time * 24)) * 60)) * 60), 2)
EndFunc ;==>_ExcelTimeToNormalTime
; #FUNCTION#
;=============================================================================== -
OK sagen wir, es ist unsauber geschrieben

Es werden Lokale Variablen im Haupstscript deklariert, das ist Blödsinn, da Lokale Variablen in Funktionen genutzt werden.
[autoit]
Die Lokalen Variablen werden von AutoIt automatisch in Globale Variablen gewandelt weil sie im Hauptscript stehen, sonst könntest du sie nicht in der Funktion benutzen.HotKeySet('{F10}','_OpenPDF')
[/autoit][autoit][/autoit][autoit]_Start()
[/autoit][autoit][/autoit][autoit]Func _Start()
[/autoit][autoit][/autoit][autoit]
Local $sPfad = 'C:\PDF\', $sInfo = 'Ctrl oder Shift drücken um mehrere Dateien auszuwählen.'
Local $string = FileOpenDialog($sInfo, $sPfad, "Datei (*.pdf)", 1+4)
Local $aArray = StringSplit($string, '|', 2)
Local $aBound = UBound($aArray)-1
Local $Tip = ToolTip('Smash Hotkey F10',1,1,"Programm wird ausgeführt")While 1
[/autoit]
Sleep(100)
WEnd
EndFunc
Func _OpenPDF()
ConsoleWrite('Opening PDF >> '&$aArray[$aBound] &'<<'&@CRLF)
ShellExecute($aArray[$aBound])
If @error Then
ConsoleWrite('ERROR Code >> '&@error & '<<'&@CRLF)
Exit
EndIf
If $aBound = 0 Then Exit
$aBound -= 1
ConsoleWrite('PDF Opened'&@CRLF)
EndFuncwürde z.B. nicht klappen

$aArray und $aBound sind Globale Variablen, da sie in mehrern Funktionen genutzt werden (bei diesem Beispiel 2 Funktionen, bei dir das Haupstscript + die Funktion)
-
was für einen Fehler kriegst du denn?
-
@Protex
Dein Script kann nicht laufen, weil du $array und $aBound lokal deklarierst, aber in einer Funktion nutzt
-
relativ weit unten bei dir im Script, füg das hier da ein wo $aBound -= 1 steht
[autoit]$aBound -= 1
[/autoit]
If $aBound < 0 Then Exit -
wenn die dll benötigt wird, kannst du sie ja mit includen,
Bugfix hatte da mal was für geschrieben, ähnlich wie es mit der sqlite.dll ist -
Habe meinen Beitrag oben bearbeitet
-
ist das so denn auch richtig, also diese Umwandlung?
Nach welchem System wandelst du die um, bzw. was soll damit gemacht werden?Das hier würde auf deine Beispielzahl passen, aber ob es für alle gültig ist kann ich nicht sagen
[autoit]Func AppendByte($val)
[/autoit]
$split = Stringsplit($val)
Return "0x"&$split[3]&$split[4]&$split[1]&$split[2]
EndFunc ;==>AppendByte -
Spoiler anzeigen
[autoit]$Timer = TimerInit()
[/autoit]
$timertoggle = False
While 1
If TimerDiff($Timer) >= 1200000 and $timertoggle = False Then
$timertoggle = not $timertoggle
Send("!^")
$Timer = TimerInit()
EndIf
If TimerDiff($Timer) >= 300000 and $timertoggle = True Then
$timertoggle = not $timertoggle
Send("!^")
$Timer = TimerInit()
EndIf
Sleep(10)
WEnd
Da es hier um Zeiten geht, reicht auch der kleine sleep
-
Hatte ich früher auch schonmal gebraucht und eine Funktion dafür geschrieben:
Spoiler anzeigen
[autoit]; #FUNCTION#
[/autoit]
;==================================================================================================
; Function Name: _IniReadComplete($sPath [, $s_Delim="" ])
; Description: Eine Inidatei mit allen Sektionen in einem Array
; Parameter(s): $sPath Der Pfad zur Inidatei
; $s_Delim Trennzeichen zwischen Key und Value Standart = GUIDataSeparatorChar
; Return values .: Success - Array welches die gesamte Inidatei darstellt
; Failure - Returns 0 and Sets @Error:
; |1 - Die Inidatei konnte nicht gelesen werden
; Author(s): TheLuBu ([email='LuBu@veytal.com'][/email])
;==================================================================================================
Func _IniReadComplete($s_Path, $s_Delim = "")
If $s_Delim = "" Then $s_Delim = Opt("GUIDataSeparatorChar")
Local $av_Sectionnames, $i_lastrow = 1, $as_initoread, $av_ret[1][2]
$av_Sectionnames = IniReadSectionNames($s_Path)
If @error Then Return SetError(1,0,0)
ReDim $av_ret[1][$av_Sectionnames[0]]
For $i = 1 To $av_Sectionnames[0]
$av_ret[0][$i-1] = $av_Sectionnames[$i]&""
$as_initoread = IniReadSection($s_Path, $av_Sectionnames[$i])
For $k = 1 To $as_initoread[0][0]
If $k = $i_lastrow Then
$i_lastrow = $k + 1
ReDim $av_ret[$i_lastrow][$av_Sectionnames[0]]
EndIf
$av_ret[$k][$i-1] = $as_initoread[$k][0] & $s_Delim & $as_initoread[$k][1]
Next
Next
Return $av_ret
EndFunc -
Spoiler anzeigen
[autoit]$Timer = TimerInit()
[/autoit]
$timertoggle = False
While 1
If TimerDiff($Timer) = 1200000 and $timertoggle = False Then
$timertoggle = not $timertoggle
Send("!^")
$Timer = TimerInit()
EndIf
If TimerDiff($Timer) = 300000 and $timertoggle = True Then
$timertoggle = not $timertoggle
Send("!^")
$Timer = TimerInit()
EndIf
WEnd -
Möglich wäre es, z.b Alle Pfade, die du sicher, willst in einer IniDatei zu speichern (anderes format ginge auch, aber für Ini-Dateien gibt es fertige Funktionen)
Das ganze dann mit
[autoit]IniReadSection ( "filename", "section" )
[/autoit]
[autoit]
auslesen und in ner Schleife durchlaufen lassen$avarray = IniReadSection("Beispielini.ini", "Pfade")
[/autoit]
For $i = 1 To $avarray[0][0]
$rob = RunWait(@ComSpec & " /c "& "robocopy" & $avarray[$i][1] & " " & $Ziel & " /COPY:DT /MIR /XO /XF *.avi *.mp3 *.jpg *.wav *.wma /R:10 /W:10 /V", "" ,@SW_HIDE)
Next
If $rob = 1 Then -
Hallo liebe Community,
ich wollte mich jetzt mal an GDI+ ranwagen und habe angefangen, ein Spiel zu programmieren.
Allerdings stehe ich jetzt schon vor einem Problem
Ich habe Zeichne einen String mit
[autoit]_GDIPlus_GraphicsDrawStringEx($hBuffer, $text, $hFont, $aInfo[0], $hFormat, $hBrush)
[/autoit]
[autoit]
und ich dachte, das ich mit$tLayout = _GDIPlus_RectFCreate(500, 500, 0, 0)
[/autoit]Die position des Strings verändern kann, aber dem ist anscheinend nicht so

Ich habe das Script hochgeladen, da es zuviele Zeichen enthält ($bFont_Fluted_Germanica ist die Schriftart, die ich nutze)
Wäre nett, wenn mir damit jemand helfen könnte

Ok ich habe es grade rausgefunden
[autoit]$aInfo = _GDIPlus_GraphicsMeasureString($hGraphics, $text4context, $hFont, $tLayout, $hFormat)
[/autoit]
war bei mir leer, da ein Leerer String zum Überprüfen mitgegeben wurde. Nachdem ich da einen "imaginären" Content mit 30 Zeichen eingesetzt hatte, funktioniert jetzt auch die Positionierung -
Hi, ich arbeite grade an einem SPiel und würde da gerne auch eine andere Schriftart nutzen.
Ich habe mir diese Schriftart runtergeladen
http://www.dafont.com/germanica-family.font
und mit deinem Script eingelesen (sowohl bei der Abfrage Ja und Nein).Wenn ich das Font dann in dein Beispielscript kopiere kommt bei Ja gar nichts, bei beiden Fenstern, und bei Nein nur im ersten Fenster Schrift, aber in normaler Arial Schrift. Woran kann das liegen?
-
Die Buttons und das Contextmenu gehören zu einem anderen Programm, auf das ich via Autoit zugreifen will, es ist kein Autoit Programm und ich habe es nicht geschrieben

-
Ich pushe das hier nochmal, da ich leider immernoch nicht weiter gekommen bin
-
Leider ist es nicht so einfach

Die Controlid des buttons und auch das handle des Fensters, in dem der Button liegt, die habe ich.
Das Handle zu dem Popup Menu jedoch nicht, und das lässt sich auch nicht mit dem Window Info auslesen.Ich habe also nicht die Möglichkeit, mit WinWaitActive o.Ä zu arbeiten, da ich keinen Titel text, classe oder Instanz habe bzw. Noch nicht rausgefunden habe, wie ich drankomme