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. Micha_he

Beiträge von Micha_he

  • Textzeilen zusammenführen ...

    • Micha_he
    • 19. Januar 2008 um 10:32

    Achtung: Exportierte Reg-Dateien ab Windows 2000, sind standardmäßig UNICODE !

    Das heißt aus dem CRLF ( Hex '0d 0a' ) wird dann Hex '0d 00 0a 00'. Andere Zeichen
    natürlich auch....

  • USB Stick entfernen per Autoit

    • Micha_he
    • 12. Januar 2008 um 17:20

    Das Tool von Uwe Sieber hatte ich auch vorher im Einsatz. Es gibt aber diverse Unterschiede beim Abmelden des USB-Sticks. Das eine Tool läuft nur einwandfrei unter Win2000, das andere kann den USB-Stick nicht auswerfen wenn zum Beispiel der Total-Commander den Ordner offen hat.
    Zum Schluß blieb ich bei dem 'USB-Deview'. Es lief im Großen und Ganzen am besten.

    @Ritzelrocker04: Aber dann verstellt mir doch das Script die Rechnerlautstärke jedesmal, oder ?

  • USB Stick entfernen per Autoit

    • Micha_he
    • 12. Januar 2008 um 10:23

    Ich habe so etwas auch mal benötigt und in AutoIt, unter zu Hilfenahme des USBDeview-Tool, geschrieben.

    Nachtrag:
    Hier nochmal eine Version (im Gegensatz zur Variante im ZIP-File), die durch 'FileInstall' mit nur einer EXE-Datei nach kompilieren auskommt.

    Spoiler anzeigen
    [autoit]

    opt("TrayIconHide",1)
    #include <GUIConstants.au3>

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

    FileInstall("Fehler.wav",@tempdir & "\Fehler.wav",1)
    FileInstall("Entfernen.wav",@tempdir & "\Entfernen.wav",1)
    FileInstall("USBDeview.exe",@tempdir & "\USBDeview.exe",1)

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

    if $cmdline[0] <> 0 then
    if stringlen($cmdline[1]) = 1 then
    $drive = stringupper($cmdline[1]) & ":"
    else
    $drive = stringupper($cmdline[1])
    endif
    else
    GUICreate("Fehlermeldung !",300,100,-1,-1,$WS_CAPTION & $WS_POPUP,$WS_EX_TOOLWINDOW)
    GUICtrlCreateLabel("Der Programmaufruf lautet wie folgt :" & @CRLF & @CRLF & "USBUnmount.exe <LAUFWERK>",50,10,-1,-1)
    $ok_button = GUICtrlCreateButton ( "Ok",120,60,60,30,$BS_DEFPUSHBUTTON)
    GUISetState (@SW_SHOW)
    if fileexists(@tempdir & "\Fehler.wav") then
    SoundPlay(@tempdir & "\Fehler.wav",1)
    endif
    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    ;nix
    Case $msg = $ok_button
    Exit(1)
    EndSelect
    Wend
    endif
    $count = 0

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

    if fileexists($drive) then
    $prozesse = processlist("PStart.exe")
    if $prozesse[0][0] <> 0 then
    if fileexists($drive & "\PStart.exe") then
    runwait($drive & "\PStart.exe /exit",$drive,@SW_HIDE)
    else
    processclose("PStart.exe")
    endif
    endif

    runwait(@tempdir & "\USBDeview.exe /stop_by_drive " & $drive,@scriptdir,@SW_HIDE)
    while fileexists($drive)
    runwait(@tempdir & "\USBDeview.exe /stop_by_drive " & $drive,@scriptdir,@SW_HIDE)
    sleep(500)
    $count = $count + 1
    if $count = 5 then
    GUICreate("Fehlermeldung !",300,100,-1,-1,$WS_CAPTION & $WS_POPUP,$WS_EX_TOOLWINDOW)
    GUICtrlCreateLabel("Das Laufwerk ' " & $drive & " ' konnte nicht beendet werden !",30,20,-1,-1)
    $ok_button = GUICtrlCreateButton ( "Ok",120,60,60,30,$BS_DEFPUSHBUTTON)
    GUISetState (@SW_SHOW)
    if fileexists(@tempdir & "\Fehler.wav") then
    SoundPlay(@tempdir & "\Fehler.wav",1)
    endif
    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    ;nix
    Case $msg = $ok_button
    Exit(1)
    EndSelect
    Wend
    endif
    wend
    if fileexists(@tempdir & "\Entfernen.wav") then
    SoundPlay(@tempdir & "\Entfernen.wav",1)
    endif
    else
    GUICreate("Fehlermeldung !",300,100,-1,-1,$WS_CAPTION & $WS_POPUP,$WS_EX_TOOLWINDOW)
    GUICtrlCreateLabel("Das Laufwerk ' " & $drive & " ' ist nicht vorhanden !",55,20,-1,-1)
    $ok_button = GUICtrlCreateButton ( "Ok",120,60,60,30,$BS_DEFPUSHBUTTON)
    GUISetState (@SW_SHOW)
    if fileexists(@tempdir & "\Fehler.wav") then
    SoundPlay(@tempdir & "\Fehler.wav",1)
    endif
    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    ;nix
    Case $msg = $ok_button
    Exit(1)
    EndSelect
    Wend
    endif

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

    if FileExists(@Tempdir & "\Fehler.wav") then FileDelete(@Tempdir & "\Fehler.wav")
    if FileExists(@Tempdir & "\Entfernen.wav") then FileDelete(@Tempdir & "\Entfernen.wav")
    if FileExists(@Tempdir & "\USBDeview.exe") then FileDelete(@Tempdir & "\USBDeview.exe")

    [/autoit]

    Dateien

    USBUnmount.zip 105,03 kB – 503 Downloads
  • FileExists & FileWrite Problem

    • Micha_he
    • 10. Januar 2008 um 19:54

    Hinter das "wend" ab Zeile 34 ???

    Da kommt doch Dein Script nie hin !
    Es läuft doch von "while 1" bis "wend" oder verlässt das Programm mit "exit".

  • FileExists & FileWrite Problem

    • Micha_he
    • 10. Januar 2008 um 18:34

    Außerdem öffnet und schließt FileWrite eine Datei doch sowieso. Die Variante mit Open & Close ist zwar ordentlicher aber Alina's Code funktioniert bei mir,.... fast:

    - _FileCreate habe ich nicht (wird bei mir aber auch nicht gebraucht
    - die Anführungszeichen um das "ffmpeg" sollten doch bestimmt um die Eingangsdatei, oder ?
    - einige Leerzeichen im FFMpeg-Aufruf sind doppelt, sollte aber trotzdem gehen
    - die Endung für das Out-File muss eigentlich .mpg lauten oder ?

    Aber ich habe Alina's Varainte etwas zum Test vervollständigt (GUI) und leicht korrigiert...

    [autoit]

    #include <GUIConstants.au3>

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

    $Form = GUICreate("Form",400,200)
    $DwnInput = GUICtrlCreateInput("abcd",20,10)
    GUISetState(@SW_SHOW)

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

    If FileExists("test.bat") Then
    FileDelete("test.bat")
    EndIf
    FileWrite("test.bat", "ffmpeg -i ")
    FileWrite("test.bat", chr(34) & GUICtrlRead($DwnInput) & ".flv" & chr(34))
    FileWrite("test.bat", " -vcodec mpeg1video -acodec copy -b 600 ")
    FileWrite("test.bat", chr(34) & GUICtrlRead($DwnInput) & ".mpg" & chr(34))

    [/autoit]
  • fortschritt bei fileinstall als progressbar anzeigen

    • Micha_he
    • 10. Januar 2008 um 17:41

    Ich hatte mit bei meinem Test, keine Probleme. Der FileCopy-Ersatz mit ProgressBar-Aktualisierung funktioniert mit einer über 700MB großen Testdatei.
    Ich kann mir das nicht erklären, warum nur 1/4 kopiert werden sollte.

    AspirinJunkie:
    Die Idee mit der Blocksize=FileSize/99 ist natürlich gut !

  • String & Groß/Kleinbuchstaben

    • Micha_he
    • 10. Januar 2008 um 12:31

    Ich würde das wie folgt zusammensetzen (Vorrasusetzung die Namen sind mit StringSplit getrennt und z.B. im Array '$daten'):

    [autoit]


    $kurzname = StringUpper(StringLeft($daten[1],1)) & StringLower(StringMid($daten[1],2,1)) & _
    StringUpper(StringLeft($daten[2],1)) & StringLower(StringMid($daten[2],2,1))

    [/autoit]

    Ist frei geschrieben und ungetestet !

  • 7zip & @MyDocumentsdir ?

    • Micha_he
    • 7. Januar 2008 um 20:07

    Wie folgt KÖNNTE es funktionieren:

    [autoit]

    RunWait(@ComSpec & ' /c ' & "RDsys/7za.exe a -tzip " & chr(34) & _
    @MyDocumentsdir & "\Test-0" & @WDAY & ".zip" & chr(34) & _
    " C:\$$", @ScriptDir, @SW_MINIMIZE)

    [/autoit]

    KÖNNTE aus folgenden Gründen:
    - ich habe kein 7za.exe auf meinem PC
    - das alte PKZIP was ich zum Testen benutzt habe, weigert sich Ordner mit mehr wie 8 Zeichen zu benutzen


    Wenn man die Variablen wie @MyDocumentsDir, @TempDir, @UserProfileDir, u.s.w. am besten den kompletten String immer in Anführungszeichen ( chr(34) ) packen. Wer weiß wo der Ordner beim ausführenden User liegt.

  • fortschritt bei fileinstall als progressbar anzeigen

    • Micha_he
    • 7. Januar 2008 um 19:30

    Als Ersatz für FileCopy könnte folgende Variante dienen:

    [autoit]

    #include <GUIConstants.au3>

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

    Opt("GUIOnEventMode", 1)
    $Form1 = GUICreate("Form1", 196, 47, 193, 125)
    $Progress1 = GUICtrlCreateProgress(16, 8, 150, 17)
    GUICtrlSetLimit(-1, 100, 0)
    GUISetState(@SW_SHOW)

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

    $filesize = 728369152 ; hier die Größe in Byte eintragen
    $buffer = 1024
    AdlibEnable("check",100)

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

    $in = FileOpen("demo.exe",0)
    $out = FileOpen("demo2.exe",1)
    While 1
    $daten = FileRead($in,$buffer)
    If @error = -1 Then ExitLoop
    FileWrite($out,$daten)
    Wend
    FileClose($in)
    FileClose($out)
    Sleep(5000)

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

    Func check()
    GUICtrlSetData($Progress1,Round(100 * FileGetSize("demo2.exe") / $filesize))
    EndFunc

    [/autoit]

    Aber das hilft nicht, wenn man mit FileInstall arbeiten will....

  • 7zip & @MyDocumentsdir ?

    • Micha_he
    • 7. Januar 2008 um 19:26

    Kann es sein, das Dein '@MyDocumentsDir' Leerzeichen enthält ?

  • fortschritt bei fileinstall als progressbar anzeigen

    • Micha_he
    • 5. Januar 2008 um 19:26

    Doch, zum Schluß zeigte er mir 100% an. Aber von 0 auf 100 innerhalb einer Sekunde !

    Ich musste aber beim FileInstall noch die Quelle ändern (Variablen sind dort nicht erlaubt, jedenfalls nicht bei meiner AutoIt-Version). Und bei meinem Beispiel fehlte noch eine ')' am Ende der GUICtrlSetData-Zeile.

    Edit: Scheinbar wird AdLib nur in Pausenzeiten abgearbeitet und bei FileCopy und FileInstall gibt es keine !

  • fortschritt bei fileinstall als progressbar anzeigen

    • Micha_he
    • 5. Januar 2008 um 19:14

    Ich habe das jetzt mal getestet.

    Scheinbar funktioniert während eines FileInstall bzw. FileCopy keine ADLib-Funktion !?!?

  • fortschritt bei fileinstall als progressbar anzeigen

    • Micha_he
    • 5. Januar 2008 um 17:58

    Ich habs zwar nicht getestet, aber so sollte es richtig angezeigt werden:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    Opt("GUIOnEventMode", 1)
    $Form1 = GUICreate("Form1", 196, 47, 193, 125)
    $Progress1 = GUICtrlCreateProgress(16, 8, 150, 17)
    GUICtrlSetLimit(-1, 100, 0)
    GUISetState(@SW_SHOW)

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

    $filesize = 12345678 ; hier die Größe in Byte eintragen
    AdlibEnable("check",100)

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

    FileInstall(@DesktopDir & "\downloads\installer\demo.exe",@DesktopDir & "\downloads\demo.exe")

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

    While 1
    Sleep(100)
    WEnd

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

    Func check()
    GUICtrlSetData($Progress1,100 * Round(FileGetSize(@DesktopDir & "\downloads\demo.exe") / $filesize)
    EndFunc

    [/autoit]
  • LeerzeichenProblem

    • Micha_he
    • 5. Januar 2008 um 10:42

    Also bei mir funktioniert Deine erste Lösung.

    Mein '@MyDocumentsDir' liegt zwar nicht auch C:\ enthält aber in 'Eigene Dateien' auch ein Leerzeichen. Und auch der Quellpfad (@ScriptFullPath) enthielt in meinem Test ein Leerzeichen.

    Es funktioniert auch, obwohl der abschließende '\' am Zielpfad fehlte, was ich erst als Fehler ausgemacht hatte.

  • fortschritt bei fileinstall als progressbar anzeigen

    • Micha_he
    • 5. Januar 2008 um 10:24

    muss das AdLibEnable nicht vor das FileInstall ?

  • Schleife mit variabler Anzahl an Inhalten

    • Micha_he
    • 30. Dezember 2007 um 17:36

    Dann mach es halt so:

    Spoiler anzeigen
    [autoit]

    $gesamt = 15
    $schleife1 = Random(3,12,1)
    $schleife2 = $gesamt - $schleife1
    ...

    [/autoit]

    Dann hast Du per Zufall zwischen 3 und 12 Durchläufe je Schleife und immer die gleiche Gesamtanzahl von Durchläufen.

  • Wie kann ich das zusammenfassen?

    • Micha_he
    • 29. Dezember 2007 um 10:41

    Obwohl doch in eurer Variante die MsgBox IMMER erscheint !
    Besser wäre ...

    Spoiler anzeigen
    [autoit]

    Global $Message
    $Message = ""
    Select
    Case StringIsDigit($XC) = 0
    $Message &= $XC & @CRLF
    ContinueCase
    Case StringIsDigit($MC) = 0
    $Message &= $MC & @CRLF
    ContinueCase
    Case StringIsDigit($HC) = 0
    $Message &= $HC & @CRLF
    ContinueCase
    Case StringIsDigit($AC) = 0
    $Message &= $AC & @CRLF
    ContinueCase
    Case StringIsDigit($MK) = 0
    $Message &= $MK & @CRLF
    ContinueCase
    Case StringIsDigit($HK) = 0
    $Message &= $HK & @CRLF
    ContinueCase
    Case StringIsDigit($AK) = 0
    $Message &= $AK & @CRLF
    EndSelect
    If $Message <> "" Then MsgBox(16, "Fehler", $Message)

    [/autoit]
  • security check funktion

    • Micha_he
    • 28. Dezember 2007 um 10:44

    Meinst Du wirklich VERSCHLÜSSELT oder nur das man es nicht lesen kann ?
    Weil so wie Du es beschreibst scheint es ja nur etwas in dieser Art zu sein:

    Spoiler anzeigen
    [autoit]

    $pw = InputBox ( "Titel der Iputbox", "Das Passwort bitte...","","*")
    MsgBox (0,"Ausgabe des Passworts",$pw)

    [/autoit]

    Wichtig ist dabei ja der 4.Parameter der Inputbox.

  • Textdatei verändern

    • Micha_he
    • 23. Dezember 2007 um 00:29

    Ich hoffe nicht ;)

    Das ermöglicht unstrukturiertes Springen im Programmcode !

  • Fortschritt!?!

    • Micha_he
    • 23. Dezember 2007 um 00:20

    In Kurzform sollte es so aussehen:


    GUICtrlSetDATA ( $progressbarID, Round ([Bytes geschafft]/[Bytes gesamt] * 100))


    Wobei $progressbarID die ID Deiner mit "GUICtrlCreateProgress" erzeugten Progressbar ist.
    Kompliziert ist meist, die Größe des gesamten Downloads bei Beginn zu wissen.

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™