Vergrößere ich das Fenster im GDI+-Script auf das 1,5-fache, bricht die Framerate auf knapp die Hälfte zusammen, anders gesagt benötigt _GDIPlus_GraphicsDrawImage() statt 10ms nun 25...
10*1,5 = 25, wann wurde das neu festgelegt ![]()
Vergrößere ich das Fenster im GDI+-Script auf das 1,5-fache, bricht die Framerate auf knapp die Hälfte zusammen, anders gesagt benötigt _GDIPlus_GraphicsDrawImage() statt 10ms nun 25...
10*1,5 = 25, wann wurde das neu festgelegt ![]()
Für diesen Zweck solltest du UTF 16 Little Endian nehmen:
--> Press Ctrl+Alt+Break to Restart or Ctrl+Break to Stop
Index 0: a_ausser
Index 1: a_außer
Index 2: b_ausser
Index 3: b_außer
Index 4: c_ausser
Index 5: c_außer
BinarySearchIndex: 2
BinarySearchIndex: 2
Export und Import
Index 0: 6
Index 1: a_ausser
Index 2: a_außer
Index 3: b_ausser
Index 4: b_außer
Index 5: c_ausser
Index 6: c_außer
BinarySearchIndex: 3
BinarySearchIndex: 3
Interessante Ausgaben: ÄÖÜäöüß
+>15:17:13 AutoIt3.exe ended.rc:0
+>15:17:13 AutoIt3Wrapper Finished.
>Exit code: 0 Time: 7.91
Alles anzeigen
Und auf PC-Seite hast du einen Art Dongle, der die Fernsteuerungsbefehle empfängt? An welchem Anschluß (USB, COM, LPT) ist der denn?
die Zuordnung gleicher Titel (Nr.) über die 1. Spalte ist gewährleistet.
Dann nimm mein Skript aus 2 Textdateien vergleichen und Änderung in Datei1 auswechslen
Die Dateinamen mußt du noch auf deine Bedürfnisse anpassen.
Die Zuordnung gleicher Titel über die Spalte 0 ist gewährleistet?
Wenn ja, ist es ganz einfach:
#include <Array.au3>
#include <File.au3>
Global $aDat1, $aDat2
_FileReadToArray('Datei1.txt',$aDat1,$FRTA_NOCOUNT,'|')
_FileReadToArray('Datei2.txt',$aDat2,$FRTA_NOCOUNT,'|')
;_ArrayDisplay($aDat1,'Datei1')
;_ArrayDisplay($aDat2,'Datei2')
For $i=0 To UBound($aDat2)-1
$iRow1=_ArraySearch($aDat1,$aDat2[$i][0])
If $aDat2[$i][1]<>$aDat1[$iRow1][1] Then
;ConsoleWrite($iRow1&': ' & $aDat2[$iRow1][1] & '<=' & $aDat2[$i][1]&@CRLF)
$aDat1[$iRow1][1]= $aDat2[$i][1]
EndIf
Next
$sNeu=_ArrayToString($aDat1)
$hNeu=FileOpen('Datei1.neu',$FO_OVERWRITE + $FO_UNICODE)
FileWrite($hNeu,$sNeu)
FileClose($hNeu)
_FileReadToArray('Datei1.Neu',$aDat1,$FRTA_NOCOUNT,'|')
_ArrayDisplay($aDat1,'Datei1.Neu')
Alles anzeigen
Die neue geänderte Datei befindet heißt Datei1.Neu. Benutzt habe ich Datei1.txt und Datei2.txt. Als Regel habe ich genommen: wenn ein Eintrag in Datei2 Spalte 1 (genannt Titel) sich von dem über Spalte 0 (genannt ID) korrespondierenden Eintrag in Datei1 unterscheidet wird der Titel der 2. Datei genommen. Bedingung für diese Vorgehensweise ist jedoch die 100% Sicherheit gleiche ID bedeutet gleicher Film auf gleichem Medium. Sollen Spalten 2 (Medium) und Spalte 3 (jugendfrei Ja/Nein?) auch übernommen werden mußt du dies noch ergänzen. Die Spaltenbenennung ist willkürlich und passt evtl. bei der letzten Spalte nicht. Da sie aber nur dem Zweck dient über die gleiche Spalte zu reden ist dies aber egal.
Also man kann die Datei2 einfach über Datei1 kopien, wie Du vorgeschlagen hast.
Überkopieren kannst du schon, du hast dann eine 1:1 Kopie. Das ganze ist mehr als Ironie zu verstehen, denn außer dem Wort Kopie konnte ich keine anderen Abweichungen zwischen 1 und 2 erkennen. Wenn also die 2. Zeile in Datei 1 geschrieben werden soll, warum dann nicht alle? Mittlerweile sehe ich das in der 2. Datei zusätzlich 123 am Ende des Titels steht. Somit wird es möglich, einzelne Zeilen auszutauschen. Wenn aber
In Datei2 heissen die Wörter Kopie natürlich auch dvd oder vhs so wie in Datei1.
unterscheidet sich Datei 1 von Datei 2 nach dieser Aktion nur noch im Namen (einmal Datei 1 das andere mal Datei 2), die unterschiedlichen Inhalte in 1 wurden ja mit denen von 2 überschrieben.
Da mußt du schon genaue Regeln aufstellen, denn alle Zeilen in Datei 2 enthalten das Wort Kopie anstelle DVD in Datei 1. Warum muß also genau Zeile 2 ausgetauscht werden und nicht alle? Letzeres wäre die einfachste Lösung einfach Datei 2 über Datei 1 kopieren.
Du siehst also solange du deine Änderungswünsche nicht in exakte Regeln fassen kannst, kann dir auch niemand helfen.
Anscheinend hast du einen Pfad ausgewählt, in dem die Unterordner leer sind. Das Beispiel aus der Hilfe mit deinen Parametern findet erfolgreich alle Dateien im ...\AutoIt3 Ordner:
#include <Array.au3> ; Only required to display the arrays
#include <File.au3>
#include <MsgBoxConstants.au3>
Example()
Func Example()
Local $sAutoItDir = StringLeft(@AutoItExe, StringInStr(@AutoItExe, "\", Default, -1))
If StringRight($sAutoItDir, 5) = "beta\" Then
$sAutoItDir = StringTrimRight($sAutoItDir, 5)
EndIf
ConsoleWrite($sAutoItDir & @CRLF)
; A sorted list of all files and folders in the AutoIt installation
Local $aArray = _FileListToArrayRec($sAutoItDir, "*", $FLTAR_FILES, $FLTAR_RECUR, $FLTAR_NOSORT, $FLTAR_FULLPATH)
_ArrayDisplay($aArray, "Sorted tree")
EndFunc ;==>Example
Alles anzeigen
benutze doch die Word.au3 zum automatisieren von Word.
Imho sollten Neulinge ersteinmal eine Art Prüfung ablegen bevor sie ihre Programmierkünste an fremden Rechnern austesten. Und falls ich die Überschrift so richtig deute, daß du mit einem auf deinem Rechner laufenden Skript die F5-Taste eines anderen Rechners im dort gerade aktiven Programm auslösen willst. Nein, daß geht nicht ohne ein Skript auf dem fremden Rechner.
WinWaitActive funktioniert bei mir unter WIn10 x64 mit AutoIt 3.3.14.2.
Ich denke, daß du Fehler in der falschen Funktion suchst. Aber ohne Skript ...
Hallo wuff100,
du scheinst nicht die aktuellste Excel.au3 zu benutzen. In dieser gibt es nämlich kein ExcelReadCell dafür aber _Excel_RangeRead. In dieser Funktion kann man auch festlegen welche Rückgabe ( 1 - Value, 2 - Formula, 3 - The displayed text, 4 - Value2.) man habe möchte.
Hallo reselty,
Herzlich willkommen im Forum. Deine Aufgabe ist mit AutoIt gut zu bewerkstelligen. Um diese zu lösen benötigst du die Funktionen:
_FileListToArrayRec
For ... Next
FileCopy ; bzw.
FileMove
;evtl. zum festlegen des Rootpfades:
FileSelectFolder
;evtl. für Debugzwecke:
_ArrayDisplay
ConsoleWrite
schau dir am besten in der Hilfe die Erklärung zu den Funktionen und die Beispiele dazu an, damit du ein Verständnis dafür bekommst. Auch die Kapitel in Language Reference bis einschließlich Loop Statements solltest du durcharbeiten.
mfg (auto)Bert
Liegt daran daß das Skript entwickelt wurde als es 3.3.14.2 noch gar nicht gab. Mein Versuch:
#include <Array.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>
#include <GuiStatusBar.au3>
#include <Misc.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>
#NoTrayIcon
#region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=icons\prog.ico
#AutoIt3Wrapper_Outfile=FotoSort.exe
#AutoIt3Wrapper_Res_Description=FotoSort
#AutoIt3Wrapper_Res_Fileversion=1.4.0.0
#AutoIt3Wrapper_Res_LegalCopyright=Oscar (www.autoit.de)
#AutoIt3Wrapper_Res_Language=1031
#endregion ;**** Directives created by AutoIt3Wrapper_GUI ****
Opt('GUIOnEventMode', 1)
Opt('GUICloseOnESC', 0)
Global $ghGDIPDll=$__g_hGDIPDll ;<============
OnAutoItExitRegister('_End')
_GDIPlus_Startup()
Global $aDecoders = _GDIPlus_Decoders(), $sPattern = ''
Global $sTitle = 'FotoSort'
Global $sVersion = '1.4.0.0'
Global $sDate = '20.04.2013'
Global $sAppDir = @AppDataDir & '\' & $sTitle & '\'
If Not FileExists($sAppDir) Then DirCreate($sAppDir)
Global $sInifile = $sAppDir & 'FotoSort.ini'
Global $sIconDir = @ScriptDir & '\icons\'
If Not FileExists($sIconDir) Then DirCreate($sIconDir)
If Not FileExists($sIconDir & 'pattern.ico') Then _patternico(True, $sIconDir)
If Not FileExists($sIconDir & 'white.ico') Then _whiteico(True, $sIconDir)
If Not FileExists($sIconDir & 'black.ico') Then _blackico(True, $sIconDir)
If Not FileExists($sIconDir & 'prog.ico') Then _progico(True, $sIconDir)
If Not FileExists($sIconDir & 'rotate.ico') Then _rotateico(True, $sIconDir)
If Not FileExists($sIconDir & 'delete.ico') Then _deleteico(True, $sIconDir)
Global $iPreviewLeft = 10
Global $iPreviewTop = 70
Global $iPreviewWidth = 480
Global $iPreviewHeight = 480
Global $iFullscreenRatio = @DesktopWidth / @DesktopHeight
Global $iGuiWidth = $iPreviewWidth + 510
Global $iGuiHeight = $iPreviewHeight + 150
Global $aParts[3] = [$iGuiWidth / 2 + 140, $iGuiWidth / 2 + 290, $iGuiWidth / 2 + 500]
Global $sSourcePath = IniRead($sInifile, 'Config', 'SourcePath', '')
Global $fRecursion = IniRead($sInifile, 'Config', 'Recursion', 'False') = 'True'
Global $fOverwrite = IniRead($sInifile, 'Config', 'Overwrite', 'False') = 'True'
Global $sSaveFileFormat = IniRead($sInifile, 'Config', 'FileFormat', '')
Global $aPicFilenames[1] = [0], $iCount = 0, $iPreviewAngle = 0, $sImgFileOld = '', $hPreviewBitmap, $AccelKeys[16][2]
Global $iTimer = TimerInit()
$hGui = GUICreate(StringFormat('%s v%0.3s', $sTitle, $sVersion), $iGuiWidth, $iGuiHeight)
GUISetFont(9, 400, 0, 'Verdana')
GUISetOnEvent($GUI_EVENT_CLOSE, '_CloseGui')
GUISetOnEvent($GUI_EVENT_PRIMARYDOWN, '_PrimaryClick')
GUISetIcon($sIconDir & 'prog.ico', 0, $hGui)
GUISetBkColor(0xCBCBCB)
GUICtrlCreateGroup('Quellverzeichnis:', 8, 5, 484, 55)
GUICtrlSetFont(-1, 10, 400, 0, 'Verdana', 5)
$ID_SourceDir = GUICtrlCreateInput($sSourcePath, 16, 25, 434, 25, $ES_READONLY)
GUICtrlSetFont(-1, 11, 400, 0, 'Arial', 5)
GUICtrlSetBkColor(-1, 0xFFFFEE)
$ID_SourceSel = GUICtrlCreateButton('...', 452, 25, 32, 24)
GUICtrlSetFont(-1, 10, 400, 0, 'Verdana', 5)
GUICtrlSetOnEvent(-1, '_SelectSourceDir')
GUICtrlSetTip(-1, 'Quellverzeichnis auswählen!')
GUICtrlCreateGroup('', -99, -99, 1, 1)
Global $aIDPicFormat[$aDecoders[0][0]], $aIDPicFormatContext[$aDecoders[0][0]]
GUICtrlCreateGroup('Einstellungen:', 500, 5, 480, 255)
GUICtrlSetFont(-1, 11, 400, 0, 'Arial', 5)
$ID_RecursiveCheck = GUICtrlCreateCheckbox('Quellverzeichnis rekursiv einlesen', 510, 28, 460, 20)
GUICtrlSetFont(-1, 11, 400, 0, 'Arial', 5)
GUICtrlSetOnEvent(-1, '_RecursiveCheck')
GUICtrlSetTip(-1, 'Das Quellverzeichnis wird rekursiv' & @CRLF & '(inkl. Unterverzeichnissen) eingelesen.')
If $fRecursion Then GUICtrlSetState($ID_RecursiveCheck, $GUI_CHECKED)
GUICtrlCreateLabel('', 510, 58, 460, 2, Default, $WS_EX_STATICEDGE)
GUICtrlCreateLabel('Wenn die Datei im Zielverzeichnis bereits vorhanden ist, dann:', 510, 75, 460, 20)
GUICtrlSetFont(-1, 11, 400, 4, 'Arial', 5)
$ID_Overwrite = GUICtrlCreateRadio('vorhandene Datei überschreiben', 510, 100, 400, 20)
GUICtrlSetFont(-1, 11, 400, 0, 'Arial', 5)
GUICtrlSetOnEvent(-1, '_RenameCheck')
$ID_Rename = GUICtrlCreateRadio('kopierte Datei umbenennen (Zähler anhängen)', 510, 125, 400, 20)
GUICtrlSetFont(-1, 11, 400, 0, 'Arial', 5)
GUICtrlSetOnEvent(-1, '_RenameCheck')
If $fOverwrite Then
GUICtrlSetState($ID_Overwrite, $GUI_CHECKED)
Else
GUICtrlSetState($ID_Rename, $GUI_CHECKED)
EndIf
GUICtrlCreateLabel('', 510, 160, 460, 2, Default, $WS_EX_STATICEDGE)
GUICtrlCreateLabel('Dateiformate:', 510, 175, 90, 20)
GUICtrlSetFont(-1, 11, 400, 4, 'Arial', 5)
For $i = 1 To $aDecoders[0][0]
$aIDPicFormat[$i - 1] = GUICtrlCreateCheckbox($aDecoders[$i][5], 600 + Mod($i - 1, 5) * 70, 173 + Int(($i - 1) / 5) * 25, 55, 20)
GUICtrlSetOnEvent(-1, '_SelectFileFormat')
GUICtrlSetFont(-1, 11, 400, 0, 'Arial', 5)
GUICtrlSetTip(-1, 'Alle Dateien mit Dateiendung: ' & $aDecoders[$i][6])
If StringInStr($sSaveFileFormat, $aDecoders[$i][5]) Then GUICtrlSetState(-1, $GUI_CHECKED)
$aIDPicFormatContext[$i - 1] = GUICtrlCreateContextMenu($aIDPicFormat[$i - 1])
GUICtrlCreateMenuItem('Alle Dateiformate auswählen', $aIDPicFormatContext[$i - 1])
GUICtrlSetOnEvent(-1, '_SelectAllFileFormat')
GUICtrlCreateMenuItem('Kein Dateiformat auswählen', $aIDPicFormatContext[$i - 1])
GUICtrlSetOnEvent(-1, '_SelectNoneFileFormat')
Next
GUICtrlCreateGroup('', -99, -99, 1, 1)
GUICtrlCreateGroup('Zielverzeichnisse (1...5):', 500, 280, 482, 270)
GUICtrlSetFont(-1, 10, 400, 0, 'Verdana', 5)
Global $aIDCopyButton[5], $aIDDestPath[5], $aIDDestPathSel[5], $aDestPath[5]
For $i = 0 To UBound($aIDDestPath) - 1
$aDestPath[$i] = IniRead($sInifile, 'Destpath', $i, '')
If $aDestPath[$i] = $sSourcePath Then $aDestPath[$i] = ''
$aIDCopyButton[$i] = GUICtrlCreateButton($i + 1, 510, 310 + $i * 50, 35, 24)
GUICtrlSetFont(-1, 10, 400, 0, 'Verdana', 5)
GUICtrlSetOnEvent(-1, '_CopyPic')
GUICtrlSetTip(-1, 'Aktuelles Bild ins Zielverzeichnis ' & $i + 1 & ' kopieren' & @CRLF & 'Tastenkürzel: [ALT] + [' & $i + 1 & ']')
$AccelKeys[$i][0] = '!' & $i + 1
$AccelKeys[$i][1] = $aIDCopyButton[$i]
$AccelKeys[$i + 5][0] = '!{NUMPAD' & $i + 1 & '}'
$AccelKeys[$i + 5][1] = $aIDCopyButton[$i]
$aIDDestPath[$i] = GUICtrlCreateInput($aDestPath[$i], 550, 310 + $i * 50, 390, 25, $ES_READONLY)
GUICtrlSetFont(-1, 11, 400, 0, 'Arial', 5)
GUICtrlSetBkColor(-1, 0xFFFFEE)
$aIDDestPathSel[$i] = GUICtrlCreateButton('...', 942, 310 + $i * 50, 32, 24)
GUICtrlSetFont(-1, 10, 400, 0, 'Verdana', 5)
GUICtrlSetOnEvent(-1, '_SelectDestDir')
GUICtrlSetTip(-1, 'Zielverzeichnis ' & $i + 1 & ' auswählen!' & @CRLF & 'Das Verzeichnis muss existieren.')
Next
GUICtrlCreateGroup('', -99, -99, 1, 1)
Global $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGui)
_GDIPlus_GraphicsSetSmoothingMode($hGraphic, 2)
Global $hBitmap = _GDIPlus_BitmapCreateFromGraphics($iGuiWidth, $iGuiHeight, $hGraphic)
Global $hGraphicBuff = _GDIPlus_ImageGetGraphicsContext($hBitmap)
Global $ahBrush[4], $iBgColor = 0
$ahBrush[0] = _GDIPlus_BrushCreateSolid(0xFFECECEC)
$ahBrush[1] = _GDIPlus_BrushCreateSolid(0xFFDFDFDF)
$ahBrush[2] = _GDIPlus_BrushCreateSolid(0xFF000000)
$ahBrush[3] = _GDIPlus_BrushCreateSolid(0xFFFFFFFF)
Global $hTexture = _CreatePatternTexture()
Global $ID_Dummy = GUICtrlCreateLabel('', $iPreviewLeft, $iPreviewTop, $iPreviewWidth, $iPreviewHeight)
GUICtrlSetTip(-1, 'Ein Doppelklick zeigt das Bild im Vollbildmodus an.' & @CRLF & '[ESC] beendet den Vollbildmodus.')
$ID_Prev100 = GUICtrlCreateButton('-100', 10, $iGuiHeight - 60, 50, 25)
GUICtrlSetOnEvent(-1, '_ChangeStatus')
GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlSetTip(-1, '100 Bilder zurückspringen')
$ID_Prev10 = GUICtrlCreateButton('-10', 70, $iGuiHeight - 60, 50, 25)
GUICtrlSetOnEvent(-1, '_ChangeStatus')
GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlSetTip(-1, '10 Bilder zurückspringen')
$ID_Prev1 = GUICtrlCreateButton('-1', 130, $iGuiHeight - 60, 50, 25)
GUICtrlSetOnEvent(-1, '_ChangeStatus')
GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlSetTip(-1, '1 Bild zurückspringen' & @CRLF & 'Tastenkürzel: [ALT] + [<-]')
$AccelKeys[10][0] = '!{LEFT}'
$AccelKeys[10][1] = $ID_Prev1
$ID_PicNum = GUICtrlCreateInput('', 190, $iGuiHeight - 60, 120, 25, BitOR($ES_NUMBER, $ES_CENTER))
GUICtrlSetFont(-1, 11, 400, 0, 'Verdana', 5)
GUICtrlSetOnEvent(-1, '_ChangeStatus')
GUICtrlSetTip(-1, 'Hier wird direkt zu der eingebenen Bildnummer gesprungen' & @CRLF & 'Nummer eingeben + [ENTER]')
$ID_Next1 = GUICtrlCreateButton('+1', 320, $iGuiHeight - 60, 50, 25)
GUICtrlSetOnEvent(-1, '_ChangeStatus')
GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlSetTip(-1, '1 Bild vorspringen' & @CRLF & 'Tastenkürzel: [ALT] + [->]')
$AccelKeys[11][0] = '!{RIGHT}'
$AccelKeys[11][1] = $ID_Next1
$ID_Next10 = GUICtrlCreateButton('+10', 380, $iGuiHeight - 60, 50, 25)
GUICtrlSetOnEvent(-1, '_ChangeStatus')
GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlSetTip(-1, '10 Bilder vorspringen')
$ID_Next100 = GUICtrlCreateButton('+100', 440, $iGuiHeight - 60, 50, 25)
GUICtrlSetOnEvent(-1, '_ChangeStatus')
GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlSetTip(-1, '100 Bilder vorspringen')
$ID_ROT = GUICtrlCreateButton('', 510, $iGuiHeight - 70, 48, 42, $BS_ICON)
GUICtrlSetImage(-1, $sIconDir & 'rotate.ico')
GUICtrlSetOnEvent(-1, '_RotateRight')
GUICtrlSetTip(-1, 'Bild um 90 Grad nach rechts drehen' & @CRLF & 'Tastenkürzel: [ALT] + [r]')
GUICtrlSetState(-1, $GUI_DISABLE)
$AccelKeys[12][0] = '!r'
$AccelKeys[12][1] = $ID_ROT
$ID_BgColor = GUICtrlCreateButton('', 570, $iGuiHeight - 70, 48, 42, $BS_ICON)
GUICtrlSetImage(-1, $sIconDir & 'pattern.ico')
GUICtrlSetOnEvent(-1, '_RotateBgColor')
GUICtrlSetTip(-1, 'Hintergrundfarbe umschalten' & @CRLF & '(Schachbrettmuster, Weiß oder Schwarz)' & @CRLF & 'Tastenkürzel: [ALT] + [b]')
$AccelKeys[13][0] = '!b'
$AccelKeys[13][1] = $ID_BgColor
$ID_DelPic = GUICtrlCreateButton('', 630, $iGuiHeight - 70, 48, 42, $BS_ICON)
GUICtrlSetImage(-1, $sIconDir & 'delete.ico')
GUICtrlSetOnEvent(-1, '_DeletePic')
GUICtrlSetTip(-1, 'Das angezeigte Bild von Festplatte löschen!' & @CRLF & 'mit [SHIFT]-Taste = ohne Sicherheitsabfrage!' & @CRLF & 'Tastenkürzel: [ALT] + [d] bzw. [SHIFT] + [ALT] + [d]')
$AccelKeys[14][0] = '!d'
$AccelKeys[14][1] = $ID_DelPic
$AccelKeys[15][0] = '+!d'
$AccelKeys[15][1] = $ID_DelPic
Global $aStatusIcons[2]
$aStatusIcons[0] = _WinAPI_LoadShell32Icon(221)
$aStatusIcons[1] = _WinAPI_LoadShell32Icon(219)
$hStatus = _GUICtrlStatusBar_Create($hGui)
_GUICtrlStatusBar_SetParts($hStatus, $aParts)
_GUICtrlStatusBar_SetIcon($hStatus, 0, $aStatusIcons[0])
GUISetAccelerators($AccelKeys, $hGui)
GUISetState(@SW_SHOW, $hGui)
_GDIPlus_GraphicsDrawRect($hGraphicBuff, $iPreviewLeft - 2, $iPreviewTop - 2, $iPreviewWidth + 3, $iPreviewHeight + 3)
_GDIPlus_GraphicsDrawRect($hGraphicBuff, $iPreviewLeft - 1, $iPreviewTop - 1, $iPreviewWidth + 1, $iPreviewHeight + 1)
_DrawBgColor($iPreviewLeft, $iPreviewTop, $iPreviewWidth, $iPreviewHeight)
_GDIPlus_GraphicsDrawImage($hGraphic, $hBitmap, 0, 0)
If $sSourcePath <> '' Then _SelectFileFormat()
GUIRegisterMsg($WM_PAINT, 'WM_PAINT')
Global $hFullscreenGui = GUICreate($sTitle & ' - Fullscreen', @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP)
Global $hFullscreenGraphic = _GDIPlus_GraphicsCreateFromHWND($hFullscreenGui)
_GDIPlus_GraphicsSetSmoothingMode($hFullscreenGraphic, 2)
Global $hFullscreenBitmap = _GDIPlus_BitmapCreateFromGraphics(@DesktopWidth, @DesktopHeight, $hFullscreenGraphic)
Global $hFullscreenGraphicBuff = _GDIPlus_ImageGetGraphicsContext($hFullscreenBitmap)
WinWaitClose($hGui)
Exit
Func _CloseGui()
GUIDelete($hGui)
EndFunc ;==>_CloseGui
Func _End()
_WinAPI_DestroyIcon($aStatusIcons[0])
_WinAPI_DestroyIcon($aStatusIcons[1])
For $i = 0 To UBound($ahBrush) - 1
_GDIPlus_BrushDispose($ahBrush[$i])
Next
If $hTexture <> 0 Then _GDIPlus_BrushDispose($hTexture)
If $hPreviewBitmap <> 0 Then _GDIPlus_BitmapDispose($hPreviewBitmap)
If $hBitmap <> 0 Then _GDIPlus_BitmapDispose($hBitmap)
If $hGraphicBuff <> 0 Then _GDIPlus_BitmapDispose($hGraphicBuff)
If $hGraphic <> 0 Then _GDIPlus_GraphicsDispose($hGraphic)
If $hFullscreenBitmap <> 0 Then _GDIPlus_BitmapDispose($hPreviewBitmap)
If $hFullscreenGraphicBuff <> 0 Then _GDIPlus_BitmapDispose($hFullscreenGraphicBuff)
If $hFullscreenGraphic <> 0 Then _GDIPlus_GraphicsDispose($hFullscreenGraphic)
_GDIPlus_Shutdown()
EndFunc ;==>_End
Func _PrimaryClick()
Local $aCursorInfo = GUIGetCursorInfo($hGui)
If @error Then Return
If $aCursorInfo[4] <> $ID_Dummy Then Return
Local $iDoubleClickSpeed = RegRead('HKCU\Control Panel\Mouse', 'DoubleClickSpeed')
If TimerDiff($iTimer) < $iDoubleClickSpeed Then
GUISetState(@SW_SHOW, $hFullscreenGui)
HotKeySet('{ESC}', '_CloseFullscreen')
_ShowFullscreenImage()
EndIf
$iTimer = TimerInit()
EndFunc ;==>_PrimaryClick
Func _CloseFullscreen()
HotKeySet('{ESC}')
GUISetState(@SW_HIDE, $hFullscreenGui)
EndFunc ;==>_CloseFullscreen
Func _ShowFullscreenImage()
Local $iVector, $iBitmapW, $iBitmapH, $iWidth, $iHeight, $aPixelFormat
$iBitmapW = _GDIPlus_ImageGetWidth($hPreviewBitmap)
$iWidth = $iBitmapW
$iBitmapH = _GDIPlus_ImageGetHeight($hPreviewBitmap)
$iHeight = $iBitmapH
$aPixelFormat = _GDIPlus_ImageGetPixelFormat($hPreviewBitmap)
If $iBitmapW > @DesktopWidth Or $iBitmapH > @DesktopHeight Then
If $iBitmapW >= $iBitmapH Then
$iBitmapH *= @DesktopWidth / $iBitmapW
$iBitmapW = @DesktopWidth
If $iBitmapH > @DesktopHeight Then
$iBitmapW *= @DesktopHeight / $iBitmapH
$iBitmapH = @DesktopHeight
EndIf
Else
$iBitmapW *= @DesktopHeight / $iBitmapH
$iBitmapH = @DesktopHeight
If $iBitmapW > @DesktopWidth Then
$iBitmapH *= @DesktopWidth / $iBitmapW
$iBitmapW = @DesktopWidth
EndIf
EndIf
EndIf
Switch $iBgColor
Case 0
_GDIPlus_GraphicsFillRect($hFullscreenGraphicBuff, 0, 0, @DesktopWidth, @DesktopHeight, $hTexture)
Case 1
_GDIPlus_GraphicsFillRect($hFullscreenGraphicBuff, 0, 0, @DesktopWidth, @DesktopHeight, $ahBrush[3])
Case 2
_GDIPlus_GraphicsFillRect($hFullscreenGraphicBuff, 0, 0, @DesktopWidth, @DesktopHeight, $ahBrush[2])
EndSwitch
_GDIPlus_GraphicsDrawImageRect($hFullscreenGraphicBuff, $hPreviewBitmap, @DesktopWidth / 2 - $iBitmapW / 2, @DesktopHeight / 2 - $iBitmapH / 2, $iBitmapW, $iBitmapH)
_GDIPlus_GraphicsDrawImage($hFullscreenGraphic, $hFullscreenBitmap, 0, 0)
EndFunc ;==>_ShowFullscreenImage
Func _CreatePatternTexture() ; Danke an UEZ (www.autoit.de)
Local $iStep = 8
Local $aResult = DllCall($ghGDIPDll, "uint", "GdipCreateBitmapFromScan0", "int", 2 * $iStep, "int", 2 * $iStep, "int", 0, "int", $GDIP_PXF32ARGB, "ptr", 0, "int*", 0)
If not IsArray($aResult) Then Return SetError(1) ;<======
Local $hPatternBitmap = $aResult[6]
Local $hCtxt = _GDIPlus_ImageGetGraphicsContext($hPatternBitmap)
_GDIPlus_GraphicsFillRect($hCtxt, 0, 0, $iStep, $iStep, $ahBrush[0])
_GDIPlus_GraphicsFillRect($hCtxt, $iStep, 0, $iStep, $iStep, $ahBrush[1])
_GDIPlus_GraphicsFillRect($hCtxt, 0, $iStep, $iStep, $iStep, $ahBrush[1])
_GDIPlus_GraphicsFillRect($hCtxt, $iStep, $iStep, $iStep, $iStep, $ahBrush[0])
$aResult = DllCall($ghGDIPDll, "uint", "GdipCreateTexture", "handle", $hPatternBitmap, "int", 0, "int*", 0)
Local $hTexture = $aResult[3]
_GDIPlus_GraphicsFillRect($hGraphicBuff, $iPreviewLeft, $iPreviewTop, $iPreviewWidth, $iPreviewHeight, $hTexture)
_GDIPlus_GraphicsDispose($hCtxt)
_GDIPlus_BitmapDispose($hPatternBitmap)
Return $hTexture
EndFunc ;==>_CreatePatternTexture
Func _DrawBgColor($iLeft, $iTop, $iWidth, $iHeight)
Switch $iBgColor
Case 0
_GDIPlus_GraphicsFillRect($hGraphicBuff, $iLeft, $iTop, $iWidth, $iHeight, $hTexture)
Case 1
_GDIPlus_GraphicsFillRect($hGraphicBuff, $iLeft, $iTop, $iWidth, $iHeight, $ahBrush[3])
Case 2
_GDIPlus_GraphicsFillRect($hGraphicBuff, $iLeft, $iTop, $iWidth, $iHeight, $ahBrush[2])
EndSwitch
EndFunc ;==>_DrawBgColor
Func _DeletePic()
If Not _IsPressed('10') Then
If MsgBox(256 + 36, $sTitle, StringFormat('Soll die folgende Datei:\n"%s"\nwirklich gelöscht werden?', $aPicFilenames[$iCount]), 0, $hGui) = 7 Then Return
EndIf
_GDIPlus_BitmapDispose($hPreviewBitmap)
If FileDelete($aPicFilenames[$iCount]) Then
_ArrayDelete($aPicFilenames, $iCount)
$aPicFilenames[0] = UBound($aPicFilenames) - 1
If $iCount > $aPicFilenames[0] Then $iCount = $aPicFilenames[0]
_CheckButtons()
_ShowStatus()
_LoadImage($aPicFilenames[$iCount])
_ShowImage()
Else
_LoadImage($aPicFilenames[$iCount])
_ShowImage()
_GUICtrlStatusBar_SetText($hStatus, 'Die Datei konnte nicht gelöscht werden! Schreibgeschützt?', 0)
_GUICtrlStatusBar_SetIcon($hStatus, 0, $aStatusIcons[1])
_PlayDefaultSystemSound('SystemNotification')
EndIf
EndFunc ;==>_DeletePic
Func _RotateBgColor()
$iBgColor += 1
If $iBgColor > 2 Then $iBgColor = 0
Switch $iBgColor
Case 0
GUICtrlSetImage($ID_BgColor, $sIconDir & 'pattern.ico')
Case 1
GUICtrlSetImage($ID_BgColor, $sIconDir & 'white.ico')
Case 2
GUICtrlSetImage($ID_BgColor, $sIconDir & 'black.ico')
EndSwitch
_ShowImage()
EndFunc ;==>_RotateBgColor
Func _CopyPic()
Local $Ctrl_ID = (@GUI_CtrlId - $aIDCopyButton[0]) / 3
Local $sDestFilename = $aDestPath[$Ctrl_ID] & StringRegExpReplace($aPicFilenames[$iCount], '.+\\(.+)', '$1')
If Not FileExists($aDestPath[$Ctrl_ID]) Then
_GUICtrlStatusBar_SetText($hStatus, 'Das Zielverzeichnis existiert nicht!', 0)
_GUICtrlStatusBar_SetIcon($hStatus, 0, $aStatusIcons[1])
_PlayDefaultSystemSound('SystemNotification')
Else
_GUICtrlStatusBar_SetIcon($hStatus, 0, $aStatusIcons[0])
_GUICtrlStatusBar_SetText($hStatus, 'Bitte Warten! Bild wird kopiert...', 0)
If Not $fOverwrite Then $sDestFilename = _GetUniqueFileName($sDestFilename)
If Not @error And FileCopy($aPicFilenames[$iCount], $sDestFilename, Number($fOverwrite)) Then
_GUICtrlStatusBar_SetText($hStatus, 'Das Bild wurde erfolgreich kopiert.', 0)
Else
_GUICtrlStatusBar_SetText($hStatus, 'Fehler beim kopieren!', 0)
_GUICtrlStatusBar_SetIcon($hStatus, 0, $aStatusIcons[1])
_PlayDefaultSystemSound('SystemNotification')
EndIf
EndIf
_CheckButtons()
EndFunc ;==>_CopyPic
Func _SelectSourceDir()
Local $sPath = FileSelectFolder('Bitte Quellverzeichnis auswählen', '', 6, $sSourcePath, $hGui)
If $sPath <> '' Then
If StringRight($sPath, 1) <> '\' Then $sPath &= '\'
$sSourcePath = $sPath
IniWrite($sInifile, 'Config', 'SourcePath', $sSourcePath)
GUICtrlSetData($ID_SourceDir, $sPath)
For $i = 0 To UBound($aIDCopyButton) - 1
If $aDestPath[$i] = $sPath Then
$aDestPath[$i] = ''
GUICtrlSetData($aIDDestPath[$i], '')
GUICtrlSetState($aIDCopyButton[$i], $GUI_DISABLE)
EndIf
Next
_ShowStatus()
_ReadDir()
EndIf
EndFunc ;==>_SelectSourceDir
Func _SelectAllFileFormat()
For $i = 1 To $aDecoders[0][0]
GUICtrlSetState($aIDPicFormat[$i - 1], $GUI_CHECKED)
Next
_SelectFileFormat()
EndFunc ;==>_SelectAllFileFormat
Func _SelectNoneFileFormat()
For $i = 1 To $aDecoders[0][0]
GUICtrlSetState($aIDPicFormat[$i - 1], $GUI_UNCHECKED)
Next
_SelectFileFormat()
EndFunc ;==>_SelectNoneFileFormat
Func _SelectFileFormat()
$sSaveFileFormat = ''
$sPattern = ''
For $i = 1 To $aDecoders[0][0]
If BitAND(GUICtrlRead($aIDPicFormat[$i - 1]), $GUI_CHECKED) Then
$sSaveFileFormat &= $aDecoders[$i][5] & '|'
$sPattern &= StringRegExpReplace(StringReplace($aDecoders[$i][6], '*.', ''), ';', '|') & '|'
EndIf
Next
$sPattern = StringTrimRight($sPattern, 1)
IniWrite($sInifile, 'Config', 'FileFormat', $sSaveFileFormat)
_ReadDir()
EndFunc ;==>_SelectFileFormat
Func _RecursiveCheck()
_ReadDir()
EndFunc ;==>_RecursiveCheck
Func _RenameCheck()
If @GUI_CtrlId = $ID_Overwrite Then
$fOverwrite = True
Else
$fOverwrite = False
EndIf
IniWrite($sInifile, 'Config', 'Overwrite', $fOverwrite)
EndFunc ;==>_RenameCheck
Func _ReadDir()
If $sPattern = '' Then
Global $aPicFilenames[1] = [0]
$iCount = 0
_ShowStatus()
WinSetTitle($hGui, '', StringFormat('%s v%0.3s', $sTitle, $sVersion))
_GDIPlus_GraphicsFillRect($hGraphicBuff, $iPreviewLeft, $iPreviewTop, $iPreviewWidth, $iPreviewHeight)
_GDIPlus_GraphicsDrawImage($hGraphic, $hBitmap, 0, 0)
_GUICtrlStatusBar_SetText($hStatus, 'Kein Dateiformat ausgewählt!', 0)
_GUICtrlStatusBar_SetText($hStatus, '', 2)
_GUICtrlStatusBar_SetIcon($hStatus, 0, $aStatusIcons[1])
_PlayDefaultSystemSound('SystemNotification')
Return
EndIf
$fRecursion = BitAND(GUICtrlRead($ID_RecursiveCheck), $GUI_CHECKED) = $GUI_CHECKED
IniWrite($sInifile, 'Config', 'Recursion', $fRecursion)
GUISetCursor(15)
_GUICtrlStatusBar_SetIcon($hStatus, 0, $aStatusIcons[0])
_GUICtrlStatusBar_SetText($hStatus, 'Bitte Warten! Verzeichnis wird eingelesen...', 0)
$aPicFilenames = _RecursiveFileListToArray($sSourcePath, '(?i).+\.(' & $sPattern & ')', 1, 1, $fRecursion)
GUISetCursor(2)
$iPreviewAngle = 0
If IsArray($aPicFilenames) And $aPicFilenames[0] > 0 Then
$iCount = 1
_ShowStatus()
_LoadImage($aPicFilenames[$iCount])
_ShowImage()
Else
Global $aPicFilenames[1] = [0]
$iCount = 0
_ShowStatus()
WinSetTitle($hGui, '', StringFormat('%s v%0.3s', $sTitle, $sVersion))
_LoadImage($aPicFilenames[$iCount])
_ShowImage()
_GUICtrlStatusBar_SetIcon($hStatus, 0, $aStatusIcons[1])
_GUICtrlStatusBar_SetText($hStatus, 'Keine Bilder im Quellverzeichnis vorhanden!', 0)
_GUICtrlStatusBar_SetText($hStatus, '', 2)
_PlayDefaultSystemSound('SystemNotification')
EndIf
EndFunc ;==>_ReadDir
Func _SelectDestDir()
Local $Ctrl_ID = (@GUI_CtrlId - $aIDDestPathSel[0]) / 3
Local $sPath = FileSelectFolder('Bitte Zielverzeichnis auswählen', '', 7, $aDestPath[$Ctrl_ID], $hGui)
If $sPath <> '' And StringRight($sPath, 1) <> '\' Then $sPath &= '\'
If $sPath <> '' And $sPath = $sSourcePath Then
_GUICtrlStatusBar_SetIcon($hStatus, 0, $aStatusIcons[1])
_GUICtrlStatusBar_SetText($hStatus, 'Das Zielverzeichnis darf nicht mit dem Quellverzeichnis übereinstimmen!', 0)
_PlayDefaultSystemSound('SystemNotification')
Return
EndIf
$aDestPath[$Ctrl_ID] = $sPath
IniWrite($sInifile, 'DestPath', $Ctrl_ID, $sPath)
GUICtrlSetData($aIDDestPath[$Ctrl_ID], $sPath)
_ShowStatus()
EndFunc ;==>_SelectDestDir
Func _ChangeStatus()
Local $iChange
Switch @GUI_CtrlId
Case $ID_Prev1
$iChange = -1
Case $ID_Prev10
$iChange = -10
Case $ID_Prev100
$iChange = -100
Case $ID_Next1
$iChange = 1
Case $ID_Next10
$iChange = 10
Case $ID_Next100
$iChange = 100
Case $ID_PicNum
$iChange = GUICtrlRead($ID_PicNum)
If $iChange < 1 Or $iChange > $aPicFilenames[0] Then
_GUICtrlStatusBar_SetIcon($hStatus, 0, $aStatusIcons[1])
_GUICtrlStatusBar_SetText($hStatus, 'Falsche Eingabe!', 0)
_PlayDefaultSystemSound('SystemNotification')
Return
Else
$iCount = 0
EndIf
EndSwitch
$iPreviewAngle = 0
$iCount += $iChange
If $iCount < 1 Then $iCount = 1
If $iCount > $aPicFilenames[0] Then $iCount = $aPicFilenames[0]
GUISetState(@SW_LOCK, $hGui)
_ShowStatus()
_LoadImage($aPicFilenames[$iCount])
_ShowImage()
GUISetState(@SW_UNLOCK, $hGui)
EndFunc ;==>_ChangeStatus
Func _LoadImage($sImgFile)
If $hPreviewBitmap <> 0 Then _GDIPlus_BitmapDispose($hPreviewBitmap)
$hPreviewBitmap = _GDIPlus_BitmapCreateFromFile($sImgFile)
If $hPreviewBitmap = 0 Then
_GDIPlus_GraphicsFillRect($hGraphicBuff, $iPreviewLeft, $iPreviewTop, $iPreviewWidth, $iPreviewHeight)
_GDIPlus_GraphicsDrawImage($hGraphic, $hBitmap, 0, 0)
_GDIPlus_BitmapDispose($hPreviewBitmap)
Return
EndIf
EndFunc ;==>_LoadImage
Func _ShowImage()
If $hPreviewBitmap = 0 Then
_DrawBgColor($iPreviewLeft, $iPreviewTop, $iPreviewWidth, $iPreviewHeight)
_GDIPlus_GraphicsDrawImage($hGraphic, $hBitmap, 0, 0)
Return
EndIf
Local $iVector, $iBitmapW, $iBitmapH, $iWidth, $iHeight, $aPixelFormat
If $iPreviewAngle <> 0 Then _GDIplus_ImageRotateFlip($hPreviewBitmap, $iPreviewAngle)
$iBitmapW = _GDIPlus_ImageGetWidth($hPreviewBitmap)
$iWidth = $iBitmapW
$iBitmapH = _GDIPlus_ImageGetHeight($hPreviewBitmap)
$iHeight = $iBitmapH
$aPixelFormat = _GDIPlus_ImageGetPixelFormat($hPreviewBitmap)
If $iBitmapW > $iPreviewWidth Or $iBitmapH > $iPreviewHeight Then
If $iBitmapW >= $iBitmapH Then
$iBitmapH *= $iPreviewWidth / $iBitmapW
$iBitmapW = $iPreviewWidth
If $iBitmapH > $iPreviewHeight Then
$iBitmapW *= $iPreviewHeight / $iBitmapH
$iBitmapH = $iPreviewHeight
EndIf
Else
$iBitmapW *= $iPreviewHeight / $iBitmapH
$iBitmapH = $iPreviewHeight
If $iBitmapW > $iPreviewWidth Then
$iBitmapH *= $iPreviewWidth / $iBitmapW
$iBitmapW = $iPreviewWidth
EndIf
EndIf
EndIf
_GUICtrlStatusBar_SetIcon($hStatus, 0, $aStatusIcons[0])
_GUICtrlStatusBar_SetText($hStatus, StringFormat('Format: %i x %i px , %i Bit', $iWidth, $iHeight, $aPixelFormat[1]), 2)
WinSetTitle($hGui, '', StringFormat('%s v%0.3s %i x %i (%.1f %%)', $sTitle, $sVersion, $iBitmapW, $iBitmapH, $iBitmapW / $iWidth * 100))
_DrawBgColor($iPreviewLeft, $iPreviewTop, $iPreviewWidth, $iPreviewHeight)
_GDIPlus_GraphicsDrawImageRect($hGraphicBuff, $hPreviewBitmap, $iPreviewLeft + $iPreviewWidth / 2 - $iBitmapW / 2, $iPreviewTop + $iPreviewHeight / 2 - $iBitmapH / 2, $iBitmapW, $iBitmapH)
_GDIPlus_GraphicsDrawImage($hGraphic, $hBitmap, 0, 0)
EndFunc ;==>_ShowImage
Func WM_PAINT($hWnd, $Msg, $wParam, $lParam)
_WinAPI_RedrawWindow($hGui, 0, 0, $RDW_UPDATENOW)
_GDIPlus_GraphicsDrawImage($hGraphic, $hBitmap, 0, 0)
_WinAPI_RedrawWindow($hGui, 0, 0, $RDW_VALIDATE)
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_PAINT
Func _RotateRight()
$iPreviewAngle = 1
_ShowImage()
$iPreviewAngle = 0
EndFunc ;==>_RotateRight
Func _ShowStatus()
If IsArray($aPicFilenames) Then
_GUICtrlStatusBar_SetIcon($hStatus, 0, $aStatusIcons[0])
_GUICtrlStatusBar_SetText($hStatus, (StringReplace($aPicFilenames[$iCount], $sSourcePath, '', 1)), 0)
_GUICtrlStatusBar_SetText($hStatus, StringFormat(' Bild %i von %i', $iCount, $aPicFilenames[0]), 1)
GUICtrlSetData($ID_PicNum, $iCount)
EndIf
_CheckButtons()
EndFunc ;==>_ShowStatus
Func _CheckButtons()
If $aPicFilenames[0] > 0 Then
For $i = 0 To UBound($aIDCopyButton) - 1
If $aDestPath[$i] <> '' And FileExists($aDestPath[$i]) Then
GUICtrlSetState($aIDCopyButton[$i], $GUI_ENABLE)
Else
GUICtrlSetState($aIDCopyButton[$i], $GUI_DISABLE)
EndIf
Next
If BitAND(GUICtrlGetState($ID_DelPic), $GUI_DISABLE) Then GUICtrlSetState($ID_DelPic, $GUI_ENABLE)
If BitAND(GUICtrlGetState($ID_ROT), $GUI_DISABLE) Then GUICtrlSetState($ID_ROT, $GUI_ENABLE)
If $iCount > 100 Then
If BitAND(GUICtrlGetState($ID_Prev100), $GUI_DISABLE) Then GUICtrlSetState($ID_Prev100, $GUI_ENABLE)
Else
If BitAND(GUICtrlGetState($ID_Prev100), $GUI_ENABLE) Then GUICtrlSetState($ID_Prev100, $GUI_DISABLE)
EndIf
If $iCount > 10 Then
If BitAND(GUICtrlGetState($ID_Prev10), $GUI_DISABLE) Then GUICtrlSetState($ID_Prev10, $GUI_ENABLE)
Else
If BitAND(GUICtrlGetState($ID_Prev10), $GUI_ENABLE) Then GUICtrlSetState($ID_Prev10, $GUI_DISABLE)
EndIf
If $iCount > 1 Then
If BitAND(GUICtrlGetState($ID_Prev1), $GUI_DISABLE) Then GUICtrlSetState($ID_Prev1, $GUI_ENABLE)
Else
If BitAND(GUICtrlGetState($ID_Prev1), $GUI_ENABLE) Then GUICtrlSetState($ID_Prev1, $GUI_DISABLE)
EndIf
If $iCount < $aPicFilenames[0] Then
If BitAND(GUICtrlGetState($ID_Next1), $GUI_DISABLE) Then GUICtrlSetState($ID_Next1, $GUI_ENABLE)
Else
If BitAND(GUICtrlGetState($ID_Next1), $GUI_ENABLE) Then GUICtrlSetState($ID_Next1, $GUI_DISABLE)
EndIf
If $iCount <= $aPicFilenames[0] - 10 Then
If BitAND(GUICtrlGetState($ID_Next10), $GUI_DISABLE) Then GUICtrlSetState($ID_Next10, $GUI_ENABLE)
Else
If BitAND(GUICtrlGetState($ID_Next10), $GUI_ENABLE) Then GUICtrlSetState($ID_Next10, $GUI_DISABLE)
EndIf
If $iCount <= $aPicFilenames[0] - 100 Then
If BitAND(GUICtrlGetState($ID_Next100), $GUI_DISABLE) Then GUICtrlSetState($ID_Next100, $GUI_ENABLE)
Else
If BitAND(GUICtrlGetState($ID_Next100), $GUI_ENABLE) Then GUICtrlSetState($ID_Next100, $GUI_DISABLE)
EndIf
Else
For $i = 0 To UBound($aIDCopyButton) - 1
If BitAND(GUICtrlGetState($aIDCopyButton[$i]), $GUI_ENABLE) Then GUICtrlSetState($aIDCopyButton[$i], $GUI_DISABLE)
Next
If BitAND(GUICtrlGetState($ID_DelPic), $GUI_ENABLE) Then GUICtrlSetState($ID_DelPic, $GUI_DISABLE)
If BitAND(GUICtrlGetState($ID_ROT), $GUI_ENABLE) Then GUICtrlSetState($ID_ROT, $GUI_DISABLE)
If BitAND(GUICtrlGetState($ID_Prev100), $GUI_ENABLE) Then GUICtrlSetState($ID_Prev100, $GUI_DISABLE)
If BitAND(GUICtrlGetState($ID_Prev10), $GUI_ENABLE) Then GUICtrlSetState($ID_Prev10, $GUI_DISABLE)
If BitAND(GUICtrlGetState($ID_Prev1), $GUI_ENABLE) Then GUICtrlSetState($ID_Prev1, $GUI_DISABLE)
If BitAND(GUICtrlGetState($ID_Next1), $GUI_ENABLE) Then GUICtrlSetState($ID_Next1, $GUI_DISABLE)
If BitAND(GUICtrlGetState($ID_Next10), $GUI_ENABLE) Then GUICtrlSetState($ID_Next10, $GUI_DISABLE)
If BitAND(GUICtrlGetState($ID_Next100), $GUI_ENABLE) Then GUICtrlSetState($ID_Next100, $GUI_DISABLE)
EndIf
EndFunc ;==>_CheckButtons
;===============================================================================
; Function Name: _GetUniqueFileName($sPath)
; Description:: Wenn der Dateiname bereits existiert wird ein Zähler
; in Form von: "_(1)" an den Dateinamen angehängt.
; Parameter(s): $sPath = kompletter Pfad der Datei
; Requirement(s): -
; Return Value(s): bei Erfolg = der (neue) Dateiname
; bei Fehler wird @error = 1 (Pfad falsch angegeben)
; Author(s): Oscar (www.autoit.de)
;===============================================================================
Func _GetUniqueFileName($sPath)
Local $aPath, $sNumber = '', $iCount = 0
$aPath = StringRegExp($sPath, '(.+\\)(.+?)(?:_\(\d*\))*(\..+)', 3)
If @error Then Return SetError(1, 0, 0)
While FileExists($aPath[0] & $aPath[1] & $sNumber & $aPath[2])
$iCount += 1
$sNumber = '_(' & $iCount & ')'
WEnd
Return $aPath[0] & $aPath[1] & $sNumber & $aPath[2]
EndFunc ;==>_GetUniqueFileName
;===============================================================================
; Function Name: _RecursiveFileListToArray($sPath[, $sPattern][, $iFlag][, $iFormat][, $fRecursion][, $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
; $fRecursion = Verzeichnisse rekursiv durchsuchen
; False = Nein
; True = 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 (www.autoit.de)
; Anregungen von: bernd670 (www.autoit.de)
; und: AspirinJunkie (www.autoit.de)
;===============================================================================
Func _RecursiveFileListToArray($sPath, $sPattern = '', $iFlag = 0, $iFormat = 1, $fRecursion = True, $sDelim = @CRLF, $fOpenDLL = True)
Local $hSearch, $sFile, $sReturn = '', $aD
Local Static $hDll
If StringRight($sPath, 1) <> '\' Then $sPath &= '\'
$hSearch = FileFindFirstFile($sPath & '*')
If @error Or $hSearch = -1 Then Return SetError(1, 0, $sReturn)
If $fOpenDLL Then $hDll = DllOpen('kernel32.dll')
While True
$sFile = FileFindNextFile($hSearch)
If @error Then ExitLoop
If @extended Then
$aD = DllCall($hDll, 'dword', 'GetFileAttributesW', 'wstr', $sPath & $sFile)
If @error Or BitAND($aD[0], 0x400) Then ContinueLoop
If StringRegExp($sPath & $sFile, $sPattern) And ($iFlag = 0 Or $iFlag = 2) Then $sReturn &= $sPath & $sFile & '\' & $sDelim
If $fRecursion Then $sReturn &= _RecursiveFileListToArray($sPath & $sFile & '\', $sPattern, $iFlag, 0, True, $sDelim, False)
ContinueLoop
EndIf
If StringRegExp($sFile, $sPattern) And ($iFlag = 0 Or $iFlag = 1) Then $sReturn &= $sPath & $sFile & $sDelim
WEnd
FileClose($hSearch)
If $fOpenDLL Then DllClose($hDll)
If $iFormat And $sReturn = '' Then Return SetError(0, 1, StringSplit($sReturn, '', $iFormat))
If $iFormat Then Return SetError(0, 2, StringSplit(StringTrimRight($sReturn, StringLen($sDelim)), $sDelim, $iFormat))
Return $sReturn
EndFunc ;==>_RecursiveFileListToArray
; #FUNCTION# ====================================================================================================================
; Name...........: _PlayDefaultSystemSound()
; Description ...: Spielt einen Systemklang, welcher in der Registry definiert ist.
; Syntax.........: _PlayDefaultSystemSound($sSoundName, $iWait = 0)
; Parameters ....: $sSoundName - Name des SystemSound's
; | Default - Standardton Warnsignal / Default Beep
; | CriticalBatteryAlarm - Alarm bei kritischem Batteriestand / when battery is critical
; | DeviceConnect - Geräteanschluß / when a device is connect
; | DeviceDisconnect - Gerätetrennung / when a device is disconnect
; | DeviceFail - Geräteanschluß fehlgeschlagen / when a deviceconnect is fail
; | LowBatteryAlarm - Alarm bei niedrigem Batteriestand / when battery is low
; | MailBeep - Posteingangsbenachrichtigung / when email is received
; | SystemAsterisk - Stern / Asterisk
; | SystemExclamation - Hinweis / when windows shows a warning
; | SystemExit - Windows beenden / when Windows shuts down
; | SystemHand - Kritischer Abbruch / when a critical stop occurs
; | SystemNotification - Sprechblase / when a critical stop occurs
; | SystemStart - Windows starten / when Windows starts up
; | WindowsLogoff - beim Windows abmelden / when logging off Windows
; | WindowsLogon - beim Windows anmelden / when logging on Windows
; | EmptyRecycleBin - Löschen des Papierkorbs / when recycle bin is emptied
; | Navigating - Browser Klick / navigating in browser
; $iWait - Warten bis SoundPlay beendet? (0 = nein / 1 = ja)
; Return values .: -----
; Author ........: funkey (AutoIt.de)
; ===============================================================================================================================
Func _PlayDefaultSystemSound($sSoundName, $iWait = 0) ; funkey
Local $sKey = 'HKEY_CURRENT_USER\AppEvents\Schemes\Apps\.Default'
If $sSoundName = 'EmptyRecycleBin' Or $sSoundName = 'Navigating' Then $sKey = 'HKEY_CURRENT_USER\AppEvents\Schemes\Apps\Explorer'
Local $sFile = StringReplace(RegRead($sKey & '\' & $sSoundName & '\.Default', ''), '%SystemRoot%', @WindowsDir)
If $sFile = "" Then
SoundPlay(StringReplace(RegRead($sKey & '\.Default\.Default', ''), '%SystemRoot%', @WindowsDir), $iWait)
Else
SoundPlay($sFile, $iWait)
EndIf
EndFunc ;==>_PlayDefaultSystemSound
;Code below was generated by: 'File to Base64 String' Code Generator v1.12 Build 2013-03-25
Func _deleteico($bSaveBinary = False, $sSavePath = @ScriptDir)
Local $deleteico
$deleteico &= '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'
$deleteico &= 'GeUBsA+p/xwcS/8bABsi/x4aG/85AC83/0KRoP8+AOj+/0jq/f9rAJKq/21wc/9gAMbO/2DB9/9kDH+i/wf4B9Klbv8AqoJ+/35miv8gUlHM/zDgGiE3IP//Eir/MAj6/wAPJO3/TVTK/0BdXtf/FSdwCBkA7f8XHrn/MzQAZf9JSVP/XlcAXf9jZG3/X7sAy/9ptvf/d3UArf9xfX//YsIAyf9giev/ZlQGlv8H8Af8/Pz/6ADn7v+cfWX/eABonP9mben/XsBu//9KXP8wgfA9ATAIITX4/1dcuwD/wqqS/8yplQD/g3jJ/yk46gD/ESX6/x4qygD/Li9v/0tJXQD/WFRY/15ogQD/bWjg/3ZxrQD/bnx9/2KHxAD/Y1Th/4FkigH+B3JaTGPKytsA/5ibyv9zg9oA/4SO+P+Fkf8A/3SC/P9dbfxI/0dacFFM87AjtwD/w6OG/+i3cwD/4rh1/9izhgD/k4Oz/0ZP4gD/OEj8/zpF3gD/NzeH/0ZCXAD/VUxX/2FQsAD/a2yS/2RmdQD/VkHX/4JhwhD/vJ5x+gdHRW4AIl9ahq6IjduA/4iR8v+UnzBAAJ/8/4mX+v+BAI38/3B+//9eAGfn/4Bzmv/KAKR3/+W0bf/jALVv/+S2b//iALdv/+O2ev+oAI+Z/2Znxv9fAGv2/11q7v8+AECb/zc0W/9GAD9l/1FTav9YAFKn/3tgxP/VQKqF/9WtYvoHdAB3poZzfOv0bwB99/+Cjvr/jgCZ+v+Rm/r/iQCV+v+Cj/3/fgB/2P+skpf/1wCpbP/hsmj/4kCza//hs2o3ALQAav/mtnD/zqcAf/+ShKn/foEA5P+AivX/XV8AuP9GQG//bF4Adv+oh5r/2K0AdP/zwmf/y6IB+weZm7pgn6f4APFoeff/bHn1AP98ivf/hJL6AP+Kk///mI27AP++mnj/2qxpEP/gsGUwAGT/3+SwYzIA4LEwAPAAcQES4TAA5bKwALFu/wDLpIT/m4zE/wCOk/D/dnjf/wBiV5z/nHto/wDYqmD/7Llm/wzHnwAl+Ae/wuALAK+kro64vvv/CIaS9zIYoaHm/wCpkon/1qdl/wDbql7/3a1d/2Derlz/3nEAPADdoK1e/96scACs8wEA365f/9mqZ/8Aw52C/6eUuP+AgX/i/1tbzrAnAJH/v5Vi/8WbBlb/L/g326lY/+MAr1r/3atZ/95RMADdq1jwBVewAFgw/9+sWTYAsQHerB0wAa3wAXICtQFa/+EQrlj/2/ACr41ZwP+1k1z/4PAAMQSA67VZ/8WaUf8HAfgH4apT/+mxVhD/4qxUMABT/+JArVT/461TNgDkZq60AHQA5K9wArAA4jCtUv/ksAIxAOqyAFH/1KVX/15mAIn/enmF/+awAFP/5a9S//C3YFX/yJpM/wf4B/EAtFT/2aVP/9eEo04wAE3/16UwAAFxAKNM/9ikS/8k2KawAKZLMgDYpABN/9mkTv/WoxXxAErwAE7yANqnSgD/5KtH/2lwlBD/WnCqsANP/90AqUn/3ahO/+78tFD/B/gHDwAPAA8ADwD/DwAPAP8HDwAPAA8ADwAPAHsPAPoHNDEIPwA/AD8AJLAQR1l6XzYwNIH/AP//gf/8/wD/CvgIBvACBoAAAAAHNQYNABUn'
$deleteico = _Base64Decode($deleteico)
Local $tSource = DllStructCreate('byte[' & BinaryLen($deleteico) & ']')
DllStructSetData($tSource, 1, $deleteico)
Local $tDecompress
_WinAPI_LZNTDecompress($tSource, $tDecompress, 4286)
$tSource = 0
Local $bString = Binary(DllStructGetData($tDecompress, 1))
If $bSaveBinary Then
Local $hFile = FileOpen($sSavePath & "\delete.ico", 18)
FileWrite($hFile, $bString)
FileClose($hFile)
EndIf
Return $bString
EndFunc ;==>_deleteico
Func _rotateico($bSaveBinary = False, $sSavePath = @ScriptDir)
Local $rotateico
$rotateico &= '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'
$rotateico &= 'AA8ABQANuINC4P/kx5v/8Qi/Bw8AHw8ADwAPAA8A9TG2g0MGsf8eBQBdsAIAOgD///D///8C4AAGwA///4ADsP//AAEEBgA2gAAGAsAABuAA/gMAwHT+AAIG4AE0AA4ABhAlAgb8Aw8PAgQDAwGAAA8AB/4PAAVNlwRJAk0AD/AAF/8HAAMBAHE='
$rotateico = _Base64Decode($rotateico)
Local $tSource = DllStructCreate('byte[' & BinaryLen($rotateico) & ']')
DllStructSetData($tSource, 1, $rotateico)
Local $tDecompress
_WinAPI_LZNTDecompress($tSource, $tDecompress, 4286)
$tSource = 0
Local $bString = Binary(DllStructGetData($tDecompress, 1))
If $bSaveBinary Then
Local $hFile = FileOpen($sSavePath & "\rotate.ico", 18)
FileWrite($hFile, $bString)
FileClose($hFile)
EndIf
Return $bString
EndFunc ;==>_rotateico
Func _patternico($bSaveBinary = False, $sSavePath = @ScriptDir)
Local $patternico
$patternico &= 'ebFIAAABABAgIAFwIAAAqBAAABYAAMwAKAAYAJAAQAAYAVxhFQDMZmb/fQYCh8z+zG4HhkGBBfEB/3//P/8///8z/z//AP8//wH/AP8ffwD/fwB/AP8f/wD/AP8f/x9/AP9/AP8f/xX/AP8A/x9/AH8A/38A/x//AP8A/x//H38AfwD//x//Ff8AfwB/AP8P/w8/AP8/AD8APwA/AD8A/w9/AH8A/38AfwB/AH8A/w8/AD8APwD/PwA/AD8A/w9/AH8AfwB/AP9/AH8A/w8/AD8APwA/AD8A/z8A/w//CX8AfwB/AH8AfwD//w+/CT8APwA/AD8APwD/D///CX8AfwB/AH8AfwD/D/8P/z8APwA/AD8APwD/D/8PfwD/fwB/AH8AfwD/D/8PPwA/AP8/AD8APwA/AP8PfwB/AH8A/38AfwB/AP8PPwA/AD8APwD/PwA/AP8P/wl/AH8AfwB/AP9/AP8PPwA/AD8APwA/AD8AH/4PPwA/AD8ANQASsFBm/8xmNzAAAABVGFVVVHEOAQA='
$patternico = _Base64Decode($patternico)
Local $tSource = DllStructCreate('byte[' & BinaryLen($patternico) & ']')
DllStructSetData($tSource, 1, $patternico)
Local $tDecompress
_WinAPI_LZNTDecompress($tSource, $tDecompress, 4286)
$tSource = 0
Local $bString = Binary(DllStructGetData($tDecompress, 1))
If $bSaveBinary Then
Local $hFile = FileOpen($sSavePath & "\pattern.ico", 18)
FileWrite($hFile, $bString)
FileClose($hFile)
EndIf
Return $bString
EndFunc ;==>_patternico
Func _whiteico($bSaveBinary = False, $sSavePath = @ScriptDir)
Local $whiteico
$whiteico &= 'cLFIAAABABAgIAFwIAAAqBAAABYAAMwAKAAYAJAAQAAYAVzhFQDMZmb/fQZ1AP8///8//x//Hz8A/x8/AP8fPwD/HwD/Dx8AHwAfAP8PHwAfAP//D/8PHwAfAP8PHwAfAB8A//8PHwAfAB8A/w8fAB8A/w///w8fAB8A/w8fAB8ADwAPAP//B/8HDwAPAA8ADwAPAP8H//8HDwAPAA8ADwAPAA8A/wf/DwAPAA8ADwAPAA8A/wcPAP8PAA8ADwAPAA8A/wcPAA8A/w8ADwAPAA8A/wcPAA8ADwD/DwAPAA8A/wcPAA8ADwAPAP8PAA8A/wcPAA8ADwAPAA8A/w8A/wf/Bw8ADwAPAA8ADwD//wf/Bw8ADwAPAA8ADwD/B///Bw8ADwAPAA8ADwAPAP8H/w8ADwAPAA8ADwAPAP8HDwD/DwAPAA8ADwAPAP8HDwAPAP8PAA8ADwAPAP8HDwAPAA8A/w8ADwAPAP0HPwA/AD8ANQAJsFBm/8xmNzAAfAA='
$whiteico = _Base64Decode($whiteico)
Local $tSource = DllStructCreate('byte[' & BinaryLen($whiteico) & ']')
DllStructSetData($tSource, 1, $whiteico)
Local $tDecompress
_WinAPI_LZNTDecompress($tSource, $tDecompress, 4286)
$tSource = 0
Local $bString = Binary(DllStructGetData($tDecompress, 1))
If $bSaveBinary Then
Local $hFile = FileOpen($sSavePath & "\white.ico", 18)
FileWrite($hFile, $bString)
FileClose($hFile)
EndIf
Return $bString
EndFunc ;==>_whiteico
Func _blackico($bSaveBinary = False, $sSavePath = @ScriptDir)
Local $blackico
$blackico &= 'c7FIAAABABAgIAFwIAAAqBAAABYAAMwAKAAYAJAAQAAYAVzhFQDMZmb/fQYAhnID//8//z//H/8f/xL/H/8A/x///wB/AP8PfwB/AH8A/w9/AP9/AP8P/w9/AH8A/w9/AH8A/38A/w9/AH8AfwD/D38AfwD//w//D38AfwD/D38FfwA/AP8/AP8H/wc/AD8APwA/AD8A//8H/wc/AD8APwA/AD8APwD//wc/AD8APwA/AD8APwD/B/8/AD8APwA/AD8APwD/Bz8A/z8APwA/AD8APwD/Bz8APwD/PwA/AD8APwD/B78BPwA/AP8/AD8APwD/B78BPwA/AD8A/z8APwD/B/8HPwA/AD8APwD/PwD/B/8HPwA/AD8APwA/AP//B/8HPwA/AD8APwA/AD8A//8HPwA/AD8APwA/AD8A/wf/PwA/AD8APwA/AD8A/wc/AP8/AD8APwA/AD8A/wc/AD8A/z8APwA/AD8A/Qc/AD8APwABNQAJsFBm/8xmNzAAfAA='
$blackico = _Base64Decode($blackico)
Local $tSource = DllStructCreate('byte[' & BinaryLen($blackico) & ']')
DllStructSetData($tSource, 1, $blackico)
Local $tDecompress
_WinAPI_LZNTDecompress($tSource, $tDecompress, 4286)
$tSource = 0
Local $bString = Binary(DllStructGetData($tDecompress, 1))
If $bSaveBinary Then
Local $hFile = FileOpen($sSavePath & "\black.ico", 18)
FileWrite($hFile, $bString)
FileClose($hFile)
EndIf
Return $bString
EndFunc ;==>_blackico
Func _progico($bSaveBinary = False, $sSavePath = @ScriptDir)
Local $progico
$progico &= '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'
$progico &= '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'
$progico &= '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'
$progico &= 'gABHpaKem7CtqgCxqqejlJmVjwBfko+IQJyZlQAuioeCF3Jvav4EH28PAA8ADwAPAA8ADwB/DwAPAA8ADwAPAA8AeJr8QB9B/+APQQCUQbDgAABBIAE0AAc/AMc/AD8AMQAf/0EgmDIA/XGYEDAAEZh/mA8ADwAHABBOTU0CMJcqNzZ0NUbgAAkfAg8AsIoeAGxsalV9e3qcAJWSkdy1sbD9QuHwRFJPS9DgATQHYgkIALCIFHNycUUAgX99i4KAfdAAhoJ/9qilov8IxcLAcIbF/6qoAqXwR8j/hX95/7A7NC/zIAMhDgRwhoJVsIvDpaOh7/FkKNTRzvJHmnCDkIyIiP+wMHOOi4kyhQKjMF2Efnn/SUIgO/8DAwNxigqzOLCv8PFZ8UExcIJ8QHj/mpWS/7FtpGFwc5iTj/9wljKDpRCin/+IMHlNRj4BtkC3tbP23dvbAP/S0dH/j4l+AP+nn5L/jIiFFXB/l7JMk7BefHd0AP8MCQf/qaalwTAChf9VTUX2AzBqAvYxN56Qf//BcgAo/7yMXP+UiAfwVHCbcX+sqaX/ggB9ev8RDgv/pgGwZpmVkf9kXlgT9gPwQ/bXcE6jhmkA/zUdF/9MQzkQ/4V1YvBFu//XENTT/7fxV398/wAOCgj/nZuZ/zibl5EwaLdeMFX23gDd3P+qopn/mACOhf85Lif/loyTkHBR8Ubf/8IwFYCEgn//BwUDcIngl/+blpOwYrdo8QsI8fDu8l6trar/orGwStLOzbBm2/BJCO3/yDCEiYeF/4gKCAewTKj/onClgm24bLq4tvbt8JVtsUfWMFjxY+TwgjFhfFxxaHIQ8VgxU9cwGqswpqL/d/Bw9g/DwQD21dPS/97b2gWwavCgL/7/+Pf3FP/isFJ8cG3LyscRcIC3/9AwIeXk4kT/yHANmpSP9gOSGI6L9rFxsSPQzcujch/xcujn5bB73/J7DuawVfBQMKWq/8K/QL36s7CssnZamWKWoAO8/tgwXnFr7gHwnOLh3/7NyscA6r+8udC2sq8At5yYk4inpZ8AZqyqpEmZlpAOG7BSNk8wUgSLh4EgKailoW6wHmiXAJONO5qYkyCE+IF8DF81DwAPAA8ADwABeEiHrEH8AaxB2MAArDBEMAADPwA/ACCsQQH/rHBGrEE='
$progico = _Base64Decode($progico)
Local $tSource = DllStructCreate('byte[' & BinaryLen($progico) & ']')
DllStructSetData($tSource, 1, $progico)
Local $tDecompress
_WinAPI_LZNTDecompress($tSource, $tDecompress, 7886)
$tSource = 0
Local $bString = Binary(DllStructGetData($tDecompress, 1))
If $bSaveBinary Then
Local $hFile = FileOpen($sSavePath & "\prog.ico", 18)
FileWrite($hFile, $bString)
FileClose($hFile)
EndIf
Return $bString
EndFunc ;==>_progico
Func _Base64Decode($sB64String)
Local $struct = DllStructCreate("int")
Local $a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", "str", $sB64String, "int", 0, "int", 1, "ptr", 0, "ptr", DllStructGetPtr($struct, 1), "ptr", 0, "ptr", 0)
If @error Or Not $a_Call[0] Then Return SetError(1, 0, "")
Local $a = DllStructCreate("byte[" & DllStructGetData($struct, 1) & "]")
$a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", "str", $sB64String, "int", 0, "int", 1, "ptr", DllStructGetPtr($a), "ptr", DllStructGetPtr($struct, 1), "ptr", 0, "ptr", 0)
If @error Or Not $a_Call[0] Then Return SetError(2, 0, "")
Return DllStructGetData($a, 1)
EndFunc ;==>_Base64Decode
Func _WinAPI_LZNTDecompress(ByRef $tInput, ByRef $tOutput, $iBufferSize = 0x800000)
Local $tBuffer, $ret
$tOutput = 0
$tBuffer = DllStructCreate('byte[' & $iBufferSize & ']')
If @error Then Return SetError(1, 0, 0)
$ret = DllCall('ntdll.dll', 'uint', 'RtlDecompressBuffer', 'ushort', 0x0002, 'ptr', DllStructGetPtr($tBuffer), 'ulong', $iBufferSize, 'ptr', DllStructGetPtr($tInput), 'ulong', DllStructGetSize($tInput), 'ulong*', 0)
If @error Then Return SetError(2, 0, 0)
If $ret[0] Then Return SetError(3, $ret[0], 0)
$tOutput = DllStructCreate('byte[' & $ret[6] & ']')
If Not _WinAPI_MoveMemory(DllStructGetPtr($tOutput), DllStructGetPtr($tBuffer), $ret[6]) Then
$tOutput = 0
Return SetError(4, 0, 0)
EndIf
Return $ret[6]
EndFunc ;==>_WinAPI_LZNTDecompress
Alles anzeigen
läßt sich zwar kompilieren aber das Programm wird kurz nach Start geschlossen. @Oscar bzw. @UEZ die Func _CreatePatternTexture() verursacht imho dieses Problem.
Ich habe das Skript mit Hilfe von Melba23 & Co. weiterentwickelt:
;https://autoit.de/index.php/Thread/84279-Unterschiedliche-Textfarben-innerhalb-einer-ListView/?postID=674295#post674295
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
#include <array.au3>
#include <ListViewConstants.au3>
#include <StructureConstants.au3>
#include <WindowsConstants.au3>
#include <FontConstants.au3>
Global $iDllGDI = DllOpen("gdi32.dll")
$aColBK = IniReadSection(@ScriptDir & "\lv_format.ini", "ColBKColor")
_ArrayDelete($aColBK, 0)
;_ArrayDisplay($aColBK)
$aRowBK = IniReadSection(@ScriptDir & "\lv_format.ini", "RowBKColor")
_ArrayDelete($aRowBK, 0)
;_ArrayDisplay($aColBK)
$aColText = IniReadSection(@ScriptDir & "\lv_format.ini", "ColTextColor")
_ArrayDelete($aColText, 0)
;_ArrayDisplay($aColBK)
$aRowText = IniReadSection(@ScriptDir & "\lv_format.ini", "RowTextColor")
_ArrayDelete($aRowText, 0)
;_ArrayDisplay($aRowText)
Global $bColorHeader = True ;wenn true werden auch die Spaltenüberschriften mit eingefärbt.
$GUI = GUICreate("Listview Farbig", 1024, 300, 0, 0) ;<==== Breite geändert
$cListView = GUICtrlCreateListView("", 2, 2, 1020, 294, -1, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT)) ;<==== Breite geändert
;_GUICtrlListView_SetExtendedListViewStyle($cListView, $LVS_EX_FULLROWSELECT) ; BitOR($LVS_EX_DOUBLEBUFFER, $LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT))
$hListView = GUICtrlGetHandle($cListView)
For $i = 1 To 31
_GUICtrlListView_InsertColumn($hListView, $i - 1, $i, 25)
_GUICtrlListView_SetColumnWidth($hListView, $i - 1, 32) ;<==== eingefügt für Spaltenbreite
Next
;get handle to child SysHeader32 control of ListView
Global $hHeader = HWnd(GUICtrlSendMsg($cListView, $LVM_GETHEADER, 0, 0))
;Turn off theme for header
DllCall("uxtheme.dll", "int", "SetWindowTheme", "hwnd", $hHeader, "wstr", "", "wstr", "")
;subclass ListView to get at NM_CUSTOMDRAW notification sent to ListView
;Global $wProcNew = DllCallbackRegister("_LVWndProc", "ptr", "hwnd;uint;wparam;lparam")
;Global $wProcOld = _WinAPI_SetWindowLong($hListView, $GWL_WNDPROC, DllCallbackGetPtr($wProcNew))
;Optional: Flat Header - remove header 3D button effect
Global $iStyle = _WinAPI_GetWindowLong($hHeader, $GWL_STYLE)
_WinAPI_SetWindowLong($hHeader, $GWL_STYLE, BitOR($iStyle, $HDS_FLAT))
; Get the font of the Header control (credit KaFu)
Local $hDC = _WinAPI_GetDC($hHeader)
Local $hFont = _SendMessage($hHeader, $WM_GETFONT)
Local $hObject = _WinAPI_SelectObject($hDC, $hFont)
Local $tLogFont = DllStructCreate($tagLOGFONT)
_WinAPI_GetObject($hFont, DllStructGetSize($tLogFont), DllStructGetPtr($tLogFont))
_WinAPI_SelectObject($hDC, $hObject)
_WinAPI_ReleaseDC($hHeader, $hDC)
Local $iWeight = DllStructGetData($tLogFont, "Weight") ; Bold
DllStructSetData($tLogFont, "Weight", BitOR($iWeight, $FW_BOLD))
$hHdrFont = _WinAPI_CreateFontIndirect($tLogFont)
For $i = 0 To 21 ; alle Item/SubItem erstellen
_GUICtrlListView_AddItem($hListView, "Item: " & $i, $i)
For $j = 1 To 30
_GUICtrlListView_AddSubItem($hListView, $i, "Sub: " & $j, $j)
Next
Next
If $bColorHeader Then
$iCols = _GUICtrlListView_GetColumnCount($hListView)
Global Const $tagNMCUSTOMDRAW = "struct;" & $tagNMHDR & ";dword dwDrawStage;handle hdc;" & $tagRECT & _
";dword_ptr dwItemSpec;uint uItemState;lparam lItemlParam;endstruct"
Global $aHdrData[$iCols][3] ;Headerdata erstellen wird beim einfärben benötigt
For $i = 0 To $iCols - 1
$aHdrData[$i][0] = _GUICtrlListView_GetColumn($hListView, $i)[5]
$iIndex = _ArraySearch($aColText, $i, 0, 0, 0, 0, 1, 0)
If $iIndex <> -1 Then
$aHdrData[$i][1] = RGB2BGR($aColText[$iIndex][1])
Else
$aHdrData[$i][1] = 0x000000
EndIf
$iIndex = _ArraySearch($aColBK, $i, 0, 0, 0, 0, 1, 0)
If $iIndex <> -1 Then
$aHdrData[$i][2] = RGB2BGR($aColBK[$iIndex][1])
Else
$aHdrData[$i][2] = 0xFFFFFF
EndIf
Next
EndIf
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
GUISetState()
While True
$msg = GUIGetMsg()
Switch $msg
Case -3
ExitLoop
EndSwitch
WEnd
Func WM_NOTIFY($hWnd, $msg, $wParam, $lParam)
Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR
$tNMHDR = DllStructCreate($tagNMHDR, $lParam)
$hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
$iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
$iCode = DllStructGetData($tNMHDR, "Code")
Switch $hWndFrom
Case $hHeader
If $bColorHeader Then
;ConsoleWrite('Header: ' & $iCode & @CRLF)
Switch $iCode
Case $NM_CUSTOMDRAW
Local $tNMCustomDraw = DllStructCreate($tagNMCUSTOMDRAW, $lParam)
Local $dwDrawStage = DllStructGetData($tNMCustomDraw, "dwDrawStage")
Switch $dwDrawStage ; Holds a value that specifies the drawing stage
Case $CDDS_PREPAINT ; Before the paint cycle begins
Return $CDRF_NOTIFYITEMDRAW ; Notify parent window of any item related drawing operations
Case $CDDS_ITEMPREPAINT ; Before an item is drawn: Default painting (frames and background)
Return $CDRF_NOTIFYPOSTPAINT ; Notify parent window of any post item related drawing operations
Case $CDDS_ITEMPOSTPAINT ; After an item is drawn: Custom painting (item texts)
Local $tRECT = DllStructCreate($tagRECT)
Local $iIndex = DllStructGetData($tNMCustomDraw, "dwItemSpec") ; Item index
Local $hDC = DllStructGetData($tNMCustomDraw, "hdc") ; Device context
_WinAPI_SelectObject($hDC, $hHdrFont) ; Set text font
_WinAPI_SetBkMode($hDC, $TRANSPARENT) ; Transparent background
_WinAPI_SetTextColor($hDC, $aHdrData[$iIndex][1]) ; Set text colour
; Get header section size
DllStructSetData($tRECT, 1, DllStructGetData($tNMCustomDraw, 6) + 1)
DllStructSetData($tRECT, 2, DllStructGetData($tNMCustomDraw, 7) + 1)
DllStructSetData($tRECT, 3, DllStructGetData($tNMCustomDraw, 8) - 2)
DllStructSetData($tRECT, 4, DllStructGetData($tNMCustomDraw, 9) - 2)
; Set and draw back colour
Local $hBrush = _WinAPI_CreateSolidBrush($aHdrData[$iIndex][2])
_WinAPI_FillRect($hDC, $tRECT, $hBrush)
; Write text
If $iIndex < _GUICtrlListView_GetColumnCount($cListView) Then
_WinAPI_DrawText($hDC, $aHdrData[$iIndex][0], $tRECT, $DT_CENTER + $DT_VCENTER)
EndIf
Return $CDRF_NEWFONT ; $CDRF_NEWFONT must be returned after changing font or colors
EndSwitch
EndSwitch
EndIf
Case $hListView
;ConsoleWrite('Listview' & @CRLF)
Switch $iCode
Case $NM_CUSTOMDRAW
Local $tNMCustomDraw = DllStructCreate($tagNMLVCUSTOMDRAW, $lParam)
Local $iDrawStage, $iItem, $iSubitem, $hDC, $tRECT
$iDrawStage = DllStructGetData($tNMCustomDraw, 'dwDrawStage')
Switch $iDrawStage
Case $CDDS_ITEMPREPAINT
Return $CDRF_NOTIFYSUBITEMDRAW
Case BitOR($CDDS_ITEMPREPAINT, $CDDS_SUBITEM)
; Item/SubItem das aktuell gezeichnet werden soll ermitteln
$iItem = DllStructGetData($tNMCustomDraw, 'dwItemSpec')
$iSubitem = DllStructGetData($tNMCustomDraw, 'iSubItem')
Switch $iItem ; Zeilenwahl
Case -1 ;kommt nicht vor ist aber notwendig, damit case else verwendet werden kann
Case Else
$iIndex = _ArraySearch($aRowBK, $iItem, 0, 0, 0, 0, 1, 0)
If $iIndex = -1 Then ;nicht im Array für spezielle Zeilen also weiß
DllStructSetData($tNMCustomDraw, 'clrTextBk', RGB2BGR(0xFFFFFF))
Else
DllStructSetData($tNMCustomDraw, 'clrTextBk', RGB2BGR($aRowBK[$iIndex][1]))
;ConsoleWrite('Item '&$iItem&' BK: '&$aRowBK[$iIndex][1] & @CRLF)
EndIf
$iIndex = _ArraySearch($aRowText, $iItem, 0, 0, 0, 0, 1, 0)
If $iIndex = -1 Then ;nicht im Array für spezielle Zeilen also schwarz
DllStructSetData($tNMCustomDraw, 'clrText', RGB2BGR(0x000000))
Else
DllStructSetData($tNMCustomDraw, 'clrText', RGB2BGR($aRowText[$iIndex][1]))
;ConsoleWrite('Item '&$iItem&' Text: '&$aRowText[$iIndex][1] & @CRLF)
EndIf
EndSwitch
Switch $iSubitem
Case -1 ;kommt nicht vor ist aber notwendig, damit case else verwendet werden kann
Case Else
$iIndex = _ArraySearch($aColBK, $iSubitem, 0, 0, 0, 0, 1, 0)
If $iIndex <> -1 Then
DllStructSetData($tNMCustomDraw, 'clrTextBk', RGB2BGR($aColBK[$iIndex][1]))
;ConsoleWrite('SubItem '&$iSubitem&' BK: '&$aColBK[$iIndex][1] & @CRLF)
EndIf
$iIndex = _ArraySearch($aColText, $iSubitem, 0, 0, 0, 0, 1, 0)
If $iIndex <> -1 Then
DllStructSetData($tNMCustomDraw, 'clrText', RGB2BGR($aColText[$iIndex][1]))
;ConsoleWrite('SubItem '&$iSubitem&' Text: '&$aColText[$iIndex][1] & @CRLF)
EndIf
EndSwitch
Return $CDRF_NEWFONT
EndSwitch
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_NOTIFY
Func RGB2BGR($iColor)
Local $sH = Hex($iColor, 6)
Return '0x' & StringRight($sH, 2) & StringMid($sH, 3, 2) & StringLeft($sH, 2)
EndFunc ;==>RGB2BGR
Alles anzeigen
66_Listview Farbig.jpg
es lohnt sich im Entwicklerforum vorbeizuschauen, im dortigen Thema sind einige gute Lösungen im Zusammenhang mit LV-Headern verlinkt bzw. direkt gepostet, die Lösung von @UEZ verdient hier besondere Erwähnung
Ohne das Skript zu sehen wird es schwierig den Fehler zu finden. Ich tippe aber darauf das die Fremd-Funktion welche die Daten einsammelt bei dem anderen Rechner nicht aktiviert ist.
wieviele Steamaccounts hast du denn, daß das verwalten automatisiert werden soll?.
Schau dir in der Hilfe die Funktionen der IE.au3 an. Falls du genügend Wissen über HTML und den Aufbau des DOM-Objektes hast ist es möglich das du es schaffst.
Lies dir am besten die Forenregeln durch.
Ich denke gmmg war etwas zu optimistisch bzw. hat sich falsch ausgedrückt. Afaik funktioniert die Excel-UDF nur mit einem lokal installierten Excel. Ich lasse mich hierzu aber gerne von @water dem Autor der UDF korrigieren. Anders sieht es bei ADO aus, hier würde ein lokal installierter ADO-Datenbanktreiber genügen um zumindestest die Daten (auch remote) auszulesen, im Wiki des Entwicklerforums gibt es dazu ein Beispiel, (auch von @water).
Edit: ist das gleiche Problem mit dem Unterschied das ein ADO-Treiber ohne zusätzliche Lizenzkosten installiert werden kann.
mfg (auto)Bert
$hWnd=WinGetHandle("[ACTIVE]") speichert das im moment aktive Fensterhandle.
WinActivate($hWnd) macht das Fenster mir diesem Handle zum aktiven.
D.h. wenn ich meine Anwendung vor allen anderen Anwendungen starte, sollte ich doch gute Chancen haben, das meine F1 - F5 Belegung akzeptiert wird, oder?
Zitat von Dt. HilfeübersetzungBemerkungen
Wenn zwei Skripte den gleichen HotKey (Tastenkombination) setzen, sollte man vermeiden, beide Skripte parallel auszuführen.
(Das zweite Skript kann den HotKey nicht abfangen, solange das erste Skript nicht beendet wurde oder den Hotkey freigegeben hat, bevor das zweite Skript diesen setzt.)Ein HotKey unterbricht "typischerweise" das aktive Autoit Skript und führt die angegebene Funktion bis zu deren Schluss aus, es sei denn, deren Ausführung wird ebenfalls unterbrochen.
Folgende Ausnahmen existieren:
1) Wenn die aktuelle Funktion eine "blockierende" Funktion ist (Tastenbetätigungen werden unterdrückt), dann werden die Tastendrücke gepuffert und sofort nach der blockierenden Funktion ausgeführt. MsgBox und FileSelectFolder sind Beispiele für blockierende Funktionen. Teste das Verhalten anhand des SHIFT+ALT+D Beispiels.
2) Wenn das Autoit Skript durch einen Klick auf das TrayIcon (Pause) pausiert wurde, werden alle HotKeys ignoriert.