Super!
Jetzt bin ich zufrieden.
Beiträge von Oscar
-
-
Wenn ein Programm innerhalb von einer Sekunde 10 Browserfenster öffnet, dann hätte ich sofort den Verdacht auf ein Virus/Scherzprogramm.
Bist Du Dir wirklich sicher, dass Du sowas einem Anwender zumuten willst?
Edit: Oh mann, bin ich heut' wieder langsam.
Beschreib mal genauer, was Du vorhast... -
Was gefällt Dir denn an ShellExecute nicht?
Das ist doch die für den Benutzer angenehmste Weise, weil der Standard-Browser verwendet wird. -
Klasse Funktion!
Aber es gibt noch einen Bug: Wenn ich das Datum als Zahl übergeben _IsHoliday(2009,1,1) wird der Feiertag nicht erkannt. Erst eine Stringübergabe mit führender Null: _IsHoliday(2009, '01', '01') ergibt das Gesuchte.Und wäre es nicht sinnvoll die Datumsübergabe im Format YYYY/MM/DD zu gestalten?
[autoit]
Dann könnte man z.B. direkt mit der Rückgabe von _NowCalcDate arbeiten:_IsHoliday(_NowCalcDate())
[/autoit]
[autoit]
oder mit _DateAdd:_IsHoliday(_DateAdd('d', 20, _NowCalcDate()))
[/autoit] -
Alina, runterskalieren ist doch gar kein Problem. Zum Beispiel mit IrfanView. Das Programm beherrscht sogar Batch-Konvertierung, sodass auch ganze Ordner mit Bildern bearbeitet werden können.
Alternativ wäre auch ein runterskalieren mit AutoIt machbar (IrfanView kann das aber besser). Also wenn das der einzige Fehler ist, den die Kamera hat, dann sehe ich da kein Problem.

-
Ich habe mal ein eigenes Script erstellt:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>
$hGui = GUICreate('Koordinatensuche', 320, 320)
Global $aField[15][15]
For $x = 0 To 14
For $y = 0 To 14
$aField[$x][$y] = GUICtrlCreateCheckbox('', 10 + $x * 20, 10 + $y * 20, 20, 20)
Next
Next
GUISetState()
_Search(7, 7, 3)
MsgBox(0, 0, 'Fertig')
Do
Until GUIGetMsg() = -3Func _Search($x, $y, $iLoop)
[/autoit]
$sleep = 500
For $i = 1 To $iLoop
GUICtrlSetState($aField[$x - 1 * $i][$y], $GUI_CHECKED)
Sleep($sleep)
GUICtrlSetState($aField[$x + 1 * $i][$y], $GUI_CHECKED)
Sleep($sleep)
GUICtrlSetState($aField[$x][$y - 1 * $i], $GUI_CHECKED)
Sleep($sleep)
GUICtrlSetState($aField[$x][$y + 1 * $i], $GUI_CHECKED)
Sleep($sleep)
For $j = $x - 1 * $i To $x + 1 * $i
If $j = $x Then ContinueLoop
GUICtrlSetState($aField[$j][$y - 1 * $i], $GUI_CHECKED)
Sleep($sleep)
Next
For $j = $x - 1 * $i To $x + 1 * $i
If $j = $x Then ContinueLoop
GUICtrlSetState($aField[$j][$y + 1 * $i], $GUI_CHECKED)
Sleep($sleep)
Next
If $i = 1 Then ContinueLoop
For $j = $y - 1 * ($i-1) To $y + 1 * ($i-1)
If $j = $y Then ContinueLoop
GUICtrlSetState($aField[$x - 1 * $i][$j], $GUI_CHECKED)
Sleep($sleep)
Next
For $j = $y - 1 * ($i-1) To $y + 1 * ($i-1)
If $j = $y Then ContinueLoop
GUICtrlSetState($aField[$x + 1 * $i][$j], $GUI_CHECKED)
Sleep($sleep)
Next
Next
EndFunc
Meinst Du sowas? -
-
Es war ja klar...
Forenregeln lesen!
[Thread closed] -
Eine Zeile (1920 Pixel) bei meinem 24 Zöller dauert ~37 sek. und das mit 'nem Phenom II X4 940 Processor (4x 3.0 GHz).

Aber andererseits finde ich das sogar gut. Das behindert die Botter.

