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

  • USB Autorun

    • Micha_he
    • 6. Oktober 2008 um 12:22

    Raupi : Danke für den Hinweis, werde das Originalscript im ersten Beitrag auf deine Fehlermeldung hin, nochmal anpassen.
    > Script soeben im ersten Beitrag korrigiert, so das das Fehler aller Wechseldatenträger nicht mehr zum Fehler führt.

    Das Script zum Erzeugen der "Autorun.inf" ist aber nicht ganz korrekt. Es fragt zwar das Ziellaufwerk ab, verwendet dann aber immer das Laufwerk "N:\".

    Hier eine korrigierte Version

    Spoiler anzeigen
    [autoit]

    Local $Var,$Var1,$Var2,$var3
    Local $Icon,$Open,$Close

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

    $var = FileSelectFolder("Wechseldatenträger für Autorun.inf auswählen ", "")
    $var1 = FileOpenDialog("Autorun icon auswählen ", $Var, "Bilder (*.ico)", 1 + 4 )
    $var2 = FileOpenDialog("Autorun open auswählen ", $Var, "Bilder (*.exe)", 1 + 4 )
    $var3 = FileOpenDialog("Autorun close auswählen ", $Var, "Bilder (*.exe)", 1 + 4 )
    $Icon = Stringsplit ($var1,"\")
    $Open = Stringsplit ($var2,"\")
    $Close = Stringsplit ($var3,"\")
    IniWrite(StringLeft($var,2) & "\autorun.inf", "autorun", "icon", $Icon[2])
    IniWrite(StringLeft($var,2) & "\autorun.inf", "autorun" , "open", $Open[2])
    IniWrite(StringLeft($var,2) & "\autorun.inf", "autorun", "close", $Close[2])

    [/autoit]
  • nVidia Grafikkraten Temperatur Check

    • Micha_he
    • 4. Oktober 2008 um 17:46

    In Zeile 21 muss es statt "$nvcpldll", "$nvsulibdll" heißen und in Zeile 75 führt das fehlen dieser DLL dann zu einem Fehler/Abbruch, da die Variable "$hnVsublibDLL" dann nicht gesetzt wurde.

    Edit: Zeile 75 sollte heißen "If IsDeclared("hnVsublibDLL") Then DllClose($hnVsublibDLL)"

    Ansonsten schöne Idee !

  • Virtuelles Laufwerk suchen und löschen

    • Micha_he
    • 2. Oktober 2008 um 12:26

    Meines Wissens nach gar nicht. Mit SUBST angelegte Laufwerke, lassen sich auch nur mit SUBST wieder löschen.
    Ist das Laufwerk dagegen mit "net use..." verbunden, kann man es unter AutoIt mit "DriveMapDel" wieder entfernen.

    Micha_he

  • _Net_Share_ShareCheck - Rückgabewert

    • Micha_he
    • 1. Oktober 2008 um 15:56

    Ich weis jetzt nicht was "_Net_Share_ShareCheck" besser kann, aber ich prüfe das Vorhandensein von Netzwerkfreigaben einfach wie folgt:

    [autoit]

    $pc = "PC1"
    $Share = "Freigabe1"
    If FileExists("\\" & $pc & "\" & $share) Then Msgbox(0,"","Existiert")

    [/autoit]
  • USB Autorun

    • Micha_he
    • 29. September 2008 um 08:09

    Hast Du die Datei "autorun.ini" oder korrekterweise "autorun.inf" genannt ?

    ShellExecute habe ich zu Anfang auch genutzt. Nur beim STOP brauche ich die Prozess-ID, um nach dem Ende die Datei zu löschen. Und ShellExecute liefert leider keine ID zurück.

    Micha_he

  • USB Autorun

    • Micha_he
    • 28. September 2008 um 22:16

    Da ich immer wieder Ärger hatte, das die USB-Autostart-Tools (bei mir lief schon ewig der USBAgent) beim Einschalten meines Druckers einen Fehler hervorriefen (da kein Zugriff auf die Speicherkartenslots möglich ist), habe ich mir einen Ersatz programmiert.

    Herausgekommen ist "USB_Autorun".

    Spoiler anzeigen
    [autoit]

    ; USB_Autorun_DriveGetDrive V1.1
    ; von M.Schröder 28.09.2008
    ;
    ; Das Programm wird z.B. per Autostart gestartet und wertet auf
    ; Wechseldatenträgern eine ggf. vorhandene "Autorun.inf" aus und
    ; startet gewünschte Dateien oder Programme beim Hinzufügen und
    ; Entfernen des Datenträgers.
    ;
    ; Eine "Autorun.inf" kann wie folgt aussehen:
    ; [autorun]
    ; icon=icon.ico
    ; open=start.exe
    ; close=stop.exe

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

    #NoTrayIcon
    #compiler_icon=USB_Autorun.ico
    #compiler_outfile=USB_Autorun.exe
    #include <array.au3>
    Opt("TrayMenuMode",1)
    Opt("TrayOnEventMode",1)
    Opt("MustDeclareVars",1)

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

    Dim $neu, $alt, $start, $stop, $i, $search, $file
    Dim $trayexit, $time, $pid, $StopTimeout = 10000

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

    ; ggf. alte STOP-Dateien löschen
    $search = FileFindFirstFile(@TEMPDIR & "\USBARS_*.*")
    If $search <> -1 Then
    While 1
    $file = FileFindNextFile($search)
    If @error Then ExitLoop
    FileDelete(@TEMPDIR & "\" & $file)
    Wend
    EndIf
    FileClose($search)

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

    ; Neues Traymenue zum Beenden anlegen
    $trayexit = TrayCreateItem("USB Autorun beenden")
    TrayItemSetOnEvent(-1,"ExitEvent")
    TraySetIcon("USB_Autorun.ico")
    TraySetToolTip ("USB Autorun")
    TraySetState()

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

    While 1
    $neu = GetDrives()
    For $i = 1 To $neu[0]
    If _ArraySearch($alt,$neu[$i]) < 1 And DriveStatus($neu[$i]) = "READY" Then
    ; neuer Wechseldatenträger hinzugefügt
    $start = ""
    $stop = ""
    if FileExists($neu[$i] & "\Autorun.inf") then
    $start = IniRead($neu[$i] & "\Autorun.inf","autorun","open","")
    $stop = IniRead($neu[$i] & "\Autorun.inf","autorun","close","")
    EndIf
    If $stop <> "" And FileExists($neu[$i] & "\" & $stop) Then
    FileCopy($neu[$i] & "\" & $stop, @TempDir & "\USBARS_" & StringLeft($neu[$i],1) & StringRight($stop,4))
    EndIf
    If $start <> "" And FileExists($neu[$i] & "\" & $start) Then
    Run($neu[$i] & "\" & $start,"",$neu[$i] & "\")
    EndIf
    EndIf
    Next
    If IsArray($alt) And $alt[0] > 0 Then
    For $i = 1 To $alt[0]
    If _ArraySearch($neu,$alt[$i]) < 1 Then
    ; ein Wechseldatenträger wurde entfernt
    $search = FileFindFirstFile(@TEMPDIR & "\USBARS_" & StringLeft($alt[$i],1) & ".*")
    If $search <> -1 Then
    While 1
    $file = FileFindNextFile($search)
    If @error Then ExitLoop
    $time = TimerInit()
    $pid = Run(@TEMPDIR & "\" & $file)
    ; wartet auf das Beenden des Programms bzw. bis zum Timeout
    ; und versucht dann die Datei aus dem %TEMP-Ordner zu löschen
    While ProcessExists($pid) And TimerDiff($time) < $StopTimeout
    Sleep(100)
    Wend
    FileDelete(@TEMPDIR & "\" & $file)
    Wend
    EndIf
    FileClose($search)
    EndIf
    Next
    EndIf
    $alt = $neu
    Sleep (1000)
    Wend

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

    Func GetDrives()
    Local $array_Drives
    $array_Drives = drivegetdrive("REMOVABLE")
    If IsArray($array_Drives) Then
    _ArrayDelete($array_Drives,_ArraySearch($array_Drives,"a:"))
    _ArrayDelete($array_Drives,_ArraySearch($array_Drives,"b:"))
    $array_Drives[0] = UBound($array_Drives) -1
    Else
    Local $array_Drives[1]
    $array_Drives[0] = 0
    EndIf
    Return $array_Drives
    EndFunc

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

    Func ExitEvent()
    Exit
    EndFunc

    [/autoit]


    Vorteile:
    - keine Installation, kann von einem eingeschränkten Konto aus dem Autostartordner laufen
    - kein Fehler mehr, wenn im Laufwerk der Datenträger nicht bereit ist
    - kann, wie auch der USBAgent, beim Entfernen eines Laufwerks ein Programm ausführen

    Vielleicht kann es ja jemand gebrauchen...

  • Script sich von neu starten lassen

    • Micha_he
    • 8. September 2008 um 15:46

    Ich würde es so schreiben (ausgehend von Deinem Beispiel):

    [autoit]

    Do
    $frage = MsgBox(36,"Sag lieber die Wahrheit!","Hast du schon mal gelogen?")

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

    If $frage = 6 Then
    MsgBox(48,"Lügner!","Dir glaube ich nie mehr!")
    ElseIf $frage = 7 Then
    $nein = MsgBox(48,"Lügner!","Schon wieder gelogen!")
    EndIf
    Until $frage <> 7

    [/autoit]
  • User-Autostart Schlüssel?

    • Micha_he
    • 19. August 2008 um 12:41

    Hi,

    der Schlüssel "HKEY_CURRENT_USER" greift definitiv nur bei einem User !

    Dein Fehler muss wo anders liegen, wenn das Programm bei allen Usern ausgeführt wird.

  • Bild in Gui aktualisieren.

    • Micha_he
    • 19. August 2008 um 12:32

    Schon einmal mit "GUICtrlSetImage()" versucht ?

  • Problem mit Fileinstall und Bildabrufen undter Vista....

    • Micha_he
    • 11. August 2008 um 22:52

    Am besten bei FileInstall immer mit @tempdir arbeiten ( und auch anschließend die Dateien wieder löschen).

    Dann klappts auch mit NICHT-Administratoren ;)

  • Automatische Aktualisierung?!

    • Micha_he
    • 5. August 2008 um 06:58

    So müsste es gehen... (GUICtrlSetData statt GUICtrlCreateLabel und eine vernünftige Schleife)

    Spoiler anzeigen
    [autoit]

    #include <GuiConstantsEx.au3>

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

    GuiCreate("Sascha3008s Greeting Viewer", 600, 100,0 ,0 )
    $label = GUICtrlCreateLabel("", 0, 0, 600)
    GuiSetState()

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

    While 1
    $msg = GUIGetMsg()
    Select

    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop

    Case Else
    InetGet ( "http://www.sascha3008.de/test.txt", "C:\Windows\Temp\j594nw9j.txt" )
    $f=FileOpen("C:\Windows\Temp\j594nw9j.txt",0)
    If $f <> -1 Then
    $s=FileRead($f,1000)
    GUICtrlSetData($label,$s)
    Else
    GUICtrlSetDate($label,"FEHLER: Datei nicht gefunden!")
    EndIf
    FileClose($f)

    EndSelect
    Sleep (100) ; verringert die CPU-Last
    WEnd

    [/autoit]
  • Dateien auf Änderungen scannen

    • Micha_he
    • 26. Juli 2008 um 23:54

    Ich habe ein Backupscript geschrieben, welches auf einer MD5-Differenz beruht. Vielleicht kann man es für Deine Zwecke anpassen.
    Hier das Script:

    Spoiler anzeigen
    [autoit]

    $fehler = FALSE
    $logfile = "MD5Backup.log"

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

    If _MD5Backup("C:\Benutzerdaten","\\Backupdrive\Folder","Benutzerdaten.db") = FALSE then $fehler = TRUE
    ; ggf weitere Backupaufträge

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

    If $fehler = FALSE Then
    Msgbox(0,"","Backup wurde erfolgreich durchgeführt !" & @CRLF & @CRLF & "Ereignisse können im Log '" & $logfile & "' nachgelesen werden.")
    Else
    Msgbox(0,"","Backup wurde mit Fehlern abgeschlossen !" & @CRLF & @CRLF & "Diese Fehler können im Log '" & $logfile & "' nachgelesen werden.")
    EndIf

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

    Func _MD5Backup($quelle,$ziel,$dbname)
    $dbneu = ""
    $dbinhalt = ""
    $return = TRUE
    GLOBAL $dll
    If FileExists($quelle) Then
    $dll = DllOpen("hashes.dll")
    If FileGetSize($logfile) > 0 Then FileWriteLine($logfile,@CRLF & "**********" & @CRLF)
    FileWriteLine($logfile,"Start des Backup von '" & $quelle & "' nach '" & $ziel & "' am " & @MDAY & "." & @MON & "." & @YEAR & " um " & @HOUR & ":" & @MIN & ":" & @SEC)
    If FileExists($dbname) then
    FileWriteLine($logfile,"Quelle wird auf gelöschte/veränderte Ordner/Dateien geprüft")
    $dbinhalt = FileRead($dbname)
    $dbzeilen = StringSplit($dbinhalt,@CRLF,1)
    For $i = 1 to $dbzeilen[0]
    $hashalt = StringLeft($dbzeilen[$i],StringInStr($dbzeilen[$i],",")-1)
    $name = StringMid($dbzeilen[$i],StringInStr($dbzeilen[$i],",")+1)
    If Not FileExists($quelle & $name) Then
    ; Datei oder Ordner existiert nicht mehr, wird im Ziel und in der DB gelöscht
    If $hashalt = "Verzeichnis---------------------" Then
    If FileExists($ziel & $name) Then
    If DirRemove($ziel & $name,1) = 0 Then
    FileWriteLine($logfile,"Fehler beim Löschen des Ordners '" & $ziel & $name & "'")
    $dbneu &= $hashalt & " " & $name & @CRLF
    $return = FALSE
    Else
    FileWriteLine($logfile,"Gelöscht : " & $ziel & $name)
    EndIf
    Else
    FileWriteLine($logfile,"DB bereinigt von : " & $name)
    EndIf
    Else
    If FileExists($ziel & $name) Then
    If FileDelete($ziel & $name) = 0 Then
    FileWriteLine($logfile,"Fehler beim Entfernen der Datei '" & $ziel & $name & "'")
    $dbneu &= $hashalt & " " & $name & @CRLF
    $return = FALSE
    Else
    FileWriteLine($logfile,"Gelöscht : " & $ziel & $name)
    EndIf
    Else
    FileWriteLine($logfile,"DB korr. : " & $name)
    EndIf
    EndIf
    Else
    ; Datei oder Ordner existiert noch
    If $hashalt = "Verzeichnis---------------------" Then
    ; ist ein Ordner, also nur in der DB behalten, nicht vergleichen
    $dbneu &= $hashalt & "," & $name & @CRLF
    Else
    ; ist eine Datei, aktuellen Hash ermitteln
    If FileGetSize($quelle & $name) = 0 Then
    ; der Hash einer 0-Byte-Datei kann nicht berechnet werden
    $hashneu = "groesseNull---------------------"
    Else
    $hasharray = DllCall($dll,"str","testit","str",$quelle & $name,"str","MD5","int",false)
    $hashneu = StringLeft($hasharray[0],StringInStr($hasharray[0],@CRLF)-1)
    EndIf
    If $hashneu <> $hashalt Then
    ; Datei hat sich veraendert
    FileWriteLine($logfile,"Verändert: " & $name)
    If FileCopy($quelle & $name,$ziel & $name,1) = 0 Then
    FileWriteLine($logfile,"Fehler beim Kopierem der Datei '" & $quelle & $name & "'")
    $dbneu &= $hashalt & "," & $name & @CRLF
    $return = FALSE
    Else
    $dbneu &= $hashneu & "," & $name & @CRLF
    EndIf
    Else
    ; Datei ist unveraendert und verbleibt in der DB
    $dbneu &= $hashalt & "," & $name & @CRLF
    EndIf
    EndIf
    EndIf
    Sleep(10)
    Next
    EndIf
    ; Quelle wird gescannt um neue Dateien zu finden oder
    ; eine fehlende Datenbank neu aufzubauen
    FileWriteLine($logfile,"Quelle wird auf neue Ordner/Dateien geprüft")
    $quelle_neu = _GetFolderMD5($quelle,"","*.*")
    If FileExists($ziel) Then
    ; es wird geprüft ob in der Quelle neue Dateien zu finden sind,
    ; die in der alten (aktuellen) DB nicht vorhanden sind
    $quelldateien = StringSplit($quelle_neu,@CRLF,1)
    $dbaktuell = $dbneu
    For $i = 1 to $quelldateien[0]
    $hashneu = StringLeft($quelldateien[$i],StringInStr($quelldateien[$i],",")-1)
    $name = StringMid($quelldateien[$i],StringInStr($quelldateien[$i],",")+1)
    $dbaktuell = StringReplace($dbaktuell,$hashneu & "," & $name & @CRLF,"",1,2)
    If @extended <> 1 Then
    FileWriteLine($logfile,"Neu : " & $name)
    If $hashneu = "Verzeichnis---------------------" Then
    If DirCreate($ziel & $name) = 0 Then
    FileWriteLine($logfile,"Fehler beim Erzeugen des Ordners '" & $ziel & $name & "'")
    $return = FALSE
    Else
    $dbneu &= $hashneu & "," & $name & @CRLF
    EndIf
    Else
    If FileCopy($quelle & $name,$ziel & $name,1) = 0 Then
    FileWriteLine($logfile,"Fehler beim Kopieren der Datei '" & $quelle & $name & "'")
    $return = FALSE
    Else
    $dbneu &= $hashneu & "," & $name & @CRLF
    EndIf
    EndIf
    EndIf
    Sleep(10)
    Next
    Else
    ; komplette Quelle wird neu kopiert und die Quell-DB übernommen
    FileWriteLine($logfile,"Ziel existiert nicht, komplette Quelle wird kopiert !")
    If DirCopy($quelle,$ziel,1) = 0 Then
    FileWriteLine($logfile,"Fehler beim Kopieren des Ordners '" & $quelle & "'")
    $return = FALSE
    Else
    $dbneu = $quelle_neu & @CRLF
    EndIf
    EndIf
    $dbid = FileOpen($dbname,2)
    FileWrite($dbid,StringLeft($dbneu,StringLen($dbneu)-2))
    FileClose($dbid)
    DllClose($dll)
    FileWriteLine($logfile,"Backup von '" & $quelle & "' nach '" & $ziel & "' wurde beendet am " & @MDAY & "." & @MON & "." & @YEAR & " um " & @HOUR & ":" & @MIN & ":" & @SEC & @CRLF)
    Else
    FileWriteLine($logfile,"Backup von '" & $quelle & "' konnte am " & @MDAY & "." & @MON & "." & @YEAR & " um " & @HOUR & ":" & @MIN & ":" & @SEC & " nicht gestartet werden." & @CRLF & "Die Quelle wurde nicht gefunden !" & @CRLF)
    EndIf
    Return $return
    EndFunc

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

    func _GetFolderMD5($ordner,$subordner,$muster)
    ; Gibt eine String mit Zeilenvorschueben zurück, in der Zeile für Zeile
    ; ein MD5-Hash und mit Kommata getrennt der Dateiname ist
    ; Die Funktion arbeitet rekursiv !
    Local $ausgabe
    If StringRight($ordner & $subordner,1) <> "\" then $subordner &= "\"
    $ausgabe = "Verzeichnis---------------------," & $subordner
    $suche = FileFindFirstFile($ordner & $subordner & $muster)
    While 1
    $file = FileFindNextFile($suche)
    If @error then ExitLoop
    If StringInStr(FileGetAttrib($ordner & $subordner & $file),"D") > 0 Then
    $ausgabe = $ausgabe & @CRLF & _GetFolderMD5($ordner,$subordner & $file,$muster)
    Else
    If FileGetSize($ordner & $subordner & $file) = 0 then
    $ausgabe &= @CRLF & "groesseNull---------------------," & $subordner & $file
    Else
    $result = DllCall($dll,"str","testit","str",$ordner & $subordner & $file,"str","MD5","int",false)
    $ausgabe &= @CRLF & StringLeft($result[0],StringInStr($result[0],@CRLF)-1) & "," & $subordner & $file
    EndIf
    EndIf
    Sleep(10)
    Wend
    FileClose($suche)
    If StringLeft($ausgabe,2) = @CRLF then $ausgabe = StringMid($ausgabe,3)
    Return($ausgabe)
    endfunc

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

    Dazu wird noch die folgende Hashes.dll benötigt:

  • msi ausführen?

    • Micha_he
    • 19. Juli 2008 um 12:08

    @siggi_f: Genau so ist es. Man übergibt das MSi-Paket an den Installer.

    Remote ist das auch mit dem Tool "psexec.exe" möglich. Mit Autoit ein Installer geschrieben, und den per "psexec.exe" auf das Remotesystem kopiert (kann bei der Ausführung angegeben werden) und ausgeführt. Und schon hat man ein kostengünstiges Remote-Install-System. Nur eben nicht vollautomatisch, sondern man muss die Installion auf den Rechner einzeln anstarten (oder sich eine Softwareverteilung in AutoIt schreiben ;) ).

  • msi ausführen?

    • Micha_he
    • 18. Juli 2008 um 12:16

    Normalerweise werden MIS-Pakete mit "MSIEXEC.exe /i [paket.msi] /quiet /q n" gestartet !

    Aus Autoit heraus : RunWait("MSIEXEC.exe /i [paket.msi] /quiet /q n")
    Das Paket ggf. in ' ' einfassen, wenn Leerzeichen enthalten sind.

    dabei sind /quiet und /q n für die Silent-Installation.

  • String nach einer bestimmten zeichenfolge durchsuchen

    • Micha_he
    • 15. Juli 2008 um 12:20

    wie wärs mit (frei Hand, ohne Funktionsgarantie):

    $name = StringLeft($Split[1], StringInStr($Split[1], "(") - 1)

    Hierbei wird der linke Teil des Strings genommen, bis zum Zeichen vor der "(" !

  • geplante tasks und autoit

    • Micha_he
    • 11. Juli 2008 um 12:57

    Wichtig ist auch, wenn das Script nicht unter dem Account des gerade angemeldeten Users läuft und etwas per Messagebox ausgibt, dann sieht man die Messagebox nicht, das Script bleibt aber an der Stelle stehen. Also bei Scripten die als geplanter Task laufen sollen, am besten auf alle Ausgaben verzichten, damit das Script IMMER durchläuft. Wenn nötig, dann lieber in eine Logdatei schreiben.

  • Icon mit Transparentem Hintergrund?!

    • Micha_he
    • 7. Juli 2008 um 09:44

    Im Fall, das es wirklich nur am Transparenten Hintergrund des Icon liegt:

    IrfanView speichert auch Icon's mit tranparentem Hintergrund !

  • Bild in Quellcode einbinden?

    • Micha_he
    • 11. Mai 2008 um 20:16

    Top, funktioniert jetzt einwandfrei !

    Gruß
    Micha_he

  • Bild in Quellcode einbinden?

    • Micha_he
    • 10. Mai 2008 um 15:26

    @progandy: Interessante Funktion ! Wenn ich die erzeugte Datei "tempembededfile.txt" in 'au3' umbenenne und ausführe kommt bei mir folgender Fehler:
    "Error: String missing closing quote".
    Obwohl der String in allen Zeilen sauber abgeschlossen ist. Scheinbar geht die Menge an mit "&" aneinandergefügten Strings nicht.

    Ich habe also den Code wie folgt abgeändert:

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    $file = FileOpenDialog("Choose EmbedFile",@DesktopDir,"All Files (*.*)")
    $Fname = StringTrimLeft($file,StringInStr($file,"\",1,-1))

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

    If @error Then Exit
    $f = FileOpen($file,16)
    $t = FileRead($f)
    FileClose($f)
    $z = StringRegExp($t,"(.{128}|.{1,128)",3)
    $Ubound = UBound($z)
    If $UBound = 1 Then
    $String = '$FileName = "' & $z[0] & '"'
    ElseIf $UBound > 1 Then
    $String = '$FileName = "' & $z[0] & '"' & @CRLF
    For $i = 1 To $UBound-2 Step 1
    $String &= ' $FileName &= "' & $z[$i] & '"' & @CRLF
    Next
    $String &= ' $FileName &= "' & $z[$UBound-1] & '"' & @CRLF
    EndIf

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

    If $UBound > 0 Then $String &= '$WritungFile = FileOpen(@ScriptDir & "\'&$Fname&'",18)' & @CRLF & 'FileWrite($WritungFile,$FileName)' & @CRLF & 'FileClose($WritungFile)' & @CRLF & @CRLF
    FileDelete(@TempDir & "\tempembedFile.txt")
    FileWrite(@TempDir & "\tempembedFile.txt",$String)
    ShellExecute(@TempDir & "\tempembedFile.txt")

    [/autoit]

    Damit funktioniert es. Leider fehlen am Ende immer einige Bytes und das Bild hat einige Fehler. Woran kann das liegen ?

  • LW-Buchstabe U3-Stick ermitteln

    • Micha_he
    • 3. Mai 2008 um 21:21

    Bei PartableApps wird auch nur nach einer speziellen INI-Datei auf allen USB-Laufwerken gesucht und wenn gefunden die darin enthaltenen gestartet.

    Funktioniert also auch nur solange kein zweiter U3-Stick gleichzeitig in Betrieb genommen wird ! Dann startet nämlich wieder die zuerst gefundene INI-Datei.
    Daher meine Idee über die Seriennummer oder etwas ähnliches den U3-USB-Stick zu ermitteln.

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™