1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Oscar

Beiträge von Oscar

  • Skript das auf einem FTP Server einen Ordner anlegt und Daten speichert

    • Oscar
    • 20. Juni 2015 um 16:08

    Naja, Beispiele gibt es in der Hilfe zu der FTP-UDF gar nicht. Von daher ist es für einen Neuling schwierig, es richtig zu machen.

    Der häufigste Fehler (wie auch beim TO) ist der, dass das Handle von _FTP_Open für die weiteren Befehle verwendet wird, anstatt das Handle von _FTP_Connect zu benutzen.

    Hier ist mal ein (funktionierendes) Beispiel:

    AutoIt
    #include <FTPEx.au3>
    
    
    $sDir = @ComputerName
    $sPW = 'password'
    $sUser = 'username'
    $sIP = 'servername'
    
    
    $sPath = FileOpenDialog('Bitte die Datei auswählen.', '', 'All (*.*)', 2)
    If Not FileExists($sPath) Then Exit
    ConsoleWrite('Path: "' & $sPath & '"' & @CR)
    $sFilename = StringRegExpReplace($sPath, '.+\\(.+)', '$1')
    ConsoleWrite('Filename: "' & $sFilename & '"' & @CR)
    
    
    $hOpen = _FTP_Open('myftp')
    ConsoleWrite('FTP_Open: ' & $hOpen & @CR)
    If Not @error Then
    	$hSession = _FTP_Connect($hOpen, $sIP, $sUser, $sPW)
    	ConsoleWrite('FTP_Connect: ' & $hSession & @CR)
    	If Not @error Then
    		$iRet = _FTP_DirCreate($hSession, $sDir)
    		ConsoleWrite('FTP_DirCreate: ' & ($iRet = 1 ? 'created' : 'not created') & @CR)
    		$iRet = _FTP_FilePut($hSession, $sPath, $sDir & '/' & $sFilename)
    		ConsoleWrite('FTP_FilePut: ' & ($iRet = 1 ? 'transfer ok' : 'transfer error') & @CR)
    	EndIf
    	$iRet = _FTP_Close($hSession)
    	ConsoleWrite('FTP Session: ' & ($iRet = 1 ? 'close' : 'error') & @CR)
    	$iRet = _FTP_Close($hOpen)
    	ConsoleWrite('FTP: ' & ($iRet = 1 ? 'close' : 'error') & @CR)
    EndIf
    Alles anzeigen
  • Hilfe bei Pattern für _RecursiveFileListToArray

    • Oscar
    • 20. Juni 2015 um 12:58

    Benutze einfach "_FileListToArrayRec". Dort kannst Du Filter für Include und Exclude angeben.

  • _CreateHBitmapArrayFromIconfile

    • Oscar
    • 18. Juni 2015 um 18:18

    Stimmt! Das mit dem $hIcon hatte ich übersehen.
    Und eine Destroy-Funktion habe ich jetzt auch noch mit eingebaut.
    Neue Version in Post#1.

    Danke für die Rückmeldung! :thumbup:

  • _CreateHBitmapArrayFromIconfile

    • Oscar
    • 18. Juni 2015 um 14:46

    Nachdem eukalyptus mir den Weg gewiesen hat (siehe: Icondatei mit mehreren Icongrößen mit GDI+ laden), bin ich auf Pilgertour gegangen und habe am Wegesrand nicht nur "Width", "Height" und "Bits" gefunden, sondern auch noch "Size" und "Offset". :D
    Da dachte ich mir, warum die Icons nochmal laden, wenn sie doch bereits im Speicher stehen und nur darauf warten ausgelesen zu werden.
    Also alles auf einmal und dann auch gleich noch in HBitmaps wandeln, damit man sie an ein Pic-Control übergeben kann.
    Rausgekommen ist dann diese UDF (Anhang) und noch ein Beispiel dazu.

    Es werden alle Icons (alle Icongrößen in allen Farbtiefen) aus der Icondatei extrahiert und in HBitmaps umgewandelt. Im 2D-Array ist dann folgendes enthalten:
    [$iCount][0] = Handle zum HBitmap
    [$iCount][1] = Breite des Icons
    [$iCount][2] = Höhe des Icons
    [$iCount][3] = Farbtiefe (Bits) des Icons
    [$iCount][4] = Größe (Bytes) des Icons

    Edit 20.06.15 : Ich habe die Funktion nochmal überarbeitet. Jetzt werden auch halbtransparente Icons unterstützt (siehe Beispiel).

    Dateien

    _CreateHBitmapArrayFromIconfile.au3 4,95 kB – 265 Downloads Example.au3 186,61 kB – 268 Downloads
  • Details .mkv auslesen

    • Oscar
    • 17. Juni 2015 um 15:07

    Mit der MediaInfo-DLL habe ich schon gearbeitet. Ist total einfach!
    Im Anhang findest Du die DLL sowie License, ReadMe und ein AutoIt-Beispielscript.

    Dateien

    MediaInfo.zip 1,53 MB – 330 Downloads
  • FF.au3

    • Oscar
    • 16. Juni 2015 um 13:33

    Du machst oben in der Tableiste einen rechten Mausklick und dann einen Haken bei "Menüleiste". Dann hast Du wieder eine Menüleiste.
    Und dort unter "Extras" -> "MozRepl" -> "Activate on startup".

  • Icondatei mit mehreren Icongrößen mit GDI+ laden

    • Oscar
    • 15. Juni 2015 um 13:55

    Wow! Das funktioniert klasse! :thumbup:
    Jetzt kann ich die Icons entsprechend auslesen. Vielen Dank! :klatschen:

    Für alle, die sowas auch gebrauchen können, habe ich das Script noch auf eine Array-Rückgabe umgeändert:

    AutoIt
    #include <Array.au3>
    Global $sIconfile = @ScriptDir & '\test.ico'
    
    
    $aIconDim = _IconFileGetDimension($sIconfile)
    _ArrayDisplay($aIconDim)
    
    
    
    
    Func _IconFileGetDimension($sIconfile)
    	; von eukalyptus in https://autoit.de/index.php/Thread/83223-Icondatei-mit-mehreren-Icongr%C3%B6%C3%9Fen-mit-GDI-laden/?postID=666122#post666122
    	Local $hFile = FileOpen($sIconfile, 16)
    	If $hFile = -1 Then Return SetError(1, 0, 0)
    	Local $bIcon = FileRead($hFile)
    	FileClose($hFile)
    	Local $tIconHeader = DllStructCreate("ushort Res; ushort Type; ushort Cnt;")
    	Local $tByte = DllStructCreate("byte[" & DllStructGetSize($tIconHeader) & "];", DllStructGetPtr($tIconHeader))
    	DllStructSetData($tByte, 1, BinaryMid($bIcon, 1, DllStructGetSize($tIconHeader)))
    	Local $iCnt = DllStructGetData($tIconHeader, "Cnt")
    	Local $aIconDim[$iCnt][3]
    	Local $iOffset = DllStructGetSize($tIconHeader) + 1
    	For $i = 1 To $iCnt
    		$tIconHeader = DllStructCreate("byte Width; byte Height; byte Colors; byte Res; ushort Planes; ushort Bits; uint Size; uint Offset;")
    		$tByte = DllStructCreate("byte[" & DllStructGetSize($tIconHeader) & "];", DllStructGetPtr($tIconHeader))
    		DllStructSetData($tByte, 1, BinaryMid($bIcon, $iOffset, DllStructGetSize($tIconHeader)))
    		$aIconDim[$i - 1][0] = DllStructGetData($tIconHeader, "Width") = 0 ? 256 : DllStructGetData($tIconHeader, "Width")
    		$aIconDim[$i - 1][1] = DllStructGetData($tIconHeader, "Height") = 0 ? 256 : DllStructGetData($tIconHeader, "Height")
    		$aIconDim[$i - 1][2] = DllStructGetData($tIconHeader, "Bits")
    		$iOffset += DllStructGetSize($tIconHeader)
    	Next
    	Return SetError(0, 0, $aIconDim)
    EndFunc   ;==>_IconFileGetDimension
    Alles anzeigen


    Hier im Anhang ist noch ein Icon mit 6 verschiedenen Größen (inkl. 256 x 256).

    Dateien

    test-icon.zip 2,35 kB – 241 Downloads _IconFileGetDimension.au3 1,68 kB – 219 Downloads
  • Icondatei mit mehreren Icongrößen mit GDI+ laden

    • Oscar
    • 15. Juni 2015 um 13:17

    Das habe ich schon versucht!
    Nur leider:

    Zitat


    If the icon with the specified dimension is not found in the file, it will choose the nearest appropriate icon
    and change to the specified dimension.

    Es gibt dann immer alle Icons (skaliert). Es kommt ja keine Fehlermeldung, wenn der Befehl ein Icon nicht findet.

  • Icondatei mit mehreren Icongrößen mit GDI+ laden

    • Oscar
    • 15. Juni 2015 um 12:35

    Das hatte ich vergessen zu erwähnen. "_WinAPI_ShellExtractIcon" kann zwar die unterschiedlichen Icongrößen auslesen, aber ich muss die Icongröße angeben.
    Und die weiß ich ja nicht bei einem unbekannten Icon.
    Konkret muss meine Frage also lauten: Wie kann ich rauskriegen, ob ein Icon unterschiedliche Icongrößen beeinhaltet und welche das sind?

  • Icondatei mit mehreren Icongrößen mit GDI+ laden

    • Oscar
    • 15. Juni 2015 um 12:01

    So langsam verzweifel ich!
    Ich bin seit Stunden am rumprobieren, wie ich rauskriegen kann, ob eine Icondatei mehrere Icons beeinhaltet und wenn ja, wie ich diese per GDI+ laden kann.
    Das Script hier funktioniert in soweit, dass es das Icon ausliest und anzeigt. Aber immer nur die kleinste Icongröße (16x16).

    AutoIt
    #include <GDIPlus.au3>
    #include <WinAPI.au3>
    #include <WinAPIConstants.au3>
    
    
    _GDIPlus_Startup()
    Global Const $STM_SETIMAGE = 0x0172
    
    
    Global $hGui = GUICreate('Test', 320, 320)
    Global $idPic = GUICtrlCreatePic('', 20, 20, 256, 256)
    GUISetState()
    
    
    Global $sImgFile = @ScriptDir & '\Everaldo-Crystal-Clear-App-display.ico'
    
    
    Global $hBitmap = _GDIPlus_BitmapCreateFromFile($sImgFile) ; <- hier wird nur das kleine (16x16) Icon geladen
    
    
    Global $hBMP = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap) ; HBitmap von der Bitmap erstellen
    _WinAPI_DeleteObject(GUICtrlSendMsg($idPic, $STM_SETIMAGE, $IMAGE_BITMAP, $hBMP)) ; und an das Pic-Control senden
    _GDIPlus_BitmapDispose($hBitmap)
    Do
    Until GUIGetMsg() = -3
    _GDIPlus_Shutdown()
    Alles anzeigen

    Ich hoffe ihr könnt mir helfen! :)
    Im Anhang findet ihr das Script und das Icon (zum testen).

    Dateien

    IconTest.zip 55,53 kB – 207 Downloads
  • Variable in WinMove auflösen - viele Varianten - alles Fehler

    • Oscar
    • 13. Juni 2015 um 18:24

    Es ist in AutoIt nicht vorgesehen, dass man mehrere Parameter derart zusammenfassen kann. Über das "warum" musst Du Dich mit den Entwicklern unterhalten.

    So geht es mit einem Array:

    AutoIt
    #include <Array.au3>
    #include <GUIConstantsEx.au3>
    $hGui = GUICreate('Test', 320, 200)
    GUISetState()
    
    
    $aPos = StringSplit("2609,11,514,473", ",", 2)
    _ArrayDisplay($aPos, 'Werte im Array')
    WinMove($hGui, '', $aPos[0], $aPos[1], $aPos[2], $aPos[3])
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    Alles anzeigen
  • Variable in WinMove auflösen - viele Varianten - alles Fehler

    • Oscar
    • 13. Juni 2015 um 17:43
    Zitat von AutoMit

    Wie kann ich bei "WinMove" die Zahlenwerte in eine Variable auslagern?

    Du kannst nicht einfach 4 Parameter in eine Variable zusammenfassen.
    Das funktioniert nicht!
    Mache es so, wie autoiter es geschrieben hat oder benutze ein Array.

  • Flac nach mp3 ?

    • Oscar
    • 13. Juni 2015 um 09:48

    Lame gibt es doch auch als Konsolenanwendung.
    Über die Kommadozeilen-Parameter kannst Du dann Qualität, Quell- und Zieldatei angeben und fertig.

  • FTP Verbindung herstellen

    • Oscar
    • 13. Juni 2015 um 09:38
    Zitat von Probierer

    Kann sich mein Script mal jemand ansehen?

    In dieser Zeile fehlt ein Backslash:

    AutoIt
    _FTP_ProgressDownload($l_FTPSession, @ScriptDir & "Drucken.txt", "\var\usbstick\Drucken.txt", "_UpdateProgress")


    das müsste so aussehen:

    AutoIt
    _FTP_ProgressDownload($l_FTPSession, @ScriptDir & "\Drucken.txt", "\var\usbstick\Drucken.txt", "_UpdateProgress")
  • Gefilterte Eingabe: InputFilter.au3 (1.1)

    • Oscar
    • 13. Juni 2015 um 09:32
    Zitat von Friesel

    Entschuldigung für meine Off-Topic-Frage, aber kann man bei GUICtrlCreateDate auch einstellen, dass bei Benutzung der UpDown-Controls mit den Sekunden begonnen wird? Standardmässig gehts nämlich bei Stunden los.

    Das geht auch:

    AutoIt
    #include <DateTimeConstants.au3>
    $hGui = GUICreate('Uhrzeit-Test', 220, 130)
    $idDate = GUICtrlCreateDate('', 60, 50, 100, 30, $DTS_TIMEFORMAT)
    GUICtrlSetFont(-1, 12, 400, 0, 'Arial', 5)
    GUISetState()
    ControlSend($hGui, '', $idDate, '{RIGHT}' & '{RIGHT}')
    Do
    Until GUIGetMsg() = -3
  • Gefilterte Eingabe: InputFilter.au3 (1.1)

    • Oscar
    • 12. Juni 2015 um 19:13

    Für eine Eingabe von Uhrzeiten würde ich lieber ein Date-Control verwenden.
    Das ist einfach und hat den Vorteil, dass man sich nicht um Fehleingaben kümmern muss (passiert automatisch).

    AutoIt
    #include <DateTimeConstants.au3>
    $hGui = GUICreate('Uhrzeit-Test', 220, 130)
    $idDate = GUICtrlCreateDate('', 60, 50, 100, 30, $DTS_TIMEFORMAT)
    GUICtrlSetFont(-1, 12, 400, 0, 'Arial', 5)
    GUISetState()
    Do
    Until GUIGetMsg() = -3
  • _FileCopyEx

    • Oscar
    • 12. Juni 2015 um 17:39

    Ich habe die Funktion noch um einiges verändert (auch den Funktionsnamen).
    Alles weitere siehe Post#1.

  • FTP Verbindung herstellen

    • Oscar
    • 11. Juni 2015 um 14:59

    Was ist das denn für ein FTP-Server?
    Warum braucht der soo lange für eine Antwort?

  • Ebay Widget

    • Oscar
    • 11. Juni 2015 um 12:39

    Hier als Beispiel:

    AutoIt
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    
    
    $hGui = GUICreate('Test', 640, 480, -1, -1, $WS_POPUP)
    $idPic = GUICtrlCreatePic(@ScriptDir & '\test.jpg', 0, 0, 640, 480, Default, $GUI_WS_EX_PARENTDRAG)
    GUISetState()
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
  • Datum / Ostersonntag.

    • Oscar
    • 11. Juni 2015 um 12:22

    Return $EasterDate
    gibt den Wert von $EasterDate an das aufrufende Programm/Funktion zurück.
    $EasterDate ist hierbei nur eine lokale Variable, wobei BugFix in seinem Script vergessen hat, diese als Lokal zu deklarieren.

    BTW: Diese ganzen Fragen von Dir sind eigentlich Programmier-Grundlagen. Du solltest nicht versuchen zu laufen, wenn Du nichtmal stehen kannst. :D SCNR.

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™