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

  • Beispiel für _ADGetObjectsInOU

    • Micha_he
    • 28. Oktober 2008 um 17:01

    Meiner Meinung nach müsste der DN verkehrt sein. Es sollte heißen:

    DIM $Array[500]
    _ADGetObjectsInOU($Array,"OU=TESTOU,DC=MeineDomain,DC=local")

    Aber meine Aussage ist jetzt ohne das ich genau weiß, ob der Aufruf der Funktion richtig ist.

  • ACL mit-/kopieren

    • Micha_he
    • 27. Oktober 2008 um 22:18

    Wie kann ich so etwas harausfinden, das die Funktion "Str, DWord, Ptr, Dword, Dword*" benötigt ?
    Gibt es da für AutoIt-User eine brauchbare Hilfe oder Webseite ?

    Oder eine Übersetzung? Laut MSDN sieht der Aufruf ja wie folgt aus:

    Spoiler anzeigen

    BOOL WINAPI GetFileSecurity(
    __in LPCTSTR lpFileName,
    __in SECURITY_INFORMATION RequestedInformation,
    __out_opt PSECURITY_DESCRIPTOR pSecurityDescriptor,
    __in DWORD nLength,
    __out LPDWORD lpnLengthNeeded
    );

    Wie komme ich von da aus, auf eine funktionierende AutoIt-Version, wie sie 'progandy' gezeigt hat ?!?

    @progandy: Danke aber für die Hilfe !

  • ACL mit-/kopieren

    • Micha_he
    • 27. Oktober 2008 um 19:32

    Hilfe !!!

    Ich habe mal den Anfang probiert. Aber DllCall ist mir scheinbar ainfach zu hoch...
    Warum bekomme ich bei meiner Umsetzung nix (aber auch gar nix) zurück ?

    Spoiler anzeigen
    [autoit]

    #include <array.au3>
    Opt("MustDeclareVars",1)

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

    Const $OWNER_SECURITY_INFORMATION = 0x1
    Const $GROUP_SECURITY_INFORMATION = 0x2
    Const $DACL_SECURITY_INFORMATION = 0x4
    Dim $sFile, $hAdvapi32, $aSecu

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

    $sFile = @scriptfullpath
    ;$sFile = @scriptdir & "\dummy.txt"
    $hAdvapi32 = DllOpen("advapi32.dll")

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

    $aSecu = DllCall($hAdvapi32,"long","GetFileSecurity", _
    "str",$sFile, _
    "long", $DACL_SECURITY_INFORMATION, _
    "byte","", _
    "long",0, _
    "long",0)
    DllClose($hAdvapi32)

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

    _arrayDisplay($aSecu)

    [/autoit]
  • ACL mit-/kopieren

    • Micha_he
    • 26. Oktober 2008 um 01:43

    Besteht unter Umständen die Möglichkeit auf die Funktionen "SetFileSecurity" und "GetFileSecurity" der ADVAPI32.DLL zuzugriefen und es damit zu lösen ?
    Ggf. auch Get-/SetNamedSecurityInfo der gleichen Bibliothek ? Ein kurze Bespiel in VB oder VBS habe ich leider nicht gefunden...

    Besten Dank nochmal

  • warum wird das gui immer größer?

    • Micha_he
    • 25. Oktober 2008 um 11:14

    Nicht nur die Titelleiste, sondern auch die Rahmen ! Sonst wäre das GUI ja nicht auch breiter geworden.
    GUI ist eben nicht WINDOW. Und es heist WINMOVE !

    So haut es hin:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    #include <ListViewConstants.au3>
    #include <Misc.au3>
    #include <WindowsConstants.au3>

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

    Opt("GUIOnEventMode", 1)
    Global $ini = @scriptdir & "\WMDE.ini"
    Global $ToolTitle = "Window Management +"
    $x = IniRead($ini, "Settings", "x", "-1")
    $y = IniRead($ini, "Settings", "y", "-1")
    $w = IniRead($ini, "Settings", "w", "555")
    $h = IniRead($ini, "Settings", "h", "281")

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

    #Region ### START Koda GUI section ### Form=o:\autoscripts\window management\form1.kxf

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

    $Form1_1 = GUICreate($ToolTitle,555,281,-1,-1, BitOR($WS_MINIMIZEBOX, $WS_CAPTION, $WS_POPUP, $WS_SYSMENU ,$DS_SETFOREGROUND, $WS_SIZEBOX), $WS_EX_TOPMOST)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
    $Tab = GUICtrlCreateTab(0, 0, $w, $h)
    GUICtrlSetResizing(-1, $GUI_DOCKAUTO)
    $TabSheet1 = GUICtrlCreateTabItem("Windows")
    $ListView1 = GUICtrlCreateListView("", 3, 23, $w - 5, $h - 28, BitOR($LVS_SHOWSELALWAYS, $LVS_REPORT));BitOR($LVS_REPORT, $LVS_SINGLESEL, $LVS_SHOWSELALWAYS), BitOR($LVS_EX_SUBITEMIMAGES, $WS_EX_CLIENTEDGE,$LVS_EX_GRIDLINES,$LVS_EX_HEADERDRAGDROP,$LVS_EX_FULLROWSELECT))
    $exStyles = BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_SUBITEMIMAGES, $LVS_EX_HEADERDRAGDROP)
    _GUICtrlListView_SetExtendedListViewStyle($ListView1, $exStyles)
    GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKBOTTOM + $GUI_DOCKAUTO)

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

    WinMove($Form1_1,"",$x,$y,$w,$h)
    GUISetState(@SW_SHOW, $Form1_1)

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

    While 1
    Sleep(100)
    WEnd

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

    Func _Exit()
    $WinPos = WinGetPos($Form1_1)
    IniWrite($ini, "Settings", "x", $WinPos[0])
    IniWrite($ini, "Settings", "y", $WinPos[1])
    IniWrite($ini, "Settings", "w", $WinPos[2])
    IniWrite($ini, "Settings", "h", $WinPos[3])
    Exit
    EndFunc

    [/autoit]
  • ACL mit-/kopieren

    • Micha_he
    • 24. Oktober 2008 um 16:56

    Gibt es eine Möglichkeit, unter AutoIt eine Ordnerstruktur bzw. eine Datei zu kopieren und die Quell-Zugriffsberechtigung (ACL, AccessControlList) mit zu übernehmen ?
    Oder nach dem FileCopy die Berechtigung nachträglich anzupassen ?

    Da es aber einige 1000 Dateien betreffen würde, kommt eigentlich eine Aufruf eines externen CMDLine-Tools nicht in Frage....
    Hat jemand eine andere Lösung (Win API, Win DLL) ? Nur schnell sollte sie sein !

    Danke
    micha_he

  • Dateizugriff, User und Host auf eine Freigabe erhalten

    • Micha_he
    • 21. Oktober 2008 um 17:12

    Ich habe mir das nun auch mal angesehen. Ein eindeutige Zuordnung konnte ich auch nicht finden. Aber ggf. werden nicht alle Rückgabeparameter der "NetAPI32.dll-NetFileEnum"-Funktion ausgenutzt.
    Meiner Meinung nach, müsste doch die "geöffnete Datei" zu einer "Connection" zwischen dem Server und dem Arbeitsplatz gehören !

    Aber leider kann ich da auch nicht weiterhelfen...

  • IO.FileSystemWatcher unter AutoIt nutzen

    • Micha_he
    • 21. Oktober 2008 um 11:47

    Hat jemand eine Idee, wie ich mit der .NET-Funktion "IO.FileSystemWatcher", auf Änderungen in einem lokalen Ordner reagieren kann ?

  • Dateizugriff, User und Host auf eine Freigabe erhalten

    • Micha_he
    • 17. Oktober 2008 um 12:12

    Wie wäre es mit einem (allgemein laufenden) Beispiel ?

  • Programm.exe in einem AutoIt fenster ausführen

    • Micha_he
    • 14. Oktober 2008 um 15:43

    Ich hab nur eine Idee, weis aber nicht ob es realisierbar ist:

    1. Run EXE mit @SW_HIDE (dasmit sieh man es nicht)
    2. Irgendwie regelmäßig einen Snapshot des Fensters anfertigen und in ein Autoit-Objekt einfügen. ( ? PrintWindow aus "user32")

    Aber ist halt nur eine Idee....

  • FileSaveDialog wird übersprungen

    • Micha_he
    • 14. Oktober 2008 um 12:24

    Hast du mit einer MsgBox vor dem "FileSaveDialog" einmal geprüft, ob in den Variablen "$SaveFolder" & "$Woche_Hefte" auch gültige Daten sind ?

    Ggf. führt die Funktion zum Fehler, weil eine der beiden Variablen = NULL ist.

    edit: Ich sehe gerade, Du sagst es kommt zum Fehler in der "Word.au3". Wenn dies natürlich bei der 1. Funktion "_WordMacroRun" passiert, dann komm Dein Script nie zur MsgBox, weil das Script beim ersten Aufruf schon beendet wird.
    Und um zu sehen ob der Aufruf "_WordMacroRun" richtig ist, müsstest Du schon etwas mehr wie 5 Zeilen posten. Aus den Angaben sieh man nicht, was in den Variablen steht. Ich würde an deiner Stelle, vor den Funktionen die Variabelen mit gültigen Daten füllen und wenn es dann immer noch nicht läuft, dann kannst Du den Ausschnitt (incl. der Variablen) zum Testen hier einstellen, so das das Script dann auch bei uns laufen müsste.

  • Substbefehl in AutoIt umsetzen

    • Micha_he
    • 13. Oktober 2008 um 12:46

    Meine Lösung:

    Spoiler anzeigen
    [autoit]

    #include <array.au3>
    Dim $out
    Dim $pid

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

    $pid = Run('"' & @ComSpec & '" /c subst','',@SW_HIDE,6)
    While 1
    If StdOutRead($pid,0,True) <> 0 Then
    $out &= StdoutRead($pid)
    Endif
    If @error Then ExitLoop
    Sleep(100)
    WEnd
    $subst_array = StringSplit($Out,@CRLF,1)
    _ArrayDelete($subst_array,UBound($subst_array)-1)
    $subst_array[0] = UBound($subst_array)-1

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

    For $i = 1 To $subst_array[0]
    RunWait('"' & @ComSpec & '" /c subst ' & StringLeft($subst_array[$i],2) & ' /D','',@SW_HIDE)
    Next

    [/autoit]
  • Problem mit Anführungszeichen

    • Micha_he
    • 9. Oktober 2008 um 21:58

    Entweder

    Spoiler anzeigen
    [autoit]

    $duf = 1
    $dav = 8
    $dov = 4
    $dif = 5
    $error = "error"
    $Text = "3131231"
    ShellExecute('batch.cmd', $duf & ' ' & $dov & ' ' & $dav & ' "' & $error & '" "' & $Text & '"')

    [/autoit]

    oder auch

    Spoiler anzeigen
    [autoit]

    $duf = 1
    $dav = 8
    $dov = 4
    $dif = 5
    $error = "error"
    $Text = "3131231"
    ShellExecute("batch.cmd", $duf & " " & $dov & " " & $dav & " " & Chr(34) & $error & Chr(34) & " " & Chr(34) & $Text & Chr(34))

    [/autoit]
  • Create Shortcut!!

    • Micha_he
    • 9. Oktober 2008 um 15:51

    Das mit dem $Location ist meiner Meinung nach einfach: Es muss GUICtrlRead und nicht GUICtrlGetState bei einem Input-Feld in Zeile 35 heißen.

    Zu dem $GUI_CHECKED-Problem, kann ich zur Zeit auch nichts sagen, in einem meiner Scripte habe ich gerade nachgesehen und dort funktioniert es nach anscheinend gleicher Methode. Jedenfalls sehe ich erstmal keinen Unterschied.

    Edit: Hab doch den Unterschied: Muss GUICtrlRead statt GUICtrlGetState heißen. Aber die folgenden Zeilen müssen natürlich unter "Case $Install" und nicht unter "Case $Verkn". Sonst legt er den Link nicht bei der Installation, sondern beim wählen der Option an. Unter "Case $Verkn" muss eigentlich nix !
    Hier die Zeilen:

    Spoiler anzeigen
    [autoit]

    If GUICtrlRead($Verkn) = $GUI_CHECKED Then
    FileCreateShortcut($test & "\main.au3",@DesktopDir & "\test.lnk")
    EndIf

    [/autoit]

    Insgesamt sollte es etwa so aussehen:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>

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

    Global $i = 0

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

    #NoTrayIcon

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

    $Window = GUICreate("test Programm", 476, 66, @DesktopHeight / 2.5, @DesktopWidth / 4)
    $Location = GUICtrlCreateInput("C:\Programme\test", 8, 16, 257, 21)
    $Locate = GUICtrlCreateButton("Installationspfad", 272, 16, 97, 25, 0)
    $Install = GUICtrlCreateButton("Installieren", 376, 16, 89, 25, 0)
    $Verkn = GuiCtrlCreateCheckbox("Verknüpfung auf dem Desktop erstellen (empfohlen)",8,40,290,30)
    $Progress1 = GuiCtrlCreateProgress(335, 50, 127, 13)
    GuiCtrlSetData(-1, $i)

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

    GUICtrlSetState($Verkn, $GUI_CHECKED)

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

    GUISetState(@SW_SHOW)

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

    While 1
    $msg = GUIGetMsg()

    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Locate
    $var = FileSelectFolder("Bitte Installationspfad angeben", "", -1, @ProgramFilesDir & "\test")
    GUICtrlSetData($Location, $var)


    Case $Verkn
    ; hier passiert nix, der Haken geht automatisch

    Case $Install

    DirCreate(GUICtrlRead($Location))
    DirCopy(@ScriptDir, GUICtrlRead($Location),1)
    FileCopy(@ScriptDir & "\" & "Addons" & "\" & "test.exe", @SystemDir, 1)
    $wait = 20
    GUICtrlSetData($progress1, $i)
    Sleep($wait)

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

    For $i = 0 To 100
    $MSG = GUIGetMsg()
    GUICtrlSetData($PROGRESS1, $i)
    sleep($wait)
    Next
    $confirm = MsgBox(0, "Installation abgeschlossen", "Die Installation ist fertiggestellt")
    If $confirm = 1 Then ; Checked "ok" !! Msgbox mit Ok und auf Ja abfragen haut nicht hin !!
    ; Hier wird der Link erzeugt, wenn angewählt
    $test = GUICtrlRead($Location)
    If GUICtrlRead($Verkn) = $GUI_CHECKED Then
    FileCreateShortcut($test & "\main.au3",@DesktopDir & "\test.lnk")
    EndIf
    EndIf
    Exit

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




    EndSwitch
    WEnd

    [/autoit]
  • Automatischer Downloader

    • Micha_he
    • 9. Oktober 2008 um 12:52

    Ich würde das "vom Prinzip" so aufbauen:

    Spoiler anzeigen
    [autoit]

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

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

    Case $Downloadbutton
    $files = FileOpen($SaveFileList,0)
    If $files = -1 Then
    MsgBox(0, "Fehler", "Konfig-Datei kann nicht geöffnet werden.")
    Exit
    EndIf

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

    While 1
    $file=FileReadLine($files)
    If @error = -1 Then ExitLoop ; letzte erreicht

    ; z.B. Unterschied ermitteln
    If StringLeft(StringRight($file,6),2) = @MON Then

    ; Fragen ob Downloaden
    ; wenn 'ja' Download-Funktion starten

    EndIf
    Wend
    FileClose($files)

    EndSwitch
    WEnd

    [/autoit]
  • Create Shortcut!!

    • Micha_he
    • 9. Oktober 2008 um 12:35

    Der Fehler liegt an einem fehlenden BackSlash vorm Ziel-Link, da das Macro "@DesktopDir" keinen abschließenden "\" mitbringt !

    Es muss so lauten:

    Spoiler anzeigen
    [autoit]

    FileCreateShortcut($var, @DesktopDir & "\Verknüpfung.lnk")

    [/autoit]
  • Frage bezüglich suchen von dateien

    • Micha_he
    • 8. Oktober 2008 um 21:33

    Ich habe zwar kaum was verstanden, aber ich wenn ich Dich richtig verstanden habe, möchtest Du folgendes (?)

    Spoiler anzeigen
    [autoit]

    Case $msg = $button_itunes $message = "Search."

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

    $var = FileOpenDialog($message, @WindowsDir & "\", "Images (*.jpg;*.bmp)", 1 + 4 )

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

    If @error Then
    ; nix tun
    Else
    $var = StringReplace($var, "|", @CRLF)
    MsgBox(4096,"","->" & $var)
    IniWrite("C:\Dokumente und Einstellungen\1\Desktop\test.ini","test1","Var",$var) ; hier einfach den Wert der in der Sektion "test1" unter "Var" abgelegt werden soll
    EndIf

    [/autoit]

    wieder einlesen geht dann etwa so:

    Spoiler anzeigen
    [autoit]

    $var = IniRead("C:\Dokumente und Einstellungen\1\Desktop\test.ini","test1","Var")

    [/autoit]

    Beides ist aber sehr klar verständlich in der AutoIt-Hilfe nachzulesen !

  • Parameterübergabe klappt nicht

    • Micha_he
    • 8. Oktober 2008 um 15:22

    Wäre natürlich schön gewesen, wenn Du geschrieben hättest was nicht geht, bzw. was falsch ausgeführt wird.

    Um aber die Probleme mit Leerzeichen zu umgehen gäbe es z.B. diese zwei Möglichkeiten:

    Spoiler anzeigen
    [autoit]

    $Save = FileSaveDialog ( "Datei speichern unter", @MyDocumentsDir, "Windows-Image (*.wim)", 3)

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

    If @error Then
    MsgBox(4096,"","Save cancelled.")
    Else
    MsgBox(4096,"","You chose " & $Save)
    EndIf

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

    run(Chr(34) & @ScriptDir & "\return.cmd" & Chr(34) & " " & Chr(34) & $Save & Chr(34)) ; Chr(34) = "

    [/autoit]

    oder...

    Spoiler anzeigen
    [autoit]

    $Save = FileSaveDialog ( "Datei speichern unter", @MyDocumentsDir, "Windows-Image (*.wim)", 3)

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

    If @error Then
    MsgBox(4096,"","Save cancelled.")
    Else
    MsgBox(4096,"","You chose " & $Save)
    EndIf

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

    run('"' & @ScriptDir & '\return.cmd" "' & $Save & '"')

    [/autoit]

    Beide Möglichkeiten sind aber ungetestet, da ich zur Zeit unter Linux schreibe !

  • USB Autorun

    • Micha_he
    • 6. Oktober 2008 um 20:48
    Zitat von Raupi

    Ich denke ein bischen Grips anstrengen bei der Laufwerksauswahl ist net falsch. Wer des Tool kennt kann sich ja denken das er nur ein Laufwerk auswählen soll . ;) .

    Ich liebe es aber, wenn ein Script 99,9% ist. Und wenn ich das "Autorun.inf-Erzeugungsscript" benutze und am Anfang einen Unterordner eines Laufwerks öffne, wird dieser in die Variable gelesen und anschließen für die nächsten Filedialoge benutzt. Der User steht also bei allen drei Datei-Auswahlen in dem vorher gewählen Laufwerks-Unterordner.
    Für die Funktion tut das ja keinen Abbruch, weil ich sowieso nur die linken 2 Zeichen verwende, nur schön ist es nicht. Der User muss halt immer wieder die Ordner rückwärts klicken.

    Das mit dem ArraySerach und ArrayDelete muss ich mir nochmal näher ansehen, wenn ich etwas mehr Zeit habe.

    micha_he

  • USB Autorun

    • Micha_he
    • 6. Oktober 2008 um 14:44

    Ich habe das Tool zum Erzeugen der "Autorun.inf" um einige Fehlerabfragen erweitert. Das einzige was ich noch nicht gefunden habe ist eine Möglichkeit, das der User beim ersten Dialog nur die Laufwerke und keine Unterordner wählen kann.

    Hier die erweiterte 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 ", "")
    If $var <> "" Then
    $var1 = FileOpenDialog("Autorun icon auswählen ", $Var, "Icons (*.ico)", 1 + 4 )
    $var2 = FileOpenDialog("Autorun open auswählen ", $Var, "Ausführbares (*.exe;*.bat;*.cmd)", 1 + 4 )
    $var3 = FileOpenDialog("Autorun close auswählen ", $Var, "Ausführbares (*.exe;*.bat;*.cmd)", 1 + 4 )
    If $var1 <> "" Then
    $Icon = Stringsplit ($var1,"\")
    IniWrite(StringLeft($var,2) & "\autorun.inf", "autorun", "icon", $Icon[2])
    Else
    IniDelete(StringLeft($var,2) & "\autorun.inf", "autorun", "icon")
    EndIf
    If $var2 <> "" Then
    $Open = Stringsplit ($var2,"\")
    IniWrite(StringLeft($var,2) & "\autorun.inf", "autorun" , "open", $Open[2])
    Else
    IniDelete(StringLeft($var,2) & "\autorun.inf", "autorun" , "open")
    EndIf
    If $var3 <> "" Then
    $Close = Stringsplit ($var3,"\")
    IniWrite(StringLeft($var,2) & "\autorun.inf", "autorun", "close", $Close[2])
    Else
    IniDelete(StringLeft($var,2) & "\autorun.inf", "autorun", "close")
    EndIf
    EndIf

    [/autoit]

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™