-
Andy, ich bin schneller (100 Klicks)
Spoiler anzeigen
[autoit]
[/autoit]
Opt("MouseClickDelay", 0)
Opt("MouseClickDownDelay", 0)
$i=0
$t=timerinit()
while timerdiff($t)<1000
$i+=1
MouseClick ("left",631,550,1,0)
wend
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $i = ' & $i & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console -
Bei meiner Funktion kannst Du direkt das RegExp-Pattern übergeben:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
$pfad = @DesktopDir & "\"
$a = _RecursiveFileListToArray($pfad, '.+\.html', 1)
For $i = 1 To $a[0]
_removealt($a[$i])
Next;===============================================================================
[/autoit] [autoit][/autoit] [autoit]
; Function Name: _RecursiveFileListToArray($sPath[, $sPattern][, $iFlag][, $iFormat][, $iRecursion][, $sDelim])
; Description:: gibt Verzeichnisse (rekursiv) und/oder Dateien zurück, die einem RegExp-Pattern entsprechen
; Parameter(s): $sPath = Startverzeichnis
; $sPattern = ein beliebiges RexExp-Pattern für die Auswahl
; $iFlag = Auswahl
; 0 = Dateien & Verzeichnisse
; 1 = nur Dateien
; 2 = nur Verzeichnisse
; $iFormat = Rückgabeformat
; 0 = String
; 1 = Array mit [0] = Anzahl
; 2 = Nullbasiertes Array
; $iRecursion = Verzeichnisse rekursiv durchsuchen
; 0 = Nein
; 1 = Ja
; $sDelim = Trennzeichen für die String-Rückgabe
; Requirement(s): AutoIt 3.3.0.0
; Return Value(s): Array/String mit den gefundenen Dateien/Verzeichnissen
; Author(s): Oscar (http://www.autoit.de)
; Anregungen von: bernd670 (http://www.autoit.de)
;===============================================================================
Func _RecursiveFileListToArray($sPath, $sPattern = '', $iFlag = 0, $iFormat = 1, $iRecursion = 1, $sDelim = @CRLF)
Local $hSearch, $sFile, $sReturn = ''
If StringRight($sPath, 1) <> '\' Then $sPath &= '\'
$hSearch = FileFindFirstFile($sPath & '*.*')
If @error Or $hSearch = -1 Then Return SetError(1, 0, $sReturn)
While True
$sFile = FileFindNextFile($hSearch)
If @error Then ExitLoop
If StringInStr(FileGetAttrib($sPath & $sFile), 'D') Then
If StringRegExp($sPath & $sFile, $sPattern) And ($iFlag = 0 Or $iFlag = 2) Then $sReturn &= $sPath & $sFile & '\' & $sDelim
If $iRecursion Then $sReturn &= _RecursiveFileListToArray($sPath & $sFile & '\', $sPattern, $iFlag, 0)
ContinueLoop
EndIf
If StringRegExp($sFile, $sPattern) And ($iFlag = 0 Or $iFlag = 1) Then $sReturn &= $sPath & $sFile & $sDelim
WEnd
FileClose($hSearch)
If $iFormat And $sReturn = '' Then Return StringSplit($sReturn, '', $iFormat)
If $iFormat Then Return StringSplit(StringTrimRight($sReturn, StringLen($sDelim)), $sDelim, $iFormat)
Return $sReturn
EndFunc ;==>_RecursiveFileListToArrayFunc _removealt($sPath)
[/autoit]
$sFile = FileRead($sPath)
$sFile = StringRegExpReplace($sFile, '(<a .*) alt=".*?"(.*?>)', '$1$2')
$hFile = FileOpen($sPath, 2)
If $hFile <> -1 Then
FileWrite($hFile, $sFile)
FileClose($hFile)
EndIf
EndFunc ;==>_removealt
Bei Deiner Funktion " _removealt" habe ich die zwei RegExp mal zusammengefasst. -
TCPNameToIP()
-
Es gibt mehrere Funktionen, die Dateien rekursiv einlesen können. Hier ist meine:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <Array.au3> ; nur für die Beispiele erforderlich; Beispiele
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$iTimer = TimerInit()
$a = _RecursiveFileListToArray(@UserProfileDir, '', 1)
ConsoleWrite(Round(TimerDiff($iTimer)/1000, 4) & ' sek.' & @CRLF)
_ArrayDisplay($a);~ $timer = TimerInit()
[/autoit] [autoit][/autoit] [autoit]
;~ $aReturn = _RecursiveFileListToArray('C:', '\.exe\z', 1) ; Alle Dateien mit der Erweiterung ".exe" (auf C:)
;~ ConsoleWrite(@error & @CRLF)
;~ ConsoleWrite(Round(TimerDiff($timer)/1000, 3) & ' sek.' & @CRLF)
;~ _ArrayDisplay($aReturn, 'Alle Dateien mit der Erweiterung ".exe"');~ $timer = TimerInit()
[/autoit] [autoit][/autoit] [autoit]
;~ $aReturn = _RecursiveFileListToArray('C:', '\.au3\z', 1) ; Alle Dateien mit der Erweiterung ".au3" (auf C:)
;~ ConsoleWrite(@error & @CRLF)
;~ ConsoleWrite(Round(TimerDiff($timer)/1000, 3) & ' sek.' & @CRLF)
;~ _ArrayDisplay($aReturn, 'Alle Dateien mit der Erweiterung ".au3"');~ $timer = TimerInit()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
;~ $aReturn = _RecursiveFileListToArray('C:', 'autoit.*\..+\z', 1) ; Alle Dateien in denen "autoit" im Dateinamen vorkommt (auf C:)
;~ ConsoleWrite(@error & @CRLF)
;~ ConsoleWrite(Round(TimerDiff($timer)/1000, 3) & ' sek.' & @CRLF)
;~ _ArrayDisplay($aReturn, 'Alle Dateien in denen "autoit" im Dateinamen vorkommt');===============================================================================
[/autoit]
; Function Name: _RecursiveFileListToArray($sPath[, $sPattern][, $iFlag][, $iFormat][, $iRecursion][, $sDelim])
; Description:: gibt Verzeichnisse (rekursiv) und/oder Dateien zurück, die einem RegExp-Pattern entsprechen
; Parameter(s): $sPath = Startverzeichnis
; $sPattern = ein beliebiges RexExp-Pattern für die Auswahl
; $iFlag = Auswahl
; 0 = Dateien & Verzeichnisse
; 1 = nur Dateien
; 2 = nur Verzeichnisse
; $iFormat = Rückgabeformat
; 0 = String
; 1 = Array mit [0] = Anzahl
; 2 = Nullbasiertes Array
; $iRecursion = Verzeichnisse rekursiv durchsuchen
; 0 = Nein
; 1 = Ja
; $sDelim = Trennzeichen für die String-Rückgabe
; Requirement(s): AutoIt 3.3.0.0
; Return Value(s): Array/String mit den gefundenen Dateien/Verzeichnissen
; Author(s): Oscar (http://www.autoit.de)
; Anregungen von: bernd670 (http://www.autoit.de)
;===============================================================================
Func _RecursiveFileListToArray($sPath, $sPattern = '', $iFlag = 0, $iFormat = 1, $iRecursion = 1, $sDelim = @CRLF)
Local $hSearch, $sFile, $sReturn = ''
If StringRight($sPath, 1) <> '\' Then $sPath &= '\'
$hSearch = FileFindFirstFile($sPath & '*.*')
If @error Or $hSearch = -1 Then Return SetError(1, 0, $sReturn)
While True
$sFile = FileFindNextFile($hSearch)
If @error Then ExitLoop
If StringInStr(FileGetAttrib($sPath & $sFile), 'D') Then
If StringRegExp($sPath & $sFile, $sPattern) And ($iFlag = 0 Or $iFlag = 2) Then $sReturn &= $sPath & $sFile & '\' & $sDelim
If $iRecursion Then $sReturn &= _RecursiveFileListToArray($sPath & $sFile & '\', $sPattern, $iFlag, 0)
ContinueLoop
EndIf
If StringRegExp($sFile, $sPattern) And ($iFlag = 0 Or $iFlag = 1) Then $sReturn &= $sPath & $sFile & $sDelim
WEnd
FileClose($hSearch)
If $iFormat And $sReturn = '' Then Return StringSplit($sReturn, '', $iFormat)
If $iFormat Then Return StringSplit(StringTrimRight($sReturn, StringLen($sDelim)), $sDelim, $iFormat)
Return $sReturn
EndFunc -
So auf die Schnelle:
Spoiler anzeigen
[autoit]
[/autoit]
$sPath = @ScriptDir & '\test.html'
$sFile = FileRead($sPath)
$sFile = StringRegExpReplace($sFile, '(<a .*)alt=".+?"(.*?>)', '$1$2')
MsgBox(0,0,$sFile)
$hFile = FileOpen($sPath, 2)
If $hFile <> -1 Then
FileWrite($hFile, $sFile)
FileClose($hFile)
EndIf -
Ich hab' auch noch eine Lösung:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
MsgBox(0, '', _CheckDate('05.12.2009'))Func _CheckDate($sDate)
[/autoit]
Local $sNow = @YEAR & @MON & @MDAY
$sDate = StringRegExpReplace($sDate, '(\d{2})\.(\d{2})\.(\d{4})', '$3$2$1')
Select
Case $sDate > $sNow
$iReturn = 1
Case $sDate = $sNow
$iReturn = 0
Case $sDate < $sNow
$iReturn = 2
EndSelect
Return $iReturn
EndFunc -
@MatthiasG: Eine Rendering Engine in AutoIt? Mag vielleicht möglich sein, dass das möglich ist, aber das ist dann wohl so, als wenn Du mit einem Fahrrad an einem Formel 1 Rennen teilnehmen willst.

-
Ich habe lediglich zwei WMI-Abfragen kombiniert. Habe ich so ähnlich schon in meinem Computer-Info verwendet. Hier jetzt aber als Funktion.
Problem habe ich noch mit der Angabe des Computers ($strComputer). Wenn man also die Informationen von einem anderen Computer im Netzwerk haben will.
Die Funktion bricht dann mit @error = 1 ab (das Objekt $objWMIService wird nicht erstellt). Vermutlich wegen fehlender Zugriffsrechte, aber wo kann man die angeben? -
Dieses Script funktioniert sowohl unter XP als auch unter Win7 64Bit:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
#include <Array.au3>
$iTimer = TimerInit()
$aAdapter = _Win32NetworkAdapter()
ConsoleWrite('Fehler: ' & @error & @CR & 'Zeit: ' & Int(TimerDiff($iTimer)) & ' ms' & @CR)
_ArrayDisplay($aAdapter)Func _Win32NetworkAdapter($strComputer = 'Localhost')
[/autoit] [autoit][/autoit] [autoit]
Local $aReturn[1][12] = [[ _
'Hersteller:', 'Name:', 'Adapter-Typ:', 'Kennung:', _
'MAC-Adresse:', 'Adresstyp:', 'DHCP-Server:', 'IP erhalten:', _
'IP läuft ab:', 'IP-Adresse:', 'Subnetzmaske:', 'Standardgateway:']]
Local $x = 0, $objWMIService, $colItems
$objWMIService = ObjGet('winmgmts:\\' & $strComputer & '\')
If Not IsObj($objWMIService) Then Return SetError(1, 0, 0)
$colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_NetworkAdapter WHERE Netconnectionstatus = 2', 'WQL', 0x30)
If Not IsObj($colItems) Then Return SetError(2, 0, 0)
For $objItem In $colItems
$x += 1
ReDim $aReturn[$x + 1][12]
$aReturn[$x][0] = $objItem.Manufacturer
$aReturn[$x][1] = $objItem.Name
$aReturn[$x][2] = $objItem.AdapterType
$aReturn[$x][3] = $objItem.NetConnectionID
$aReturn[$x][4] = $objItem.MACAddress
$colItems2 = $objWMIService.ExecQuery('SELECT * FROM Win32_NetworkAdapterConfiguration', 'WQL', 0x30)
If IsObj($colItems2) Then
For $objItem2 In $colItems2
If $objItem.Caption = $objItem2.Caption Then
If $objItem2.IPEnabled = -1 Then
If $objItem2.DHCPEnabled = -1 Then
$aReturn[$x][5] = 'von DHCP zugewiesen'
$aReturn[$x][6] = $objItem2.DHCPServer
$aReturn[$x][7] = _WMIDateStringToDate($objItem2.DHCPLeaseObtained)
$aReturn[$x][8] = _WMIDateStringToDate($objItem2.DHCPLeaseExpires)
Else
$aReturn[$x][5] = 'Manuell konfiguriert'
EndIf
$aReturn[$x][9] = $objItem2.IPAddress(0)
$aReturn[$x][10] = $objItem2.IPSubnet(0)
$aReturn[$x][11] = $objItem2.DefaultIPGateway(0)
EndIf
EndIf
Next
EndIf
Next
Return $aReturn
EndFunc ;==>_Win32NetworkAdapterFunc _WMIDateStringToDate($dtmDate)
[/autoit]
Return (StringMid($dtmDate, 5, 2) & '/' & _
StringMid($dtmDate, 7, 2) & '/' & StringLeft($dtmDate, 4) _
& ' ' & StringMid($dtmDate, 9, 2) & ':' & StringMid($dtmDate, 11, 2) & ':' & StringMid($dtmDate, 13, 2))
EndFunc ;==>_WMIDateStringToDate -
Die Coverbilder, die in MP3s eingebettet werden können (innerhalb des ID3-Tag), sind erst ab Version 2.4 der ID3-Tags spezifiziert:
Zitat
In der aktuellen Version 2.4 werden viele Zusatzinformationen spezifiziert, es gibt jedoch kaum eine Implementierung, die den vollen Funktionsumfang unterstützt. Eine Besonderheit sind zum Beispiel Cover-Bilder oder ganze Slideshows (zusammen auch als Album Art bekannt) die im ID3-Tag abgelegt werden können und durch das „PIC“-Flag identifiziert werden. Maximal sind 256 MByte große PNG- oder JPG-Bilder spezifiziert, im Normalfall werden aber zwischen 32x32 bis zu 320x320 große Bilder abgelegt, die zum Beispiel vom Windows Media Player oder iPod angezeigt werden können.
Naja, über den Sinn 256 MByte große Bilder in eine MP3-Datei von ca. 4-5 MByte zu integrieren kann man streiten...
Probleme dürfte es vermutlich mit einigen MP3-Playern geben, die einen derart umfangreichen ID3-Tag nicht erwarten.
-
Guten Morgen ihr beiden!
Alles Gute zu eurem Geburtstag und feiert schön.
Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.