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

  • FileCommander

    • Oscar
    • 17. Januar 2011 um 19:02

    Es gibt wieder eine neue Version (siehe Post#1).

    Ich habe eine umfangreiche Suchfunktion eingebaut (mit StringInStr- und StringRegExp-Suche). Außerdem kann man Verknüpfungen erstellen und einige kleinere Fehler sind nun behoben.

  • Brauche dringend Hilfe bei Zahlen Kombinationen!

    • Oscar
    • 17. Januar 2011 um 18:04

    Klar! Ganz einfach:

    [autoit]


    #include <Array.au3>
    $string = '123'
    $array = StringSplit($string, '', 2)
    $array = _ArrayPermute($array)
    _ArrayDisplay($array)

    [/autoit]
  • FTP Upload

    • Oscar
    • 17. Januar 2011 um 12:45

    Ich hab's mal korrigiert (Kommentare):

    Spoiler anzeigen
    [autoit]


    #include <FTP.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $server = 'server'
    $username = 'bn'
    $pass = 'pw'

    [/autoit] [autoit][/autoit] [autoit]

    $Dateipfad = @ScriptDir & '\'
    $Dateiname = '_test1.au3'

    [/autoit] [autoit][/autoit] [autoit]

    $hFTPOpen = _FTPOpen($server) ; <- Hier die Variable $Server

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $hFTPConnect=_FTPConnect($hFTPOpen, $server, $username, $pass)
    if @error then msgbox(0,"Error","Connect", 3)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    _FTPMakeDir($hFTPConnect, 'Psychware') ; <- Hier kann ein Fehler auftreten, wenn das Verzeichnis bereits existiert
    if @error then msgbox(0,"Error","MakeDir", 3)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    _FtpPutFile($hFTPConnect, $Dateipfad & $Dateiname, 'Psychware/' & $Dateiname) ; <- Der Remotepfad muss auch den Dateinamen enthalten
    if @error then msgbox(0,"Error","PutFile 3", 3)

    [/autoit] [autoit][/autoit] [autoit]

    _FTPClose($hFTPOpen) ; <- Close nicht vergessen

    [/autoit]
  • Filopen Dialog Textfile filtern

    • Oscar
    • 17. Januar 2011 um 10:16

    Ich habe Dir mal ein Auswahl-Dialog erstellt, bei dem man ein RegExp-Pattern angeben kann.
    In dem Beispiel werden alle Dateien angezeigt, die nicht diesem Muster "9935_x.txt" (wobei das x für beliebige Zeichen steht) entsprechen:

    Spoiler anzeigen
    [autoit]


    $sFiles = _FileOpenDialog('Datei(en) auswählen', @ScriptDir, '^9935_.*\.txt', 0)
    If Not @error Then MsgBox(0, 'Datei(en):', $sFiles)

    [/autoit] [autoit][/autoit] [autoit]

    Func _FileOpenDialog($sTitle, $sInitDir, $sPattern = '.*', $iOptions = 0, $hWnd = 0)
    Local $iOldOpt, $hSearch, $hGui, $hFileList, $hFile, $sDate, $iSize, $hOk, $hCancel, $aMsg
    If Not FileExists($sInitDir) Then Return SetError(1, 0, '')
    If StringRight($sInitDir, 1) <> '\' Then $sInitDir &= '\'
    $hSearch = FileFindFirstFile($sInitDir & '*.*')
    If $hSearch = -1 Then Return SetError(2, 0, '')
    $iOldOpt = Opt('GUIOnEventMode', 0)
    $hGui = GUICreate($sTitle, 600, 400, -1, -1, BitOR(-2134245376, 262144), Default, $hWnd) ; -2134245376 = $GUI_SS_DEFAULT_GUI, 262144 = $WS_SIZEBOX
    $hFileList = GUICtrlCreateListView('Name|Änderungsdatum|Größe', 10, 10, 580, 350, BitOR(8, BitXOR(BitAND($iOptions, 4), 4))) ; 8 = $LVS_SHOWSELALWAYS, 4 = $LVS_SINGLESEL
    While True
    $hFile = FileFindNextFile($hSearch)
    If @error Then ExitLoop
    If @extended Or StringRegExp($hFile, $sPattern) Then ContinueLoop
    $sDate = StringRegExpReplace(FileGetTime($sInitDir & $hFile, 0, 1), '(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})', '$3.$2.$1 $4:$5:$6')
    $iSize = FileGetSize($sInitDir & $hFile)
    GUICtrlCreateListViewItem($hFile & '|' & $sDate & '|' & $iSize, $hFileList)
    WEnd
    FileClose($hSearch)
    GUICtrlSendMsg($hFileList, 4126, 0, -1) ; 4126 = $LVM_SETCOLUMNWIDTH, -1 = $LVSCW_AUTOSIZE
    $hOk = GUICtrlCreateButton('Ok', 430, 370, 65, 22)
    GUICtrlSetResizing(-1, 1 + 64)
    $hCancel = GUICtrlCreateButton('Abbrechen', 500, 370, 90, 22)
    GUICtrlSetResizing(-1, 1 + 64)
    GUISetState()
    While True
    $aMsg = GUIGetMsg(True)
    Switch $aMsg[1]
    Case $hGui
    Switch $aMsg[0]
    Case $hCancel, -3 ; -3 = $GUI_EVENT_CLOSE
    GUIDelete($hGui)
    Opt('GUIOnEventMode', $iOldOpt)
    Return SetError(3, 0, '')
    Case $hOk
    $sSelect = ControlListView($hGui, '', $hFileList, 'GetSelected', 1)
    If $sSelect <> '' Then
    $aItems = StringSplit($sSelect, '|')
    $sSelect = ''
    For $i = 1 To $aItems[0]
    $sSelect &= ControlListView($hGui, '', $hFileList, 'GetText', $aItems[$i]) & '|'
    Next
    $sSelect = StringTrimRight($sSelect, 1)
    EndIf
    GUIDelete($hGui)
    Opt('GUIOnEventMode', $iOldOpt)
    Return $sSelect
    EndSwitch
    EndSwitch
    WEnd
    EndFunc

    [/autoit]
  • Filopen Dialog Textfile filtern

    • Oscar
    • 17. Januar 2011 um 08:58

    Das geht meines Wissens nicht!
    Zumindest nicht mit FileOpenDialog. Da müsstest Du Dir eine eigene Dialog-GUI basteln.

  • Filopen Dialog Textfile filtern

    • Oscar
    • 17. Januar 2011 um 08:19

    Meinst Du so:

    [autoit]

    $Fileopen = FileOpenDialog($message, @HomeDrive, "Textdatei (9935_*.txt)", 1 + 4)

    [/autoit]
  • _IEBodyReadText (für campweb)

    • Oscar
    • 17. Januar 2011 um 07:45

    Irgendwie ist das hier sowieso nicht so wirklich ein Tutorial.
    Ich hab's mal nach H&U verschoben.

  • herausfinden, ob beliebige Taste gedrückt wurde (bzw. welche zuletzt gedrückt wurde)

    • Oscar
    • 16. Januar 2011 um 20:21

    Nein!
    _Timer_GetIdleTime übernimmt diese Aufgabe. Sobald die Maus bewegt oder eine Taste gedrückt wird, wird der Timer zurückgesetzt (auf Null). Und das frage ich ab (kleiner als 250). Der Wert ist in Millisekunden.

  • herausfinden, ob beliebige Taste gedrückt wurde (bzw. welche zuletzt gedrückt wurde)

    • Oscar
    • 16. Januar 2011 um 19:18

    Wenn es Dir egal ist, welche Taste gedrückt wurde:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <Timers.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $hGui = GUICreate('Test', 400, 300)
    GUICtrlCreateLabel('Maus bewegen oder Taste drücken', 10, 10, 350, 25)
    $hLabel = GUICtrlCreateLabel('', 40, 80, 350, 25)
    GUICtrlSetFont(-1, 12)
    GUISetState()
    While True
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    If _Timer_GetIdleTime() < 250 Then
    If GUICtrlRead($hLabel) = '' Then GUICtrlSetData($hLabel, 'Maus bewegt oder Taste gedrückt')
    Else
    If GUICtrlRead($hLabel) <> '' Then GUICtrlSetData($hLabel, '')
    EndIf
    WEnd

    [/autoit]
  • Frage zu Inputboxen

    • Oscar
    • 16. Januar 2011 um 15:58

    Solche Fragen gehören hier nach "Hilfe & Unterstützung" und nicht nach "Tutorials"!
    Ich habe bereits Deinen anderen Beitrag (Inputboxen mit Variablen) mit fast der gleichen Frage hierher verschoben.

  • Funktionssammlung, Autoit ähnlich [ISMS]

    • Oscar
    • 16. Januar 2011 um 13:43

    Ich denke, dass das hier im C++ Forum besser aufgehoben ist. Im Projekte-Forum geht es ja um AutoIt.
    [verschoben]

  • Case problem

    • Oscar
    • 16. Januar 2011 um 11:28

    Bei mehreren GUIs brauchst Du den advanced Modus von GUIGetMsg, um die einzelnen GUIs getrennt auswerten zu können.
    Ich würde Dir aber raten gleich auf den OnEvent-Mode zu wechseln. Der ist bei mehreren GUIs deutlich einfacher zu handhaben und es gibt auch nicht die Probleme mit der dynamischen Prozessorlast.

    Dein Beispiel kann so keiner nachvollziehen, weil Du absolute Pfade (die gibt es so nur bei Dir) benutzt und die Bilder nicht mitlieferst. Auch das verwenden von Nicht-Standard-Fonts kann zu Anzeigeproblemen bei anderen Benutzern führen.

  • FileCommander

    • Oscar
    • 15. Januar 2011 um 20:55

    Jetzt gibt es einen Geschwindigkeitsrausch. :D

    Die Funktion "_GUICtrlListView_AddArrayEx" ist sowas von schnell gegenüber dem einzelnen erstellen mit "GUICtrlCreateListViewItem", dass ich das kaum für möglich gehalten hatte.
    Eigentlich wollte ich eine Art Buffer für die Dateilisten einbauen und brauchte dafür eine Funktion, die auch den Image-Index mit übernimmt. So habe ich dann die Original-Funktion modifiziert und rausgekommen ist das.
    Jetzt weiss ich gar nicht, ob ich den Buffer noch zusätzlich einbauen soll. Das testen, ob das aktuelle Verzeichnis im Buffer vorhanden ist, könnte da ja schon fast länger dauern. ;)

    Naja, schaut es euch an. Neue Version in Post#1.

  • ihc krieg das mit dem menü nicht hin

    • Oscar
    • 15. Januar 2011 um 18:59

    Siehe mein Edit in Post#1.

  • Ordner und Dateien erstellen Windows 7

    • Oscar
    • 15. Januar 2011 um 18:52

    Das funktioniert bei mir einwandfrei:

    [autoit]


    #RequireAdmin
    DirCreate(@ProgramFilesDir & '\test')

    [/autoit]
  • Netzwerkdaten komprimieren

    • Oscar
    • 15. Januar 2011 um 17:33

    Sind das alles AutoIt-Skripte?

    Wenn ja, dann könntest Du die doch als Skript (zusätzlich gepackt) verschicken und dann vor Ort compilieren.

  • Farbe

    • Oscar
    • 15. Januar 2011 um 16:59

    So geht's:

    Spoiler anzeigen
    [autoit]


    $i = 100
    $du = 100
    $d = 0

    [/autoit] [autoit][/autoit] [autoit]

    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 623, 442, 192, 124)
    DllCall('uxtheme.dll', 'none', 'SetThemeAppProperties', 'int', 0) ; auf den klassischen Style umschalten
    $Progress1 = GUICtrlCreateProgress(40, 240, 150, 17)
    GUICtrlSetColor(-1, 0xFF0000)
    GUICtrlSetBkColor(-1, 0xC0C0C0)
    $Progress2 = GUICtrlCreateProgress(264, 240, 150, 17)
    GUICtrlSetColor(-1, 0x3D95FF)
    DllCall('uxtheme.dll', 'none', 'SetThemeAppProperties', 'int', 7) ; zurück zum Standard-Windowsstyle
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch

    [/autoit] [autoit][/autoit] [autoit]

    $a = (Chr(Random(97, 122, 1)))
    $b = (Chr(Random(97, 122, 1)))

    [/autoit] [autoit][/autoit] [autoit]

    If $a = "w" Or $a = "a" Then
    If $du <= 0 Then
    MsgBox(0, "", "Gewonnen")
    $i = 100
    $du = 100
    EndIf
    If $i <= 0 Then
    MsgBox(0, "", "Game Over")
    $i = 100
    $du = 100
    EndIf
    If $d = 2 Then $i = $i - 1
    If $d = 1 Then $du = $du - 1

    [/autoit] [autoit][/autoit] [autoit]

    If Not ($du >= 0) Then MsgBox(0, "", "Gewonnen")
    EndIf
    If $d = 2 Then
    $d = -1
    EndIf
    $d = $d + 1
    GUICtrlSetData($Progress1, $i)
    GUICtrlSetData($Progress2, $du)
    WEnd

    [/autoit]
  • Wildcard Befehle

    • Oscar
    • 14. Januar 2011 um 18:58

    Oder meine Funktion ("_RecursiveFileListToArray") benutzen. Dort kann man ein RegExp-Pattern angeben:

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    $array = _RecursiveFileListToArray('c:\', '.*(csv|txt).*', 1)
    _ArrayDisplay($array)

    [/autoit] [autoit][/autoit] [autoit][/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 @extended 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

    [/autoit]
  • FTP Upload

    • Oscar
    • 14. Januar 2011 um 18:51

    Für _FTPMakeDir und _FTPPutFile brauchst Du das Handle von _FTPConnect und nicht das Handle von _FTPOpen.

  • WinXP - Wie lange sollte der AutoIt Support noch gehen?

    • Oscar
    • 11. Januar 2011 um 22:20

    Ich habe für einen weiteren XP-Support gestimmt, weil ich viele meiner Skripte auch auf meinem Notebook verwenden will.
    Und da das Notebook zu alt (keine Treiber) für Windows7 ist, habe ich auch keine Möglichkeit dort ein Upgrade vorzunehmen.
    Von daher werde ich versuchen meine Skripte XP-kompatibel zu halten.

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™