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

  • .msi und RunAs

    • Micha_he
    • 7. Mai 2010 um 12:22
    Zitat von Surfy
    [autoit]

    RunAs ( 'UserName', 'DomainName', 'PassWord', 0, @ComSpec & ' /c msiexec /i ' & $workingdir & ' /qb', ,@SW_HIDE )

    [/autoit]

    Denke das wäre mal ein Ansatz ;)

    Obwohl das "@COMSPEC & '/c'" hier unnötig ist und die Sache nur verkompliziert.
    MSIEXEC ist ja kein interner Befehl der Windows-Kommandozeile !

  • _IsPressed

    • Micha_he
    • 7. Mai 2010 um 12:07
    Zitat von Ineluki

    Ich wollte grade rein interesse halber folgendes Versuchen:

    [autoit]

    #include <Misc.au3>
    $dll = DllOpen("user32.dll")
    While sleep(100)
    For $i = 1 To 165
    If _IsPressed(Hex($i, 2), $dll) Then
    If $i = "41" Then
    MsgBox(0, "", "a")
    EndIf
    EndIf
    Next
    WEnd

    [/autoit]


    Wenn ich das Script jedoch starte, passiert nichts, wenn ich A drücke.

    Alles anzeigen

    Ob nun (möglicher) Keylogger oder nicht, so würde Dein Script auch etwas ausgeben:

    Spoiler anzeigen
    [autoit]

    #include <Misc.au3>
    $dll = DllOpen("user32.dll")
    While sleep(100)
    For $i = 1 To 165
    If _IsPressed(Hex($i, 2), $dll) Then
    If Hex($i,2) = "41" Then ; wenn HEX-Code prüfen, dann auch DEC-$i vorher wandeln
    MsgBox(0, "", "a")
    EndIf
    EndIf
    Next
    WEnd

    [/autoit]
  • .msi und RunAs

    • Micha_he
    • 7. Mai 2010 um 11:38

    Du kannst eine MSI-Datei wahrscheinlich (ich habe es jetzt nicht extra getestet) nicht mit Run starten. Laut Hilfe nur EXE, BAT, COM, PIF.

    Für Deinen Zweck musst Du MSIEXEC.exe nutzen. z.B.: "msiexec.exe /i <Produkt.msi>".

  • Datei in bestimmtes Verzeichnis von Windows kopieren geht nicht, manche Verzeichnisse scheinen geschützt?

    • Micha_he
    • 4. Mai 2010 um 18:24

    Das hängt davon ab, ob Du Admin des Systems bist oder nicht.

    Wenn Ja, dann die NTFS-Sicherheitseinstellungen des Verzeichnis(-baums) lockern, in das Du als User/Admin kopieren möchtest.

    Wenn Nein, dann Admin fragen ob er sie lockert.

  • fertigstellen eines Scriptes

    • Micha_he
    • 4. Mai 2010 um 11:04

    Mich hat mal interessiert, ob meine Idee funktioniert.
    Herausgekommen ist eine Funktion (bestimmt noch optimierungsbedürftig) welche eine Klick auf ein fremdes Control erkennt:

    _IsClicked_ControlId
    [autoit]

    #Include <Misc.au3>

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

    ; Beispiel mit Calc
    Run("Calc.exe")
    WinWait("Rechner",5)
    WinActivate("Rechner")
    Send("!a")
    Send("w")
    MsgBox(0,"","Testen Sie mit Button 8 !")

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

    While 1
    Sleep(50)
    If _IsClicked_ControlID("Rechner", "", "[CLASSNN:Button47]") Then Msgbox(0,"","Button 8 wurde geklickt")
    Wend
    ; Ende Beispiel

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

    ; by [email='micha_he@autoit.de'][/email]
    Func _IsClicked_ControlID($WinTitle, $WinText, $ControlID)
    Local $aWinPos, $aControlPos, $aMousePos, $aWinClientPos
    Local $iBordersize, $iTitlesize, $iOldCoordMode
    If Not _IsPressed("01") Then Return 0
    $iOldCoordMode = Opt("MouseCoordMode")
    Opt("MouseCoordMode", 0)
    $aMousePos = MouseGetPos()
    $aWinPos = WinGetPos($WinTitle, $WinText)
    If IsArray($aWinPos) Then
    $aWinClientPos = WinGetClientSize($WinTitle, $WinText)
    $iBordersize = ($aWinPos[2] - $aWinClientPos[0]) / 2
    $iTitlesize = $aWinPos[3] - $aWinClientPos[1] - $iBordersize
    $aControlPos = ControlGetPos("", "", $ControlID)
    If IsArray($aControlPos) Then
    If ($aMousePos[0] >= $aControlPos[0] + $iBordersize) And _
    ($aMousePos[0] <= $aControlPos[0] + $aControlPos[2] + $iBordersize) And _
    ($aMousePos[1] >= $aControlPos[1] + $iTitlesize) And _
    ($aMousePos[1] <= $aControlPos[1] + $aControlPos[3] + $iTitlesize) _
    Then
    Opt("MouseCoordMode", $iOldCoordMode)
    Return 1
    EndIf
    EndIf
    EndIf
    Opt("MouseCoordMode", $iOldCoordMode)
    Return 0
    EndFunc

    [/autoit]
  • Administratives Fenster

    • Micha_he
    • 2. Mai 2010 um 20:03

    Einfachste Variante:

    Spoiler anzeigen
    [autoit]

    $sName = Inputbox("Adminname", "Name des Administratorkontos ?", "Administrator")
    $sPass = Inputbox("Adminpasswort", "Passwort des Administratorkontos '" & $sName & "' ?", "", "*")
    RunAs($sName, @ComputerName, $sPass, 0, "TaskMgr.exe")

    [/autoit]
  • Wie schaltet man die netzwerk-karte ein oder aus?

    • Micha_he
    • 2. Mai 2010 um 14:26

    Du müsstest schon etwas mehr Angaben machen: In welcher Zeile kommt es unter Win7 zum "Error parsing funktion call" ?

    Aber für mich (ohne Win7) ist es schwer, den Fehler zu lokalisieren. Viieleich kann jemand anders weiterhelfen.

  • Wie schaltet man die netzwerk-karte ein oder aus?

    • Micha_he
    • 2. Mai 2010 um 12:48

    Meinen Recherchen nach, soll das Prinzip auch unter Vista und Win7 funktionieren.
    ggf. Sind die Bezeichnungen anders.

    Füge doch mal in die Zeile 41 folgendes ein und lass Dir die Namen ausgeben:

    MsgBox(0,"",$FolderItem.Name)

    Ansonsten muss Du mal beschreiben, was geht und was nicht.
    Ich habe keine Windows7 zum testen.

  • Explorer selber basteln

    • Micha_he
    • 30. April 2010 um 09:51

    Ich habe hier auch noch ein Beispiel liegen (Autor unbekannt):

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <GuiImageList.au3>
    #include <GuiTreeView.au3>
    #include <StructureConstants.au3>
    #include <TreeViewConstants.au3>
    #include <WindowsConstants.au3>

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

    $hGui = GUICreate('FileExplorer', 400, 400)
    $hTreeview = GUICtrlCreateTreeView(10, 10, 380, 360)
    $hWndTreeview = GUICtrlGetHandle($hTreeview)
    $hOk = GUICtrlCreateButton('Ok', 240, 375, 60, 22)
    $hCancel = GUICtrlCreateButton('Cancel', 320, 375, 60, 22)

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

    $hImage = _GUIImageList_Create(16, 16, 5, 1)
    _GUIImageList_AddIcon($hImage, 'shell32.dll', 3) ; Verzeichnis-Icon
    _GUIImageList_AddIcon($hImage, 'shell32.dll', 110) ; Verzeichnis-Icon mit Haken
    _GUIImageList_AddIcon($hImage, 'shell32.dll', 1) ; Datei-Icon
    _GUIImageList_AddIcon($hImage, 'shell32.dll', 5) ; Diskette
    _GUIImageList_AddIcon($hImage, 'shell32.dll', 7) ; Wechseldatenträger
    _GUIImageList_AddIcon($hImage, 'shell32.dll', 8) ; Festplatte
    _GUIImageList_AddIcon($hImage, 'shell32.dll', 11) ; CDROM
    _GUIImageList_AddIcon($hImage, 'shell32.dll', 12) ; Netzwerklaufwerk
    _GUIImageList_AddIcon($hImage, 'shell32.dll', 53) ; Unbekannt
    _GUICtrlTreeView_SetNormalImageList($hTreeview, $hImage)

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

    GUISetState()
    GUICtrlSetStyle($hTreeview, Default, $WS_EX_COMPOSITED + $WS_EX_CLIENTEDGE)

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

    $aDrives = DriveGetDrive('ALL')
    ToolTip('Please wait...', Default, Default, 'Read Directory', 1)
    For $i = 1 To $aDrives[0]
    $iLWindex = 0
    Switch DriveGetType($aDrives[$i])
    Case 'Fixed'
    $iLWindex = 5
    Case 'CDROM'
    $iLWindex = 6
    Case 'RAMDisk'
    $iLWindex = 7
    Case 'Removable'
    $iLWindex = 4
    If StringLeft($aDrives[$i], 2) = 'a:' Or StringLeft($aDrives[$i], 2) = 'b:' Then $iLWindex = 3
    Case Else
    $iLWindex = 8
    EndSwitch
    $hRoot = _GUICtrlTreeView_Add($hTreeview, $hTreeview, StringUpper($aDrives[$i]), $iLWindex, $iLWindex)
    If DriveStatus($aDrives[$i]) <> 'READY' Then ContinueLoop
    _GUICtrlTreeView_BeginUpdate($hTreeview)
    _GUICtrlTreeView_FileExplorerRecursive($hTreeview, $hRoot, $aDrives[$i], 1)
    _GUICtrlTreeView_EndUpdate($hTreeview)
    Next
    ToolTip('')

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

    GUIRegisterMsg($WM_NOTIFY, '_WM_NOTIFY')
    While True
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE, $hCancel
    Exit
    Case $hOk
    $iSelect = _GUICtrlTreeView_GetSelection($hTreeview)
    $sTree = StringReplace(_GUICtrlTreeView_GetTree($hTreeview, $iSelect), '|', '\')
    MsgBox(0, 'Selected Path/File', $sTree)
    EndSwitch
    WEnd

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

    Func _WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    #forceref $hWnd, $iMsg, $iwParam
    GUIRegisterMsg($WM_NOTIFY, '')
    Local $hWndFrom, $iCode, $tNMHDR
    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, 'hWndFrom'))
    $iCode = DllStructGetData($tNMHDR, 'Code')
    If $hWndFrom = $hWndTreeview And $iCode = $NM_CLICK Then
    ToolTip('Please wait...', Default, Default, 'Read Directory', 1)
    _GUICtrlTreeView_FileExplorer($hGui, $hTreeview)
    ToolTip('')
    EndIf
    GUIRegisterMsg($WM_NOTIFY, '_WM_NOTIFY')
    Return $GUI_RUNDEFMSG
    EndFunc ;==>_WM_NOTIFY

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

    Func _GUICtrlTreeView_FileExplorer($hGui, $hTreeview)
    Local $aTVPos, $aPos, $hItem, $hChild, $sTree
    $aTVPos = ControlGetPos($hGui, '', $hTreeview)
    $aPos = GUIGetCursorInfo($hGui)
    $hItem = _GUICtrlTreeView_HitTestItem($hTreeview, $aPos[0], $aPos[1] - $aTVPos[1])
    If _GUICtrlTreeView_GetExpanded($hTreeview, $hItem) Then Return
    $hChild = _GUICtrlTreeView_GetFirstChild($hTreeview, $hItem)
    If $hChild <> 0 Then
    _GUICtrlTreeView_BeginUpdate($hTreeview)
    $sTree = StringReplace(_GUICtrlTreeView_GetTree($hTreeview, $hChild), '|', '\')
    _GUICtrlTreeView_DeleteChildren($hTreeview, $hChild)
    _GUICtrlTreeView_FileExplorerRecursive($hTreeview, $hChild, $sTree, 1)
    Do
    $hChild = _GUICtrlTreeView_GetNextChild($hTreeview, $hChild)
    If $hChild <> 0 Then
    $sTree = StringReplace(_GUICtrlTreeView_GetTree($hTreeview, $hChild), '|', '\')
    _GUICtrlTreeView_DeleteChildren($hTreeview, $hChild)
    $iTimer = TimerInit()
    _GUICtrlTreeView_FileExplorerRecursive($hTreeview, $hChild, $sTree, 1)
    EndIf
    Until $hChild = 0
    _GUICtrlTreeView_EndUpdate($hTreeview)
    EndIf
    EndFunc ;==>_GUICtrlTreeView_FileExplorer

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

    Func _GUICtrlTreeView_FileExplorerRecursive($hTreeview, $hItem, $sPath, $iRec)
    Local $aDirList, $aFileList, $tmp
    If StringRight($sPath, 1) <> '\' Then $sPath &= '\'
    $iRec -= 1
    $aDirList = _MyFileListToArray($sPath, 2)
    If IsArray($aDirList) Then
    For $sDir In $aDirList
    $tmp = _GUICtrlTreeView_AddChild($hTreeview, $hItem, $sDir, 0, 1)
    If $iRec > 0 Then _GUICtrlTreeView_FileExplorerRecursive($hTreeview, $tmp, $sPath & $sDir, $iRec)
    Next
    EndIf
    $aFileList = _MyFileListToArray($sPath, 1)
    If IsArray($aFileList) Then
    For $sFile In $aFileList
    $tmp = _GUICtrlTreeView_AddChild($hTreeview, $hItem, $sFile, 2, 2)
    Next
    EndIf
    EndFunc ;==>_GUICtrlTreeView_FileExplorerRecursive

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

    Func _MyFileListToArray($sPath, $iFlag)
    Local $sFileList = '', $hSearch, $sFile
    $hSearch = FileFindFirstFile($sPath & '*')
    If @error Then Return
    While True
    $sFile = FileFindNextFile($hSearch)
    If @error Then ExitLoop
    If ($iFlag + @extended = 2) Then ContinueLoop
    $sFileList &= $sFile & '|'
    WEnd
    FileClose($hSearch)
    If $sFileList = '' Then Return
    Return StringSplit(StringTrimRight($sFileList, 1), '|', 2)
    EndFunc ;==>__FileListToArray

    [/autoit]
  • Fehler - _getDOSOutput

    • Micha_he
    • 29. April 2010 um 20:38

    Aus dem gesammten Thema geht immer noch nicht hervor ( oder ich habe es nicht herauslesen können), ob es Dir um einen möglichen Fehler der "_getDOSOutput"-Funktion oder eine mögliche Telnet-Lösung geht.

    Falls Du Telnet nicht nur als Beispiel genommen hast, hätte ich hier noch aus "grauer Vorzeit" einen Mini-Telnet-Client per TCP:

    Spoiler anzeigen
    [autoit]

    ; Telnet.au3
    ; Telnet-Connect-Beispiel
    ; von [email='micha_he@autoit.de'][/email]
    ; 23.02.2007

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

    #include <GUIConstants.au3>
    #include <WindowsConstants.au3>
    #include <EditConstants.au3>

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

    Dim $ip
    Dim $port = "23"
    $ip = InputBox("Telnet-Server ?","Bitte IP-Adresse des Telnet-Servers eingeben ?","","",260,-1)
    if $ip <> "" then
    GUICreate ("Telnet-Test",440,400)
    $eingabe = GUICtrlCreateInput ("",20,20,350)
    $ausgabe = GUICtrlCreateEdit ("",20,60,400,320,$WS_VSCROLL + $ES_AUTOVSCROLL)
    GUISetState ()
    GuiCtrlSetState($eingabe,$GUI_FOCUS)

    TCPStartup()

    $ConnectedSocket = TCPConnect($ip, $port)
    If $ConnectedSocket = -1 Then
    MsgBox(16, "Error", "Unable to connect.")
    Exit
    EndIf

    While 1
    $msg = GuiGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    Case $msg = $eingabe
    TCPSend($ConnectedSocket, GuiCtrlRead($eingabe) & @CRLF)
    if StringLower(GuiCtrlRead($eingabe)) = "exit" then
    TCPSend($ConnectedSocket,"exit" & @CRLF)
    sleep(500)
    ExitLoop
    else
    GuiCtrlSetData($eingabe,"")
    endif
    EndSelect
    $daten = ""
    do
    $datenneu = TCPRecv($ConnectedSocket, 512)
    $daten &= $datenneu
    until $datenneu = ""
    while StringInStr($daten,chr(255)) > 0
    $position = StringInstr($daten,chr(255))
    $steuercode = StringMid($daten,$position,3)
    $daten = StringLeft($daten,$position-1) & StringMid($daten,$position+3)
    select
    case StringMid($steuercode,2,1) = chr(251)
    StringReplace($steuercode,2,chr(254),1)
    case StringMid($steuercode,2,1) = chr(252)
    StringReplace($steuercode,2,chr(254),1)
    case StringMid($steuercode,2,1) = chr(253)
    StringReplace($steuercode,2,chr(252),1)
    case StringMid($steuercode,2,1) = chr(254)
    StringReplace($steuercode,2,chr(252),1)
    EndSelect
    TCPSend($ConnectedSocket, $steuercode)
    ; Echo beim Server einschalten
    TCPSend($ConnectedSocket,chr(255) & chr(253) & chr(1))
    wend
    if $daten <> "" then
    GUICtrlSetData ($ausgabe, GuiCtrlRead($ausgabe) & $daten)
    controlsend("","",$ausgabe,"{END}")
    GuiCtrlSetState($eingabe,$GUI_FOCUS)
    endif
    sleep(100)
    WEnd

    TCPCloseSocket($ConnectedSocket)
    TCPShutdown()
    endif

    [/autoit]

    Edit: Hier nochmal etwas abgeändert als Funktion, weil ich einen Router-Reconnect per Telnet brauchte:

    Spoiler anzeigen
    [autoit]

    ; o2Reconnect V1.0
    ; von [email='micha_he@autoit.de'][/email]
    ; 29.07.2009
    ;
    ; Script um bei einem o2Router, Typ "Zyxel P-2602HWN-D7A",
    ; eine neue WAN-Verbindung herzustellen und damit die IP-
    ; Adresse zu erneuern

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

    If $cmdline[0] <> 2 Then
    Msgbox(48,"Fehler","o2Reconnect.exe [RouterIP] [Passwort]")
    Exit
    EndIf

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

    Global $aKommandos[4] = ["admin",$cmdline[2],"poe drop poe0","exit"]
    _Telnet($cmdline[1], $aKommandos, 23, 400)
    Sleep(3000)

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

    Func _Telnet($sIP, $aCommands, $sPort = 23, $iDelay=200)
    Local $ConnectedSocket, $daten, $datenneu, $recv, $position, $steuercode
    If $sIP = "" Or $sPort = "" Or Not IsArray($aCommands) Then Return SetError(1, 0, 0)
    TCPStartup()
    $connectedSocket = -1
    $ConnectedSocket = TCPConnect($sIP, $sPort)
    If $ConnectedSocket = -1 Then Return SetError(1, 0, 0)
    For $i = 0 To UBound($aCommands)-1
    TCPSend($ConnectedSocket,$aCommands[$i] & @CRLF)
    Sleep($iDelay)
    $daten &= TCPRecv($ConnectedSocket, 2048)

    ; Standard-Steuercode in Anfrage suchen und passend beantworten
    while StringInStr($daten,chr(255)) > 0
    $position = StringInstr($daten,chr(255))
    $steuercode = StringMid($daten,$position,3)
    $daten = StringLeft($daten,$position-1) & StringMid($daten,$position+3)
    select
    case StringMid($steuercode,2,1) = chr(251)
    StringReplace($steuercode,2,chr(254),1)
    case StringMid($steuercode,2,1) = chr(252)
    StringReplace($steuercode,2,chr(254),1)
    case StringMid($steuercode,2,1) = chr(253)
    StringReplace($steuercode,2,chr(252),1)
    case StringMid($steuercode,2,1) = chr(254)
    StringReplace($steuercode,2,chr(252),1)
    EndSelect
    TCPSend($ConnectedSocket, $steuercode)
    ; Echo beim Server einschalten
    ; TCPSend($ConnectedSocket,chr(255) & chr(253) & chr(1))
    Wend

    ; ESC-Steuercodes heruasfiltern
    $daten = StringReplace($daten, chr(27) & chr(55), "")

    Next
    TCPCloseSocket($ConnectedSocket)
    TCPShutdown()
    Return $daten
    EndFunc

    [/autoit]
  • XP-Dienste abschalten

    • Micha_he
    • 29. April 2010 um 09:59

    ServiceControl

  • partitonen einer festplate herausfinden

    • Micha_he
    • 29. April 2010 um 09:55

    Ergebnis sieht gut aus, jedenfalls entspricht es der Wirklichkeit.

  • WinRar Script zum packen hilfeee

    • Micha_he
    • 28. April 2010 um 15:04

    zu Deinen zwei (1x per PN) weiteren Fragen:

    Spoiler anzeigen
    [autoit]

    Global Const $DIR_Flag_Desktop = 0 ; Desktop
    Global Const $DIR_Flag_Programme = 2 ; Programme
    Global Const $DIR_Flag_Systemsteuerung = 3 ; Systemsteuerung
    Global Const $DIR_Flag_Drucker = 4 ; Drucker
    Global Const $DIR_Flag_EigeneDateien = 5 ; Eigene Dateien
    Global Const $DIR_Flag_Favoriten = 6 ; Favoriten
    Global Const $DIR_Flag_Autostart = 7 ; Autostart
    Global Const $DIR_Flag_Recent = 8 ; Recent (Inhalt des Dokumente-Menüs)
    Global Const $DIR_Flag_SendenAn = 9 ; Senden an
    Global Const $DIR_Flag_Papierkorb = 10 ; Papierkorb
    Global Const $DIR_Flag_Startmenue = 11 ; Startmenü
    Global Const $DIR_Flag_DesktopOrdner = 16 ; Desktop-Ordner
    Global Const $DIR_Flag_Arbeitsplatz = 17 ; Arbeitsplatz
    Global Const $DIR_Flag_Netzwerkumgebung = 18 ; Netzwerkumgebung
    Global Const $DIR_Flag_OrdnerNetzwerkumgebung = 19 ; Ordner Netzwerkumgebung
    Global Const $DIR_Flag_Schriftarten = 20 ; Schriftarten
    Global Const $DIR_Flag_Vorlagen = 21 ; Vorlagen
    Global Const $DIR_Flag_StartmenueAlle = 22 ; Startmenü für Alle Benutzer
    Global Const $DIR_Flag_ProgrammeAlle = 23 ; Programme für Alle Benutzer
    Global Const $DIR_Flag_Programme2 = 24 ; Startmenü für Alle Benutzer
    Global Const $DIR_Flag_Desktop2 = 25 ; Desktop für Alle Benutzer
    Global Const $DIR_Flag_Anwendungsdaten = 26 ; Anwendungsdaten
    Global Const $DIR_Flag_PrintHood = 27 ; PrintHood
    Global Const $DIR_Flag_FavoritenAlle = 31 ; Favoriten für Alle Benutzer
    Global Const $DIR_Flag_TemporaereInternetdateien = 32 ; Temporäre Internetdateien
    Global Const $DIR_Flag_Cookies = 33 ; Cookies
    Global Const $DIR_Flag_Verlauf = 34 ; Verlauf
    Global Const $BIF_BROWSEFORCOMPUTER = 0x1000 ; Only return computers
    Global Const $BIF_BROWSEFORPRINTER = 0x2000 ; Only allow the selection of printers
    Global Const $BIF_BROWSEINCLUDEFILES = 0x4000 ; The browse dialog box will display files as well as folders
    Global Const $BIF_DONTGOBELOWDOMAIN = 0x2 ; Do not include network folders below the domain level
    Global Const $BIF_EDITBOX = 0x10 ; Include an edit control in the browse dialog box
    Global Const $BIF_USENEWUI = 0x40 ; Use New Style (> Windows 2000)
    Global Const $BIF_RETURNONLYFSDIRS = 0x1 ; Only return file system directories
    Global Const $BIF_ALLOLDSTYLEFLAGS = BitOR ($BIF_BROWSEFORCOMPUTER, $BIF_BROWSEFORPRINTER, $BIF_BROWSEINCLUDEFILES, $BIF_DONTGOBELOWDOMAIN, $BIF_EDITBOX, $BIF_RETURNONLYFSDIRS, $BIF_USENEWUI)

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

    ; Wähle Dateien und Ordner mit einer Auswahl
    $FileDir = _FileSelectFolder("Was soll gepackt werden ?",$DIR_Flag_Arbeitsplatz,$BIF_BROWSEINCLUDEFILES + $BIF_USENEWUI + $BIF_EDITBOX)

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

    If $FileDir <> "" Then ; wenn nicht abgebrochen wurde...
    ; Setze Ausgabenamen zusammen
    If StringInStr(FileGetAttrib($FileDir),"D") Then
    $sOut = $FileDir & ".rar"
    Else
    If StringInStr(StringRight($FileDir, 4), ".") Then
    $sOut = StringLeft($FileDir, StringInStr($FileDir, ".", "", -1) - 1) & ".rar"
    Else
    $sOut = $FileDir & ".rar"
    EndIf
    EndIf

    ; Packe in 200MB Archive
    RunWait("C:\Programme\WinRAR\Rar.exe a -m3 -v200000k " & $sOut & " " & $FileDir)
    EndIf

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

    Func _FileSelectFolder ($title, $root = 0, $flags = 0, $hwnd = 0)
    Local $ret, $pidl, $res = ''
    ; Creating Structures
    Local $ubi = DllStructCreate ("hwnd;ptr;ptr;ptr;int;ptr;ptr;int") ; structure BROWSEINFO
    Local $utl = DllStructCreate ("char[512]") ; Browse title
    Local $urs = DllStructCreate ("char[260]") ; Buffer for path (MAX_PATH size)
    ;Local $ulf = BitOR (BitShift(BitAnd ($flags,1),-9), _ ; 1: NOT show Create Folder Button
    ; BitShift(BitAnd ($flags,2),-5), _ ; 2: Use New Dialog Style
    ; BitShift(BitAnd ($flags,4),-2)) ; 4: Show Edit Control
    Local $ulf = BitAnd ($flags, $BIF_ALLOLDSTYLEFLAGS) ; Supported flags
    ; Filling structures
    DllStructSetData ($utl, 1, $title)
    DllStructSetData ($ubi, 1, $hwnd)
    DllStructSetData ($ubi, 3, DllStructGetPtr($urs))
    DllStructSetData ($ubi, 4, DllStructGetPtr($utl))
    DllStructSetData ($ubi, 5, $ulf)
    $ret = DllCall ("shell32.dll", "ptr", "SHGetSpecialFolderLocation", _
    "int", 0 , _
    "int", $root , _
    "ptr", DllStructGetPtr($ubi, 2))
    If $ret[0] Then Return $res
    ; Start browse window
    $pidl = DllCall ("shell32.dll", "ptr", "SHBrowseForFolder", "ptr", DllStructGetPtr ($ubi))
    If $pidl[0] Then
    $ret = DllCall ("shell32.dll", "int", "SHGetPathFromIDList", _
    "ptr", $pidl[0], _
    "ptr", DllStructGetPtr ($urs))
    If $ret[0] Then $res = DllStructGetData ($urs, 1)
    DllCall ("ole32.dll", "int", "CoTaskMemFree", "ptr", $pidl[0]) ; clear memory
    EndIf
    DllCall ("ole32.dll", "int", "CoTaskMemFree", "ptr", DllStructGetData ($ubi, 2))
    Return $res
    EndFunc

    [/autoit]

    zu 1. (Abbruch): Siehe Zeilen 40 & 54
    zu 2. (Kompressionsmethode): Siehe "-m"-Option in Zeile 53. Hier kannst Du die Standard "3" ggf. fest auf "5" ändern. Ggf. per InputBox oder Slider wenn Du eine GUI nutzen willst.

    P.S.: zu den einzelnen Option von "RAR.exe" solltest Du mal die Befehlszeilenoptionen in der Hilfe lesen.

  • fertigstellen eines Scriptes

    • Micha_he
    • 28. April 2010 um 10:54

    Ich habe zwar weder Zeit noch die Lust den "Job" zu übernehmen, aber:

    1. Den Klick auf einen Button eines anderen Fensters, kann man meines Wissens nach nicht direkt mit AutoIt abfragen.
    Du müsstest die Position des Fensters (WinGetPos, WinActive), danach die relative Position des Button hinzuaddieren
    und in Abhängigkeit dieser Position mit IsPressed() die Maustaste überprüfen.

    2. Bei meinen Tests hat ein "Fenster" keine "ClassnameNN" !

  • WinRar Script zum packen hilfeee

    • Micha_he
    • 28. April 2010 um 10:07

    Hier ein Beispiel nach Deiner Beschreibung. Ich hatte einen großen Teil schon fertig liegen:

    Spoiler anzeigen
    [autoit]

    Global Const $DIR_Flag_Desktop = 0 ; Desktop
    Global Const $DIR_Flag_Programme = 2 ; Programme
    Global Const $DIR_Flag_Systemsteuerung = 3 ; Systemsteuerung
    Global Const $DIR_Flag_Drucker = 4 ; Drucker
    Global Const $DIR_Flag_EigeneDateien = 5 ; Eigene Dateien
    Global Const $DIR_Flag_Favoriten = 6 ; Favoriten
    Global Const $DIR_Flag_Autostart = 7 ; Autostart
    Global Const $DIR_Flag_Recent = 8 ; Recent (Inhalt des Dokumente-Menüs)
    Global Const $DIR_Flag_SendenAn = 9 ; Senden an
    Global Const $DIR_Flag_Papierkorb = 10 ; Papierkorb
    Global Const $DIR_Flag_Startmenue = 11 ; Startmenü
    Global Const $DIR_Flag_DesktopOrdner = 16 ; Desktop-Ordner
    Global Const $DIR_Flag_Arbeitsplatz = 17 ; Arbeitsplatz
    Global Const $DIR_Flag_Netzwerkumgebung = 18 ; Netzwerkumgebung
    Global Const $DIR_Flag_OrdnerNetzwerkumgebung = 19 ; Ordner Netzwerkumgebung
    Global Const $DIR_Flag_Schriftarten = 20 ; Schriftarten
    Global Const $DIR_Flag_Vorlagen = 21 ; Vorlagen
    Global Const $DIR_Flag_StartmenueAlle = 22 ; Startmenü für Alle Benutzer
    Global Const $DIR_Flag_ProgrammeAlle = 23 ; Programme für Alle Benutzer
    Global Const $DIR_Flag_Programme2 = 24 ; Startmenü für Alle Benutzer
    Global Const $DIR_Flag_Desktop2 = 25 ; Desktop für Alle Benutzer
    Global Const $DIR_Flag_Anwendungsdaten = 26 ; Anwendungsdaten
    Global Const $DIR_Flag_PrintHood = 27 ; PrintHood
    Global Const $DIR_Flag_FavoritenAlle = 31 ; Favoriten für Alle Benutzer
    Global Const $DIR_Flag_TemporaereInternetdateien = 32 ; Temporäre Internetdateien
    Global Const $DIR_Flag_Cookies = 33 ; Cookies
    Global Const $DIR_Flag_Verlauf = 34 ; Verlauf
    Global Const $BIF_BROWSEFORCOMPUTER = 0x1000 ; Only return computers
    Global Const $BIF_BROWSEFORPRINTER = 0x2000 ; Only allow the selection of printers
    Global Const $BIF_BROWSEINCLUDEFILES = 0x4000 ; The browse dialog box will display files as well as folders
    Global Const $BIF_DONTGOBELOWDOMAIN = 0x2 ; Do not include network folders below the domain level
    Global Const $BIF_EDITBOX = 0x10 ; Include an edit control in the browse dialog box
    Global Const $BIF_USENEWUI = 0x40 ; Use New Style (> Windows 2000)
    Global Const $BIF_RETURNONLYFSDIRS = 0x1 ; Only return file system directories
    Global Const $BIF_ALLOLDSTYLEFLAGS = BitOR ($BIF_BROWSEFORCOMPUTER, $BIF_BROWSEFORPRINTER, $BIF_BROWSEINCLUDEFILES, $BIF_DONTGOBELOWDOMAIN, $BIF_EDITBOX, $BIF_RETURNONLYFSDIRS, $BIF_USENEWUI)

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

    ; Wähle Dateien und Ordner mit einer Auswahl
    $FileDir = _FileSelectFolder("Was soll gepackt werden ?",$DIR_Flag_Arbeitsplatz,$BIF_BROWSEINCLUDEFILES + $BIF_USENEWUI + $BIF_EDITBOX)

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

    ; Setze Ausgabenamen zusammen
    If StringInStr(FileGetAttrib($FileDir),"D") Then
    $sOut = $FileDir & ".rar"
    Else
    If StringInStr(StringRight($FileDir, 4), ".") Then
    $sOut = StringLeft($FileDir, StringInStr($FileDir, ".", "", -1) - 1) & ".rar"
    Else
    $sOut = $FileDir & ".rar"
    EndIf
    EndIf

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

    ; Packe in 200MB Archive
    RunWait("C:\Programme\WinRAR\Rar.exe a -v200000k " & $sOut & " " & $FileDir)

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

    Func _FileSelectFolder ($title, $root = 0, $flags = 0, $hwnd = 0)
    Local $ret, $pidl, $res = ''
    ; Creating Structures
    Local $ubi = DllStructCreate ("hwnd;ptr;ptr;ptr;int;ptr;ptr;int") ; structure BROWSEINFO
    Local $utl = DllStructCreate ("char[512]") ; Browse title
    Local $urs = DllStructCreate ("char[260]") ; Buffer for path (MAX_PATH size)
    ;Local $ulf = BitOR (BitShift(BitAnd ($flags,1),-9), _ ; 1: NOT show Create Folder Button
    ; BitShift(BitAnd ($flags,2),-5), _ ; 2: Use New Dialog Style
    ; BitShift(BitAnd ($flags,4),-2)) ; 4: Show Edit Control
    Local $ulf = BitAnd ($flags, $BIF_ALLOLDSTYLEFLAGS) ; Supported flags
    ; Filling structures
    DllStructSetData ($utl, 1, $title)
    DllStructSetData ($ubi, 1, $hwnd)
    DllStructSetData ($ubi, 3, DllStructGetPtr($urs))
    DllStructSetData ($ubi, 4, DllStructGetPtr($utl))
    DllStructSetData ($ubi, 5, $ulf)
    $ret = DllCall ("shell32.dll", "ptr", "SHGetSpecialFolderLocation", _
    "int", 0 , _
    "int", $root , _
    "ptr", DllStructGetPtr($ubi, 2))
    If $ret[0] Then Return $res
    ; Start browse window
    $pidl = DllCall ("shell32.dll", "ptr", "SHBrowseForFolder", "ptr", DllStructGetPtr ($ubi))
    If $pidl[0] Then
    $ret = DllCall ("shell32.dll", "int", "SHGetPathFromIDList", _
    "ptr", $pidl[0], _
    "ptr", DllStructGetPtr ($urs))
    If $ret[0] Then $res = DllStructGetData ($urs, 1)
    DllCall ("ole32.dll", "int", "CoTaskMemFree", "ptr", $pidl[0]) ; clear memory
    EndIf
    DllCall ("ole32.dll", "int", "CoTaskMemFree", "ptr", DllStructGetData ($ubi, 2))
    Return $res
    EndFunc

    [/autoit]
  • Hardware sicher entfernen

    • Micha_he
    • 27. April 2010 um 14:39

    Siehe: http://www.uwe-sieber.de/drivetools.html#removedrive

    Lässt sich super mit AutoIt nutzen. Habe ich selbst im Einsatz.
    Ob es unter Vista läuft, musst Du testen.

  • GDIPlus_ImageLoadFromInet (without Saving)

    • Micha_he
    • 27. April 2010 um 11:22

    In der Funktion von Faweyr muss es in Zeile 66 bestimmt nicht:

    TCPCloseSocket($socket)

    sondern

    TCPCloseSocket($sSocket)

    heißen.

  • RunAs 'Explorer.exe' geht nicht...

    • Micha_he
    • 26. April 2010 um 09:07

    Stimmt, man kann die "Explorer.exe" aus der CMD mit RunAs starten. Ich dachte immer das geht nicht....

    Nur... Adminrecht hat der Explorer trotzdem nicht !

    Meines Wissens nach, lässt sich der Explorer nur 1x starten und öffnet anschließend nur neue Fenster bei jedem Aufruf.
    Jedes Fenster läuft daher auch weiterhin mir den Rechten, die der erste Explorer hatte.

    Dann würde Dir der Aufruf mit RunAs nämlich nix bringen. Ich starte für solche Zwecke immer der TotalCommander als Admin. Damit klappt es.

  • Remote Shutdown per WMI

    • Micha_he
    • 25. April 2010 um 19:05

    Also bei mir funktioniert es auch nicht ! Gleicher Fehler wie bei Bitboy.

    Keine Domäne, sondern in einer Arbeitsgruppe unter Win XP 32bit. Auch ohne Firewall nicht.

    Edit: Lokal geht es auch nicht. Dann bricht er in der Zeile "Return $objItem.Win32Shutdown($iShutdownOption)" mit einem Fehler ab.

  • Lüfterdrehzahl auslesen

    • Micha_he
    • 25. April 2010 um 14:47
    Zitat von Andy


    Habe das Script mal um einen Filter erweitert, um so nur z.B. die NET-Objekte oder andere zu finden

    Leider hat Deine Anpassung mit dem Filter, hat leider 2 kleine Fehler:

    - Wenn man die Filtereingabe mit "CANCEL" abbricht gibt es einen Fehler
    - Wenn man den Filter wieder "LEER" bestätigt, wird "Select a WMI class" nicht wieder in das Combo eingefügt

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™