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

  • Überprüfen ob etwas installiert wurde - Software-EInträge checken?

    • Micha_he
    • 22. April 2010 um 13:12

    Das zurückgegebene Array der Funktion '_ComputerGetSoftware()' wies bei mir ziemlich viele leere Zeilen auf.

    Dies lag an fehlenden "Displayname"-Unterschlüsseln der Applikationen. Habe das Script daraufhin wie folgt abgeändert:

    Spoiler anzeigen
    [autoit]

    #include<Array.au3>
    Local $re
    _ComputerGetSoftware($re)
    _ArrayDisplay($re, 'Software', -1, 0, '', '', 'Number|Name|Version|Publisher|Uninstall String')

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

    ;===============================================================================
    ; Description: Returns the Software information in an array.
    ; Parameter(s): $aSoftwareInfo - By Reference - Software Information array.
    ; Requirement(s): None
    ; Return Value(s): On Success - Returns array of Software Information.
    ; $aSoftwareInfo[0][0] = Number of Software Installed
    ; $aSoftwareInfo[$i][0] = Name ($i starts at 1)
    ; $aSoftwareInfo[$i][1] = Version
    ; $aSoftwareInfo[$i][2] = Publisher
    ; $aSoftwareInfo[$i][3] = Uninstall String
    ; On Failure - @error = 1 and Returns 0
    ; @extended = 1 - Array contains no information
    ; Author(s): Jarvis Stubblefield (support "at" vortexrevolutions "dot" com)
    ; Note(s):
    ;===============================================================================
    Func _ComputerGetSoftware(ByRef $aSoftwareInfo)
    Local Const $UnInstKey = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
    Local $i = 1
    Dim $aSoftwareInfo[1][4]

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

    While 1
    $AppKey = RegEnumKey($UnInstKey, $i)
    If @error <> 0 Then ExitLoop
    ReDim $aSoftwareInfo[UBound($aSoftwareInfo) + 1][4]
    $aSoftwareInfo[$i][0] = StringStripWS(StringReplace(RegRead($UnInstKey & "\" & $AppKey, "DisplayName"), " (remove only)", ""), 3)
    If $aSoftwareInfo[$i][0] = "" Then $aSoftwareInfo[$i][0] = $AppKey
    $aSoftwareInfo[$i][1] = StringStripWS(RegRead($UnInstKey & "\" & $AppKey, "DisplayVersion"), 3)
    $aSoftwareInfo[$i][2] = StringStripWS(RegRead($UnInstKey & "\" & $AppKey, "Publisher"), 3)
    $aSoftwareInfo[$i][3] = StringStripWS(RegRead($UnInstKey & "\" & $AppKey, "UninstallString"), 3)
    $i += 1
    WEnd

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

    $aSoftwareInfo[0][0] = UBound($aSoftwareInfo, 1) - 1
    If $aSoftwareInfo[0][0] < 1 Then
    SetError(1, 1, 0)
    EndIf
    EndFunc

    [/autoit]
  • Probleme mit Opera 10.51

    • Micha_he
    • 21. April 2010 um 09:33

    Dank euch beiden. Andy: Den Beitrag habe ich in dem Forum nicht erwartet.

    Ich habe gestern bestimmt vier oder fünf Beiträge verfasst, die alle im Nirvana verschwunden sind. Mist, ich vergesse immer den Browser für Autoit.de zu wechseln.

    Warten wir mal ab, ob sich das Problem von einer der beiden Seiten bessert.

  • Probleme mit Opera 10.51

    • Micha_he
    • 20. April 2010 um 22:07

    Habe seit Opera 10.51 Probleme im Forum. Ich kann weder Beiträge erstellen noch ändern.

    Bekommen immer Fehlermeldungen, das etwas fehlt !

    Jemand auch schon die Schwierigkeiten gehabt ? Wenn dies jetzt klappt, geht es mit der V9.01...

    micha_he

    Edit: Scheint ein Problem der Board-Software mit Opera >= V10.5 sein. Soll einen Patch
    geben und dann ab der V3.2.0 wohl behoben sein.
    Mit deaktiviertem Javascript geht es scheinbar ersteinmal.

  • Verschlüsselungstool für USB-Stick

    • Micha_he
    • 20. April 2010 um 21:25

    In einem neuen Beitrag geht es weiter... Verschlüsselungstools für USB-Stick (AKrypto)

  • Verschlüsselungstool für USB-Stick (AKrypto)

    • Micha_he
    • 20. April 2010 um 21:22

    So, ich hoffe ich aber die groben Fehler alle gefunden und beseitigt.

    Folgendes kann das Tool:

    • lauffähig ohne Installation und Adminrechte, also auch direkt vom USB-Stick
    • Dateien und Ordner mit AES verrschlüsseln
    • Datei- und Ordnernamen mit Blowfish/Base64 verschlüsseln
    • Dateien und Ordner per 'Drag And Drop' hinzufügen
    • neue verschlüsselte Dateien und Ordner per Kontextmenue anlegen
    • nur einmal beim Start nach einem Passwort fragen
    • es werden keine unnötigen unverschlüsselten Dateien auf die lokale Platte geschrieben
    • Dateien werden per Doppelklick entschlüsselt und mit der verknüpften Anwendung geöffnet
    • veränderte Dateien können anschließend wieder neu verschlüsselt werden
    • Fensterposition und Größe veränderbar / werden per INI gespeichert
    • Breite TreeView / ListView variabel / wird per INI gespeichert
    • und einiges mehr...

    Vielleicht schaut es sich ja der eine oder andere mal an.
    Verbesserungen würde ich dann in meine Originalversion unter Umständen übernehmen.

    Auch Fehler können natürlich gemeldet werden. Wie schnell ich aber zu einer Berichtigung komme, will ich lieber nicht versprechen. Am besten direkt bei GitHub.

    Die durchgeführten Anpassungen, sind in den Beiträgen in diesem Thema, sowie im History-Teil des Quellcodes detailliert beschrieben.

    Aktuelle Version von AKrypto:

    Dateien

    AKrypto_V0_552.zip 130,7 kB – 470 Downloads
  • Dienste im Hintergrund starten/stoppen

    • Micha_he
    • 24. März 2010 um 17:23

    Unter Umständen ist es einfacher und schneller, die Dienste über Autoit direkt zu stoppen und starten.

    Im Anhang findest Du 2 UDFs, mit denen dies möglich sein sollte.

    Dateien

    ServiceControl.au3 18,65 kB – 406 Downloads ServiceControl2.au3 15,51 kB – 338 Downloads
  • Thundebirth ähnliches Programm mit Autoit

    • Micha_he
    • 23. März 2010 um 12:14

    Dann müsstest Du mal hoffen, das die Ferien auf 3 Monate verlängert werden :P

  • Verzeichnis überwachen

    • Micha_he
    • 21. März 2010 um 15:57

    Ich habe ein ähnliches Problem gehabt und daher noch folgendes Beispiel liegen gehabt:

    Spoiler anzeigen
    [autoit]

    #cs ----------------------------------------------------------------------------

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

    AutoIt Version: 3.2.10.0
    Author: zorphnog (M. Mims)

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

    Script Function:
    Monitors the user defined directories for file activity.

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

    #ce ----------------------------------------------------------------------------

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

    #include <Constants.au3>
    #include <WinAPI.au3>
    #include <Date.au3>
    #include <GUIConstants.au3>
    #include <GuiListBox.au3>
    #include <GuiListView.au3>

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

    Global Const _
    $FILE_FLAG_BACKUP_SEMANTICS = 0x02000000, _
    $FILE_FLAG_OVERLAPPED = 0x40000000
    Global Const _
    $FILE_NOTIFY_CHANGE_ALL = 0x17F, _
    $FILE_NOTIFY_CHANGE_FILE_NAME = 0x001, _
    $FILE_NOTIFY_CHANGE_DIR_NAME = 0x002, _
    $FILE_NOTIFY_CHANGE_ATTRIBUTES = 0x004, _
    $FILE_NOTIFY_CHANGE_SIZE = 0x008, _
    $FILE_NOTIFY_CHANGE_LAST_WRITE = 0x010, _
    $FILE_NOTIFY_CHANGE_LAST_ACCESS = 0x020, _
    $FILE_NOTIFY_CHANGE_CREATION = 0x040, _
    $FILE_NOTIFY_CHANGE_SECURITY = 0x100
    Global Const _
    $FILE_ACTION_ADDED = 0x1, _
    $FILE_ACTION_REMOVED = 0x2, _
    $FILE_ACTION_MODIFIED = 0x3, _
    $FILE_ACTION_RENAMED_OLD_NAME = 0x4, _
    $FILE_ACTION_RENAMED_NEW_NAME = 0x5
    Global Const _
    $MWMO_ALERTABLE = 0x0002, _
    $MWMO_INPUTAVAILABLE = 0x0004, _
    $MWMO_WAITALL = 0x0001
    Global Const $FILE_LIST_DIRECTORY = 0x0001
    Global Const $QS_ALLINPUT = 0x04FF
    Global Const $INFINITE = 0xFFFF
    Global Const $tagFNIIncomplete = "dword NextEntryOffset;dword Action;dword FileNameLength"
    Global $bMonitorDone, $bSelected, $bMonitor
    AutoItSetOption("GUIOnEventMode", 1)

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

    $gFileMon = GUICreate("Directory Monitor", 731, 385, 194, 126)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_OnEvent_Close")
    GUICtrlCreateGroup("Monitored Directories", 8, 0, 713, 105)
    $btAdd = GUICtrlCreateButton("Add", 16, 24, 75, 25, 0)
    GUICtrlSetOnEvent(-1, "_OnEvent_Add")
    $btRemove = GUICtrlCreateButton("Remove", 16, 56, 75, 25, 0)
    GUICtrlSetOnEvent(-1, "_OnEvent_Remove")
    GUICtrlSetState(-1, $GUI_DISABLE)
    $lbDirectories = GUICtrlCreateList("", 104, 16, 506, 71)
    $btMonitor = GUICtrlCreateButton("Start Monitor", 632, 24, 75, 25, 0)
    GUICtrlSetOnEvent(-1, "_OnEvent_Monitor")
    GUICtrlSetState(-1, $GUI_DISABLE)
    $btClear = GUICtrlCreateButton("Clear", 632, 56, 75, 25, 0)
    GUICtrlSetOnEvent(-1, "_OnEvent_Clear")
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $lvNotifications = GUICtrlCreateListView("Action|Time|File", 8, 112, 714, 262)
    GUICtrlSendMsg(-1, 0x101E, 0, Int(.1*710))
    GUICtrlSendMsg(-1, 0x101E, 1, Int(.2*710))
    GUICtrlSendMsg(-1, 0x101E, 2, Int(.7*710)-20)
    GUISetState(@SW_SHOW)

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

    _Main()

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

    Func _DisplayFileMessages($hBuffer, $sDir)
    Local $hFileNameInfo, $pBuffer, $hTime
    Local $nFileNameInfoOffset = 12, $nOffset = 0, $nNext = 1
    $pBuffer = DllStructGetPtr($hBuffer)
    While $nNext <> 0
    $hFileNameInfo = DllStructCreate($tagFNIIncomplete, $pBuffer + $nOffset)
    $hFileName = DllStructCreate("wchar FileName[" & DllStructGetData($hFileNameInfo, "FileNameLength")/2 & "]", $pBuffer + $nOffset + $nFileNameInfoOffset)
    $hTime = _Date_Time_GetSystemTime()
    Switch DllStructGetData($hFileNameInfo, "Action")
    Case $FILE_ACTION_ADDED
    _GUICtrlListView_InsertItem($lvNotifications, "Created", 0)
    Case $FILE_ACTION_REMOVED
    _GUICtrlListView_InsertItem($lvNotifications, "Deleted", 0)
    Case $FILE_ACTION_MODIFIED
    _GUICtrlListView_InsertItem($lvNotifications, "Modified", 0)
    Case $FILE_ACTION_RENAMED_OLD_NAME
    _GUICtrlListView_InsertItem($lvNotifications, "Rename-", 0)
    Case $FILE_ACTION_RENAMED_NEW_NAME
    _GUICtrlListView_InsertItem($lvNotifications, "Rename+", 0)
    Case Else
    _GUICtrlListView_InsertItem($lvNotifications, "Unknown", 0)
    EndSwitch
    _GUICtrlListView_AddSubItem($lvNotifications, 0, _Date_Time_SystemTimeToDateTimeStr($hTime), 1)
    _GUICtrlListView_AddSubItem($lvNotifications, 0, $sDir & DllStructGetData($hFileName, "FileName"), 2)
    $nNext = DllStructGetData($hFileNameInfo, "NextEntryOffset")
    $nOffset += $nNext
    WEnd
    EndFunc

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

    Func _GetBufferHandle ()
    Return DllStructCreate("ubyte[2048]")
    EndFunc

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

    Func _GetDirectoryChanges($aDirHandles, $hBuffer, $aOverlapped, $hEvents, $aDirs, $bAsync = Default, $nTimeout = Default)
    Local $aMsg, $i, $nBytes = 0
    If $nTimeout = -1 Or IsKeyword($nTimeout) Then $nTimeout = 250
    If Not $bAsync Then $nTimeout = $INFINITE
    $aMsg = DllCall("User32.dll", "dword", "MsgWaitForMultipleObjectsEx", _
    "dword", UBound($aOverlapped), _
    "ptr", DllStructGetPtr($hEvents), _
    "dword", $nTimeout, _
    "dword", 0, _
    "dword", 0x6)
    $i = $aMsg[0]
    Switch $i
    Case 0 To UBound($aDirHandles)-1
    If Not _WinAPI_GetOverlappedResult($aDirHandles[$i], DllStructGetPtr($aOverlapped[$i]), $nBytes, True) Then
    ConsoleWrite("!> GetOverlappedResult Error(" & @error & "): " & _WinAPI_GetLastErrorMessage() & @LF)
    Return 0
    EndIf
    DllCall("Kernel32.dll", "Uint", "ResetEvent", "uint", DllStructGetData($aOverlapped[$i], "hEvent"))
    _DisplayFileMessages($hBuffer, $aDirs[$i])
    _SetReadDirectory($aDirHandles[$i], $hBuffer, $aOverlapped[$i],False,True)
    Return $nBytes
    EndSwitch
    Return 0
    EndFunc

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

    Func _GetDirHandle($sDir)
    Local $aResult
    $aResult = DllCall("Kernel32.dll", "hwnd", "CreateFile", _
    "str", $sDir, _
    "int", $FILE_LIST_DIRECTORY, _
    "int", BitOR($FILE_SHARE_DELETE,$FILE_SHARE_READ,$FILE_SHARE_WRITE), _
    "ptr", 0, _
    "int", $OPEN_EXISTING, _
    "int", BitOR($FILE_FLAG_BACKUP_SEMANTICS,$FILE_FLAG_OVERLAPPED), _
    "int", 0)
    If $aResult[0] = 0 Then
    ConsoleWrite("!> CreateFile Error (" & @error & "): " & _WinAPI_GetLastErrorMessage() & @LF)
    Exit
    EndIf
    Return $aResult[0]
    EndFunc

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

    Func _GetEventHandles ($aOverlapped)
    Local $i, $hEvents
    $hEvents = DllStructCreate("hwnd hEvent[" & UBound($aOverlapped) & "]")
    For $i=1 To UBound($aOverlapped)
    DllStructSetData($hEvents, "hEvent", DllStructGetData($aOverlapped[$i-1], "hEvent"), $i)
    Next
    Return $hEvents
    EndFunc

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

    Func _GetOverlappedHandle ()
    Local $hOverlapped = DllStructCreate($tagOVERLAPPED)
    For $i=1 To 5
    DllStructSetData($hOverlapped, $i, 0)
    Next
    Return $hOverlapped
    EndFunc

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

    Func _Main ()
    $bSelected = False
    $bMonitorDone = True
    $bMonitor = False
    While 1
    If Not $bMonitorDone Then _MonitorDirs()
    If $bMonitor And _GUICtrlListBox_GetCount($lbDirectories) = 0 Then
    $bMonitor = Not $bMonitor
    GUICtrlSetState($btMonitor, $GUI_DISABLE)
    ElseIf Not $bMonitor And _GUICtrlListBox_GetCount($lbDirectories) > 0 Then
    $bMonitor = Not $bMonitor
    GUICtrlSetState($btMonitor, $GUI_ENABLE)
    EndIf
    If $bSelected And _GUICtrlListBox_GetCurSel($lbDirectories) = -1 Then
    $bSelected = Not $bSelected
    GUICtrlSetState($btRemove, $GUI_DISABLE)
    ElseIf Not $bSelected And _GUICtrlListBox_GetCurSel($lbDirectories) <> -1 Then
    $bSelected = Not $bSelected
    GUICtrlSetState($btRemove, $GUI_ENABLE)
    EndIf
    WEnd
    EndFunc

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

    Func _MonitorDirs ()
    Local $i, $nMax, $hBuffer, $hEvents
    $nMax = _GUICtrlListBox_GetCount($lbDirectories)
    Local $aDirHandles[$nMax], $aOverlapped[$nMax], $aDirs[$nMax]
    $hBuffer = _GetBufferHandle()
    For $i = 0 To $nMax-1
    $aDirs[$i] = _GUICtrlListBox_GetText($lbDirectories, $i)
    $aDirHandles[$i] = _GetDirHandle($aDirs[$i])
    $aOverlapped[$i] = _GetOverlappedHandle()
    _SetReadDirectory($aDirHandles[$i], $hBuffer, $aOverlapped[$i], True, True)
    Next
    $hEvents = _GetEventHandles($aOverlapped)
    While Not $bMonitorDone
    _GetDirectoryChanges($aDirHandles, $hBuffer, $aOverlapped, $hEvents, $aDirs)
    WEnd
    EndFunc

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

    Func _OnEvent_Add ()
    Local $sDir, $nMax, $i
    $sDir = FileSelectFolder("Select directory to monitor", "")
    If $sDir <> "" Then
    If StringRight($sDir, 1) <> "\" Then $sDir &= "\"
    $nMax = _GUICtrlListBox_GetCount($lbDirectories)-1
    For $i = 0 To $nMax
    If _GUICtrlListBox_GetText($lbDirectories, $i) = $sDir Then Return
    Next
    _GUICtrlListBox_AddString($lbDirectories, $sDir)
    EndIf
    EndFunc

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

    Func _OnEvent_Clear ()
    _GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($lvNotifications))
    EndFunc

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

    Func _OnEvent_Close ()
    Exit
    EndFunc

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

    Func _OnEvent_Monitor ()
    If $bMonitorDone Then
    $bMonitorDone = False
    GUICtrlSetData($btMonitor, "Stop Monitor")
    GUICtrlSetState($btAdd, $GUI_DISABLE)
    GUICtrlSetState($btRemove, $GUI_DISABLE)
    GUICtrlSetState($lbDirectories, $GUI_DISABLE)
    $bSelected = False
    Else
    $bMonitorDone = True
    GUICtrlSetState($lbDirectories, $GUI_ENABLE)
    GUICtrlSetState($btAdd, $GUI_ENABLE)
    GUICtrlSetData($btMonitor, "Start Monitor")
    EndIf
    EndFunc

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

    Func _OnEvent_Remove ()
    _GUICtrlListBox_DeleteString($lbDirectories, _GUICtrlListBox_GetCurSel($lbDirectories))
    EndFunc

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

    Func _SetReadDirectory($hDir, $hBuffer, $hOverlapped, $bInitial = False, $bSubtree = False)
    Local $hEvent, $pBuffer, $nBufferLength, $pOverlapped
    $pBuffer = DllStructGetPtr($hBuffer)
    $nBufferLength = DllStructGetSize($hBuffer)
    $pOverlapped = DllStructGetPtr($hOverlapped)
    If $bInitial Then
    $hEvent = DllCall("Kernel32.dll", "hwnd", "CreateEvent", _
    "uint", 0, _
    "int", True, _
    "int", False, _
    "uint", 0)
    If $hEvent[0] = 0 Then
    ConsoleWrite("!> CreateEvent Failed (" & _WinAPI_GetLastError() & "): " & _WinAPI_GetLastErrorMessage() & @LF)
    Exit
    EndIf
    DllStructSetData($hOverlapped, "hEvent", $hEvent[0])
    EndIf
    $aResult = DllCall("Kernel32.dll", "int", "ReadDirectoryChangesW", _
    "hwnd", $hDir, _
    "ptr", $pBuffer, _
    "dword", $nBufferLength, _
    "int", $bSubtree, _
    "dword", BitOR($FILE_NOTIFY_CHANGE_FILE_NAME, _
    $FILE_NOTIFY_CHANGE_SIZE,$FILE_NOTIFY_CHANGE_DIR_NAME,$FILE_NOTIFY_CHANGE_SECURITY), _
    "uint", 0, _
    "uint", $pOverlapped, _
    "uint", 0)
    If $aResult[0] = 0 Then
    ConsoleWrite("!> ReadDirectoryChangesW Error(" & @error & "): " & _WinAPI_GetLastErrorMessage() & @LF)
    Exit
    EndIf
    Return $aResult[0]
    EndFunc

    [/autoit]
  • ID3-Tags

    • Micha_he
    • 15. März 2010 um 10:10

    Ich kann es im Moment zwar schlecht testen, halte es aber für unnötig.

    Das was Du ausliest ist ausschließlich das ID3Tag V1. Damit fehlen Dir mindestens die Info's, die ausschließlich im Tag V2.x stehen.
    Diese Info's auszulesen ist aber nicht mehr so einfach, da das TagV2 dynamisch in seiner Gesamtlänge, sowie der einzelnen Felder ist. Ich habe das auch schon einmal für V1 & V2 geschrieben, ist ein ziemlicher Aufwand. Nur gab es damals noch keine UDF dafür.

    Der Fehler könnte also an einem nicht komplett ausgefüllten V1-Tag liegen !

    Edit:

    Nun konnte ich es testen. Es liegt an der Null-Bytes mit denen fehlende Zeichen im Tag-V1 aufgefüllt werden.
    Hier ein Beispiel wie Du es umgehen könntest:

    Spoiler anzeigen
    [autoit]

    $sFile = FileOpenDialog("Bitte MP3-Datei auswählen","","MP3-Dateien (*.mp3)")

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

    $hFile = FileOpen($sFile,0)
    $sFileContent = FileRead($hFile)
    $ext = @extended

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

    $ret = FileSetPos($hFile,$ext - 128,0)
    $sTag = FileRead($hFile)

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

    ; Null-Bytes durch Leerzeichen ersetzen
    $sTag = StringReplace($sTag, chr(00), " ")

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

    FileClose($hFile)

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

    If StringLeft($sTag,3) <> "TAG" Then
    MsgBox(48,"Fehler","Keine oder fehlerhafte TAG-Information gefunden!")
    FileClose($hFile)
    Exit
    EndIf

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

    MsgBox(0,"Tag-Information-Raw",$sTag)

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

    $sTagVerify = StringStripWS(StringLeft($sTag,3),2)
    $sTag = StringTrimLeft($sTag,3)
    $sTagSongTitle = StringStripWS(StringLeft($sTag,30),2)
    $sTag = StringTrimLeft($sTag,30)
    $sTagInterpret = StringStripWS(StringLeft($sTag,30),2)
    $sTag = StringTrimLeft($sTag,30)
    $sTagAlbum = StringStripWS(StringLeft($sTag,30),2)
    $sTag = StringTrimLeft($sTag,30)
    $sTagYear = StringStripWS(StringLeft($sTag,4),2)
    $sTag = StringTrimLeft($sTag,4)
    $sTagComment = StringStripWS(StringLeft($sTag,30),2)
    $sTag = StringTrimLeft($sTag,30)
    $sTagGenre = StringStripWS(StringLeft($sTag,1),2)
    $sTag = StringTrimLeft($sTag,1)

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

    MsgBox(0,"Tag-Information","Titel: " & $sTagSongTitle & @LF & "Interpret: " & $sTagInterpret & @LF & "Album: " & $sTagAlbum & @LF & "Erscheinungsjahr: " & $sTagYear & @LF & "Kommentar: " & $sTagComment & @LF & "GenreIndex: " & $sTagGenre)

    [/autoit]
  • Automatische installation fileinstall

    • Micha_he
    • 1. März 2010 um 23:15
    Zitat von AutoBert

    Hallo thami,

    nein, lass mal dieses Mini-Skript laufen, dann weisst du wo die Datei gelndet ist:

    [autoit]

    Consolewrite(@TempDir & @crlf)

    [/autoit]

    mfg (Auto)Bert

    Wer (wie ich z.B.) nicht mit SciTE arbeitet, wird bei dem TIP nicht all zuviel sehen. Eine MsgBox hätte ihm wohl mehr geholfen.

  • Netzwerkverbindung löschen

    • Micha_he
    • 16. Februar 2010 um 21:39

    Es wird wohl auch noch niemand eine Plug'nPlay Netzwerkkarte dauerhaft gelöscht bekommen haben, oder ?

  • Netzwerkverbindung löschen

    • Micha_he
    • 16. Februar 2010 um 17:53

    Diese Script schaltet die Lan-Verbindung bei jedem Start aktiv bzw inaktiv:

    Spoiler anzeigen
    [autoit]

    ; Damit User unter Windows XP eine Netzwerkverbindung aktivieren
    ; bzw. deaktivieren dürfen, müssen sie Mitglied in der Gruppe
    ; "Netzwerkkonfigurations-Operatoren" sein !

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

    $nameLanConnection = "LAN-Verbindung"; Name des Adapters
    $oLanConnection = ""

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

    if @OSType<>"WIN32_NT" then
    Msgbox(0,"","Dieses Script benötigt Windows 2000 oder höher")
    exit
    endif

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

    Select
    Case StringInStr("0409,0809,0c09,1009,1409,1809,1c09,2009,2409,2809,2c09,3009,3409", @OSLang) ; English (United States)
    $strEnableVerb = "En&able"
    $strDisableVerb = "Disa&ble"
    if @OSVersion="WIN_2000" then
    $strFolderName = "Network and Dial-up Connections"
    else
    $strFolderName = "Network Connections" ; Windows XP
    endif

    Case StringInStr("0407", @OSLang); Deutsch
    $strEnableVerb = "&Aktivieren"
    $strDisableVerb = "&Deaktivieren"
    if @OSVersion="WIN_2000" then
    $strFolderName = "Netzwerk- und DFÜ-Verbindungen"
    else
    $strFolderName = "Netzwerkverbindungen" ; Windows XP
    endif

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

    EndSelect

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

    ;Virtueller Ordner (Wert 3) enthält die Systemsteuerung
    Const $ssfCONTROLS = 3

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

    $ShellApp = ObjCreate("Shell.Application")
    $oControlPanel = $shellApp.Namespace($ssfCONTROLS)

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

    ; Finde 'Netzververbindungen' unter den Systemsteuerungen
    $oNetConnections=""
    For $FolderItem in $oControlPanel.Items
    If $FolderItem.Name = $strFolderName then
    $oNetConnections = $FolderItem.GetFolder
    Exitloop
    Endif
    Next
    If not IsObj($oNetConnections) Then
    Msgbox(0,"Fehler","Die Steuerung " & $strFolderName & " kann nicht gefunden werden."
    Exit
    EndIf

    ; Finde die gesuchte LAN-Verbindung
    For $FolderItem In $oNetConnections.Items
    If StringLower($FolderItem.Name) = StringLower($nameLanConnection) Then
    $oLanConnection = $FolderItem
    Exitloop
    EndIf
    Next
    If not IsObj($oLanConnection) Then
    Msgbox(0,"Fehler","Die Verbindung " & $nameLanConnection & " kann nicht gefunden werden.")
    Exit
    EndIf

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

    $bEnable = true
    $oEnableVerb = ""
    $oDisableVerb = ""

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

    For $Verb In $oLanConnection.Verbs
    If $Verb.Name = $strEnableVerb Then
    $oEnableVerb = $Verb
    $bEnable = false
    EndIf
    If $Verb.Name = $strDisableVerb Then
    $oDisableVerb = $Verb
    EndIf
    Next

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

    If $bEnable then
    ; deaktivieren
    $oDisableVerb.DoIt
    else
    ; aktivieren
    $oEnableVerb.DoIt
    TrayTip("",$nameLanConnection & " wurde aktiviert !",3)
    Sleep(3000)
    Endif

    [/autoit]
  • mail anlage abholen und auf PC speichern

    • Micha_he
    • 15. Februar 2010 um 15:52
    Zitat von Cartan12

    Ich glaub die POP3 UDF von Stilgar könnte helfen.
    Hier ein Beispiel:

    Er wollte laut Themenüberschrift aber nur den Mail-Angang abholen. Deinen Tip "ganze Mail" abrufen, hätten wahrscheinlich einige gewusst.

    Die Problematik liegt daran, das er nur den Anhang haben wollte...

  • Verschlüsselungstool für USB-Stick

    • Micha_he
    • 5. Februar 2010 um 13:31

    Habe ich auch schon angedacht. Aber:

    Da das Tool in seiner Oberfläche ja die Originalen Namen anzeigen soll, müsste ich jeder Datei öffnen, einlesen, entschlüsseln und den originalen Dateinamen herauslesen. Das dauert bei einer großen Ordnerstruktur dann wohl zu lange.

    Und bei Verzeichnissen ? Hier müsste ich sogar für jeden Ordner eine zusätzliche Datei mit dem Namen anlegen. Ziemlich aufwendig !


    Aktuelle Versuche gehen daher eher in die Richtung:
    - verschlüsseln z.B. StringEncrypt() oder ggf. anderes verfahren
    - anschließend Base64 codieren

    oder gibt es noch andere Ideen ?

  • Verschlüsselungstool für USB-Stick

    • Micha_he
    • 1. Februar 2010 um 19:14

    Hallo Forum

    Leider stockt das Projekt leider zur Zeit etwas, weil mir eine zündende Idee fehlt.

    Problem 1:
    Dateinamen mit AES256 verschlüsseln scheitert daran, das das Ergebnis einer AES-Verschlüsselung immer anders ist, auch wenn der Ausgangstext identisch ist. Daher kann ich nach der AES-Verschlüsselung nicht prüfen, ob ein idetischer Ordner bereits existiert. Meine Lösung zur Zeit: Pfad- und Dateinamen nur mit '_StringEncrypt()' zu verschlüsseln. Den Inhalt dann aber mit AES.

    Problem 2 (wichtig):
    Mit folgendem Code verschlüssele ich Pfad und Dateinamen.

    Spoiler anzeigen
    [autoit]

    #include <String.au3>

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

    $vaultDir = "C:\Vault\"
    $key = "test"
    $text = "C:\Vault\Dummy\Dummy\Test.txt"

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

    msgbox(0,"Beispiel", _Encrypt_Name($text))

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

    Func _Encrypt_Name($sName)
    Local $ret, $sOut, $aPathSplits, $sIdent = "*krypto*"
    Local $iPoiPos, $sTrailing
    If StringInStr($sName,$VaultDir) Then
    $sName = StringReplace($sName,$VaultDir,"")
    $sOut &= $VaultDir
    EndIf
    If StringLen($sName) > 0 Then
    If StringInStr($sName,"\") = 0 Then
    $sOut = _StringEncrypt(1, $sIdent & $sName, $key)
    Else
    If StringLeft($sName,1) = "\" Then
    $sName = StringMid($sName,2)
    $sOut &= "\"
    EndIf
    If StringRight($sName,1) = "\" Then
    $sTrailing = "\"
    $sName = StringTrimRight($sName, 1)
    EndIf
    $aPathSplits = StringSplit($sName,"\")
    If $aPathSplits[0] > 0 Then
    For $i = 1 To $aPathSplits[0]
    $ret = _StringEncrypt(1, $sIdent & $aPathSplits[$i], $key)
    If StringLen($ret) = "" Then Return
    $sOut &= $ret & "\"
    $ret = ""
    Next
    $sOut = StringTrimRight($sOut, 1)
    EndIf
    If $sTrailing <> "" Then $sOut &= $sTrailing
    EndIf
    EndIf
    If StringLen($sOut) > 0 Then Return $sOut
    Return
    EndFunc;==> _Enrypt_Name

    [/autoit]

    Der Nachteil ist aber, das die Ordner bzw. Dateinamen zu lang werden. Dem Text wird ein Identifier vorrangestellt was die Namen schon einmal verlängert (gut den Identifier könnte man noch etwas kürzen), aber der Binärstring nach der Verschlüsselung ist dann doppelt so lang wie der Ausgangsstring. Zurückwandeln nach ASCII geht auch nicht, da nicht alle Binärwerte als Pfad- / Dateinamen gültig sein.

    Jemand einen Tip wie ich einen kürzeren, brauchbar verschlüsselten Pfad- bzw. Dateinamen bekomme ?

    Besten Dank
    micha_he

  • Windows Update mit Skript

    • Micha_he
    • 28. Januar 2010 um 12:21

    Versuch mal folgendes als lokaler Admin:

    1. Dienst "wuauserv" z.B. mit "net stop wuauserv" stoppen
    2. Registrywert "HKLM\Software\Microsoft\Windows\CurrentVersion\WindowsUpdate\AutoUpdate\ScheduledInstallDate" auf ein Datum in der Vergangenheit stellen
    3. Dienst "wuauserv" z.B. mit "net start wuauserv" starten
    4. Warten ! (auch bei MICROSOFT Update geht scheinbar nicht von jetzt auf sofort)

    Ich bin mir aber nicht 100% sicher. Mal gehts mal tut sich nix !

  • gdi plus

    • Micha_he
    • 27. Januar 2010 um 22:09
    Zitat von JuraX

    ich bin zu doff


    ___________٨٨٨___________

    Stimmt. :rofl:

  • Windows Update mit Skript

    • Micha_he
    • 27. Januar 2010 um 11:54

    Dann definiere doch einmal "automatisches Update ausführen" !

    Das ganze System ist etwa so aufgebaut:

    - automatische Update läuft als Dienst
    - wenn Rechnerauslastung und Bandbreite es zulassen, läd der BITS-Dienst die Updates herunter
    - wenn der Installzeitpunkt erreicht ist oder der PC heruntergefahren wird, werden die Updates installiert.

    Gehen wir einmal davon aus das bei Dir Punkt 1 und 2 in Betrieb sind, suchst Du also eine Lösung, um
    die (bereits heruntergeladenen) Updates auf einen Befehl hin zu installieren. Korrekt ?

  • Windows Update mit Skript

    • Micha_he
    • 26. Januar 2010 um 23:01

    Wenn der ganze Dienst gestoppt ist, kann er einfach so wieder gestartet werden:

    Spoiler anzeigen
    [autoit]

    #include <servicecontrol.au3>

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

    If _StartService("" , "wuauserv") Then
    MsgBox(0,""," Start des Dienstes war erfolgreich")
    Else
    MsgBox(0,"", "Start des Dienstes war nicht erfolgreich")
    EndIf

    [/autoit]
  • Stoppuhr für Fußball

    • Micha_he
    • 26. Januar 2010 um 17:29
    Zitat von Concara

    Hi Leute!

    Wie lange habt ihr für eure Scripte benötigt?
    Und warum haben alle bis das von Andy einen Time Bug.
    Es kann doch vorkommen, dass in der ersten Halbzeit auch noch nachgespielt wird.
    Bzw. dass nicht ganz genau 45 Minuten gespielt werden.
    Als Gimmick könnte man die GUI noch transparent gestallten und Vollbildschirm tauglich.
    Eventuell einen Nachspieltimer.
    Ok das sind nur Anregungen. Und wahrscheinlich nach dem Sprichwort: "Ohne Moos nix los" eher nicht zu bekommen. ;)
    Frei Übersetzt: Ohne Geld wird sich da nichts ergeben.

    Lg
    Concara

    P.S.: Der eigentlich mit Fussbal nichts am Hut hat

    Alles anzeigen

    Das ist doch dann genau Dein Einstiegspunkt. Nimm das die am besten passende Script, lies die die AutoIt-Hilfe zu den Befehlen durch die Du nicht verstehst, suche mit einigen günstigen Begriffen hier im Forum und pass das Ausgangsscript nach deinen Vorstellungen und deinem Zeitainsatz an.

    Oder glaubst Du, wir konnten das alle bei der Geburt schon ?

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™