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

Beiträge von Kleiner

  • datei finden und dann ordner öffnen, in dem die datei ist.... wie mache ich das?

    • Kleiner
    • 23. Januar 2010 um 11:44
    [autoit]

    #include <_FileFindNet.au3>
    #include <Array.au3>
    $finden = _FileFindNet ("WinSetupFromUSB_0-1-1.exe", "", "D:\", 1, 0)
    if IsArray ($finden) Then _ArrayDisplay($finden)

    [/autoit]


    edit: sorry habe noch nicht geschl.

    [autoit]


    #include <_FileFindNet.au3>
    #include <Array.au3>
    $finden = _FileFindNet ("WinSetupFromUSB_0-1-1.exe", "", "D:\", 1, 0)
    if IsArray ($finden) Then _ArrayDisplay($finden)
    ShellExecute($finden[1])

    [/autoit]


    Lg kleiner

  • _FileListToRekursiv Update: 08.07.2011

    • Kleiner
    • 23. Januar 2010 um 10:56

    Hi sc4ry!

    Ich muste ein wenig erweitern!

    [autoit]

    ;==========================================================================================================
    ; Function Name: _FilesListRekursiv($P, $G = True, $O = 0)
    ;
    ; Description: Auflistung von Dateien und Ordnern
    ; $P Pfad
    ; $G 1 (Standart) wie viele Pfade / angabe zB 1 für C: oder 3 für C: D: E: nacheinader Durchsucht
    ; Parameter(s): $O 0 (Standard) Gibt Dateien und Ordner zurück, 1 Gibt nur Dateien zurück [ nur für 1 Pfad ]
    ; 2 Gibt nur Ordner zurück
    ;
    ; Return Value(s): Array (Standard) mit den gefundenen Pfaden der Dateien und/oder Ordner
    ;
    ; Author(s): (http://www.autoit.de) Kleiner27 <22.02.2010 23:00>
    ;============================================================================================================

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

    _FilesListRekursiv('c:', 0, 2)

    [/autoit]


    LG Kleiner

  • _FileListToRekursiv Update: 08.07.2011

    • Kleiner
    • 23. Januar 2010 um 09:47

    Guten Morgen!

    autoBert


    Also ich kann mir dein Fehler nur so erklären das wenn du
    zwei o. dreimal hintereinander die Func aufrufst dann ist er raus gesprungen
    den Bug habe ich behoben das lag an den Variablen und ReDim da manche den wert beibehalten haben und dazu kam es zu Fehlern! ;)

    Oder du benutz noch die alten Funktion aufrufe! :D


    Update: Post#1


    LG Kleiner

  • _FileListToRekursiv Update: 08.07.2011

    • Kleiner
    • 22. Januar 2010 um 21:23

    Das mit der Auflistung liegt daran das nach dem Alphabet geleistet
    wird!


    LG Kleiner

  • _FileListToRekursiv Update: 08.07.2011

    • Kleiner
    • 22. Januar 2010 um 20:07

    Hi sc4ry!


    Soweit ich getestet habe listen beide immer das gleich ausser das die datein zB. auf C:\ nicht nacheinander afgelistet werden bei mir erst 3 dann kommen 100 Ordner
    dann die restlichen Datein oder noch mal weiter hinten, muß mal sehn wie sich das ändern läst!


    LG Kleiner

  • _FileListToRekursiv Update: 08.07.2011

    • Kleiner
    • 22. Januar 2010 um 13:42

    Jop und schon fast Fertig!

    Ziemlich schnell und kurzes Skript!
    Netzwerk geht auch!
    Ein paar abfragen noch denke ich und Fertig!


    LG Kleiner

  • _FileListToRekursiv Update: 08.07.2011

    • Kleiner
    • 22. Januar 2010 um 12:53

    Update

    Habe die func ein wenig schneller gemacht Dopelt so schnell bei mir C:\ vorher 5,67 sec. jetzt 2,75 sec. rund 6000-7000 Ordner : 0,700 sec. für rund 1000 Ordner

    Post#1


    LG Kleiner

  • _FileListToRekursiv Update: 08.07.2011

    • Kleiner
    • 21. Januar 2010 um 23:16

    Hi Leute!


    Jetzt genauso schneller wie mit Run(@ComSpec .... ! :DViel Schneller ;)
    Mit Wildcards Datei/Ordner suche !

    Update: 08.07.2011 Durch TheDude der gerne ein Parameter zum unterscheiden für Groß o. Kleinschreibung haben möchte, habe ich

    [autoit]

    $CaSen ;....

    [/autoit]

    hinzugefügt, ist nur in Kombination mit Flag 3 zu verwenden.

    Update: 11.05.2011 Individuell Suche eingebunden ( Suche marke eigenbau, Microsoft MS-DOS Wild Card Match, Benutzer eigen, RegExp Match ) u. suche nach leeren Ordner bei gleichbleibender Performance.
    Update: 11.02.2011 Funktion erweitert man kann festlegen ob das Array 0 basierend = anzahl(Index) oder nicht
    Update: 21.12.2010 zusatzparameter um die Tife des Teilbaum fest zu legen
    Update 19.12.2010 noch ein wenig schneller.
    Update: 19.11.2010 - Unnötige For u. Next schleife Entfernt, Ein zusatz $Mehr ist eingebaut worden um mehrere Laufwerke auf einmal zu speichern Also ein Speicher bei mehreren aufrufen.

    Func:

    Spoiler anzeigen
    [autoit]

    ;===================================================================================================================================#
    ;Function Name....: _FileListToRekursiv($Path, $Wildc = '*', $iFlag = 0, $iTB = 0, $iIntex = 0, $More = False, Const $CaSen = 0)
    ;Description......: Auflistung von Dateien u. o. Ordner (Rekursiv)
    ;$Path............: Pfad angabe
    ;$Wildc...........: '*' (Standart) Suchbegrif u. o. Wildcards nur (*) möglich
    ; bei Wildcards u. suchbegriff ist $iFlag auf '3' zu setzen
    ; es ist auch möglich mehrere suchbegriffe zu suchen z.B *.wma,*.mp3,*.txt getrennt mit ','
    ;
    ;$iFlag...........: '0' (Standart), Datein u. Ordner
    ; '1' nur Datein
    ; '2' nur Ordner
    ; '3' um mit suchbegriffen zu suchen *.txt
    ; '4' Microsoft MS-DOS Wild Card Match (nur ein Suchbegriff möglich)
    ; '5' Benutzer eigen, RegExp Match suche
    ; '6' suche für leere Ordner
    ;
    ;$iTB.............: '0' (Standart) für alle Unter-Verzeichnisse
    ;
    ;$iIndex..........: '0' (Standard), es fungiert jedes in den Trennzeichen enthaltene Zeichen als Trennmarkierung
    ; '1' es wird der gesamte Trennzeichenstring als Trennmarkierung genutzt
    ; '2' deaktiviert die Rückgabe der Anzahl im ersten Element. Dadurch wird das Array 0-basierend.
    ;
    ;$More............: 'False' (Standart) Ein duchlauf dann wird $RAS gelöscht
    ; 'True' Ein Speicher für wiederholten aufruf.
    ; !Wichtig! Bool ist zu verwenden
    ;
    ;$CaSen...........: ist nur mit Flag 3 zu Verwenden auf alle anderen Flags, hat Case-Sensitiv keine auswirkung.
    ; 0 = Groß- und Kleinschreibung werden nicht berücksichtigt (Standardwert).
    ; 1 = Berücksichtigt Groß- und Kleinschreibung.
    ; 2 = Groß- und Kleinschreibung werden nicht berücksichtigt. Es findet ein einfacherer schnellerer Vergleich statt
    ;
    ;Return Value(s)..: Array mit den gefundenen Dateien u. o Ordner
    ;
    ;error............: -1 unzulässiges zeichen
    ; -2 error Flag
    ; -3 es konnte kein Array erstellt werden
    ; -4 suche war erfolglos o. Dll aufruf ist gescheitert
    ;
    ;
    ;
    ;Author(s)........: Kleiner (http://www.autoit.de)
    ;====================================================================================================================================#

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

    ;================================================================================ Variable - Constante#
    Global Static $__K32 = DllOpen('Kernel32'); DllCall( Reparse Point )
    Global Static $__Shl = DllOpen('Shlwapi'); DllCall( Microsoft MS-DOS Wild Card Match )
    Global $FN
    Global $RP
    Global $Ex
    Global $RAS
    Global $Spec
    Global $While
    Global $iCP_Len
    Global $casesense
    Global Const $IHV = 0xFFFFFFFF; INVALID_HANDLE_VALUE = -1
    Global Const $REPARSE_POINT = 0x400; FILE_ATTRIBUTE_REPARSE_POINT = 1024
    Global Const $sBack = '\', $sDelim = '|', $sW = '*'
    ;=====================================================================================================#

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

    Func _FileListToRekursiv($Path, Const $Wildc = '*', Const $iFlag = 0, Const $iTB = 0, Const $iIntex = 0, Const $More = False, Const $CaSen = 0)
    $iCP_Len = ''
    If $iTB Then $iCP_Len = StringLen($Path) + 1
    If Not IsBool($More) Or Not $More Then $RAS = ''
    $Path = StringRegExpReplace($Path, '[\\/]+\z', $sBack) & $sBack
    If Not FileExists($Path) Then Return SetError(1, 0, '')
    If IIF($iFlag = 5, False, StringRegExp($Wildc, '[\\/:><\|]|(?s)\A\s*\z')) Then Return SetError(1, 0, -1)
    If ($iFlag < 0 Or $iFlag > 6) Then Return SetError(2, 0, -2)
    If Not $iFlag Or $iFlag = 2 Then $RAS &= $sDelim & $Path
    If $iFlag = 3 Then
    Local $aW_s = StringSplit($Wildc, ',')
    If Not IsArray($aW_s) Then Return SetError(3, 0, -3)
    Local $aW_s2[$aW_s[0]][3]
    $casesense = $CaSen
    For $i = 1 To $aW_s[0]
    $aW_s2[$i - 1][0] = (StringLeft($aW_s[$i], 1) = $sW) + IIF(StringRight($aW_s[$i], 1) = $sW, 2, 0)
    $aW_s2[$i - 1][1] = StringReplace($aW_s[$i], '*', '')
    $aW_s2[$i - 1][2] = StringLen($aW_s2[$i - 1][1])
    Next
    EndIf
    ToRekursiv(FileFindFirstFile($Path & $sW), $Path, IIF(IsDeclared('aW_s2'), Execute('$aW_s2'), $Wildc), $iFlag, $iTB)
    If Not $RAS Then Return SetError(4, 0, -4)
    Return StringSplit(StringTrimLeft($RAS, 1), $sDelim, $iIntex)
    EndFunc ;==>_FileListToRekursiv

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

    Func ToRekursiv($HWnd, $Path, $Wildc, $iFlag, $iTB, $FL = '')
    If StringInStr($Path, $sBack, False, $iTB, $iCP_Len) Then Return True
    If $HWnd = $IHV And $iFlag = 6 Then $RAS &= $sDelim & StringTrimRight($Path, 1)
    $While = $HWnd <> $IHV
    While $While
    $FN = FileFindNextFile($HWnd)
    If @error Then ExitLoop
    $Ex = @extended
    Switch $iFlag
    Case 0
    $RAS &= $sDelim & $Path & $FN
    If $Ex Then $FL &= $sDelim & $Path & $FN & $sBack
    Case 1
    Switch $Ex
    Case 0
    $RAS &= $sDelim & $Path & $FN
    Case 1
    $FL &= $sDelim & $Path & $FN & $sBack
    EndSwitch
    Case 2
    If Not $Ex Then ContinueLoop
    $RAS &= $sDelim & $Path & $FN
    $FL &= $sDelim & $Path & $FN & $sBack
    Case 3
    If $Ex Then $FL &= $sDelim & $Path & $FN & $sBack
    If IsArray($Wildc) Then
    For $i = 0 To UBound($Wildc) - 1
    Switch $Wildc[$i][0]
    Case 1
    If Not StringCompare(StringRight($FN, $Wildc[$i][2]), $Wildc[$i][1], $casesense) Then $RAS &= $sDelim & $Path & $FN
    Case 2
    If Not StringCompare(StringLeft($FN, $Wildc[$i][2]), $Wildc[$i][1], $casesense) Then $RAS &= $sDelim & $Path & $FN
    Case 3
    If StringInStr($FN, $Wildc[$i][1], $casesense, 1) Then $RAS &= $sDelim & $Path & $FN
    EndSwitch
    Next
    EndIf
    Case 4
    If $Ex Then $FL &= $sDelim & $Path & $FN & $sBack
    $Spec = DllCall($__Shl, 'Bool', 'PathMatchSpecW', 'wstr', $FN, 'wstr', $Wildc)
    If @error Then Return True
    If $Spec[0] Then $RAS &= $sDelim & $Path & $FN
    Case 5
    If $Ex Then $FL &= $sDelim & $Path & $FN & $sBack
    If StringRegExp($FN, $Wildc) Then $RAS &= $sDelim & $Path & $FN
    Case 6
    If $Ex Then $FL &= $sDelim & $Path & $FN & $sBack
    EndSwitch
    WEnd
    FileClose($HWnd)
    If Not $FL Then Return True
    For $For In StringSplit(StringTrimLeft($FL, 1), $sDelim, 2)
    $RP = DllCall($__K32, 'Dword', 'GetFileAttributesW', 'wstr', $For)
    If @error Then Return True
    Switch BitAND($RP[0], $REPARSE_POINT)
    Case False
    ToRekursiv(FileFindFirstFile($For & $sW), $For, $Wildc, $iFlag, $iTB)
    Case Else
    ContinueLoop
    EndSwitch
    Next
    EndFunc ;==>ToRekursiv

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

    ;===================================================================================================================================#
    ;Function Name....: IIF($expr, $Truepart = True, $Falsepart = False)
    ;
    ;Description......: If Abfrage
    ;$expr............: Wert zu Prüfung
    ;$Truepart........: Wenn Wert bei der Prüfung Wahr = ausgabe ( z.B True [Standart])
    ;$Falsepart.......: Wenn Wert bei der Prüfung Falsch = ausgabe ( z.B False [Standart])
    ;Return Value(s)..: Auswertung der Prüfung True/False/Benutzer(Ausgabe)
    ;
    ;Author(s)........: Kleiner (http://www.autoit.de)
    ;====================================================================================================================================#
    Func IIF($V_Expr, $F_True = True, $F_False = False)
    If $V_Expr Then Return $F_True
    Return $F_False
    EndFunc ;==>IIF

    [/autoit]


    LG Kleiner

    Dateien

    FileListRekursiv.au3 7,57 kB – 469 Downloads
  • Treeview FileExplorer

    • Kleiner
    • 19. Januar 2010 um 16:23

    Hi Oscar!


    Ja da hast du recht ich arbeite wohl im Moment zu viel mit
    WMI! 8o

    LG Kleiner

  • Treeview FileExplorer

    • Kleiner
    • 19. Januar 2010 um 08:03

    Guten Morgen Oscar!


    Hätte da vieleicht noch eine idee, um alle Laufwerke aufzulisten!

    [autoit]

    #include <Array.au3>
    $st = '.'

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

    $obWMI = ObjGet('winmgmts:\\' & $st & '\root\CIMV2')
    $co = $obWMI.ExecQuery('SELECT * FROM Win32_LogicalDiskRootDirectory')
    If Not IsObj($co) Then MsgBox(0, 'WMI Output', 'No WMI Objects Found for class: ' & 'Drive')
    Dim $aArray[$co.Count], $i = 0
    For $ob In $co
    $aArray[$i] = StringReplace(StringRight($ob.GroupComponent, 3), '"', '\')
    $i += 1
    Next
    _ArrayDisplay($aArray)

    [/autoit]


    LG Kleienr

  • Treeview FileExplorer

    • Kleiner
    • 18. Januar 2010 um 20:12

    Hey Oscar!


    Die Idee hatte ich auch schon nur ran gemacht habe ich mich noch nicht! ;)
    Aber super gelung! :thumbup:

    LG Kleiner

  • WMI.au3 - WMI-Display.au3

    • Kleiner
    • 18. Januar 2010 um 20:02

    Hey AutoBert!


    Danek für dein Feeback, werde ich bei dem nächsten Update mit einfügen! :rolleyes:

    Ist noch viel zu Tun! ;)


    LG

  • UDF zum Anzeigen von Hilfetexten und einer Uhr in der Statusbar.Anzeige einer Uhr in der Menüzeile.

    • Kleiner
    • 18. Januar 2010 um 19:16

    Hey Raupi!


    Schöne sache find ich gut gelungen! :thumbup:


    LG Kleiner

  • WMI.au3 - WMI-Display.au3

    • Kleiner
    • 18. Januar 2010 um 18:52

    Hallo Leute!



    Update 18.10.2011 

    Komplet überarbeitet, 8 Funktionen hinzu gefügt die WMI.au3 umfasst aufrufe von Namespace, Class, Property, Qualifiers usw.
    WMI-Display auch umgeschrieben.


    Durch ein Tipp von BugFix bin ich auf Scriptomatic gekommen das die WMI
    abfragen super erleichtert das was mich aber immer gestört hat sind die ewigen
    MsgBox gut man kann sich die Skripte abspeichern und bearbeiten so wie man es gerade brauchet aber ich will
    mit allen Individuell arbeiten und darum habe ich angefangen die WMI.au3 zu schrieben.


    WMI.au3

    Spoiler anzeigen
    [autoit]

    #include-once
    ;########################################
    ; 18.10.2011 12:00 Kleiner AutoIt.de
    ;########################################
    Global $save_wmi
    ;===================================================================================================================================#
    ;Function Name....: WMI_EnumNamespaces($ComputerName = @ComputerName)
    ;
    ;Description......: Auflistung der Ebenen
    ;Return Value(s)..: Array
    ; @error.: -1 Ebene o. ComputerName = Leer
    ;
    ;Author(s)........: Kleiner (http://www.autoit.de)
    ;===================================================================================================================================#
    Func WMI_EnumNamespaces($ComputerName = @ComputerName)
    If Not $ComputerName Then Return SetError(1, 0, -1)
    $save_wmi = ''
    EnumNamespaces_R('root', $ComputerName)
    If @error Then Return SetError(1, 0, -2)
    Return StringSplit(StringTrimLeft($save_wmi, 1), '|', 2)
    EndFunc ;==>WMI_EnumNamespaces

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

    Func EnumNamespaces_R($strNamespace, $ComputerName)
    Local $objWMIService = ObjGet('winmgmts:\\' & $ComputerName & '\' & $strNamespace)
    If Not IsObj($objWMIService) Then Return SetError(1, 0, -1)
    Local $colNameSpaces = $objWMIService.InstancesOf('__NAMESPACE')
    For $objNameSpace In $colNameSpaces
    $save_wmi &= '|' & ($strNamespace & '\' & $objNameSpace.Name)
    EnumNamespaces_R(($strNamespace & '\' & $objNameSpace.Name), $ComputerName)
    Next
    EndFunc ;==>EnumNamespaces_R

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

    ;===================================================================================================================================#
    ;Function Name....: WMI_EnumClass($ComputerName = @ComputerName, $Namespaces = 'root', $Filter = 'dynamic')
    ;
    ;Description......: Classen auflisten
    ;$ComputerName....: Computer Name Übegeben [localhost Standart]
    ;$Namespaces......: Ebene übergeben [root Standart]
    ;$Filter..........: Filter übergeben [dynamic Standart]
    ;Return Value(s)..: Array
    ; @error.: -1 Ebene o. Computer Name = Leer
    ; -2 Kein Objekt
    ;
    ;Author(s)........: Kleiner (http://www.autoit.de)
    ;===================================================================================================================================#
    Func WMI_EnumClass($Namespaces = 'root\CIMV2', $ComputerName = @ComputerName, $Filter = 'dynamic')
    If $ComputerName And $Namespaces And $Filter Then
    Local $objWMIService = ObjGet('winmgmts:\\' & $ComputerName & '\' & $Namespaces)
    If Not IsObj($objWMIService) Then Return SetError(1, 1, -2)
    Local $Return_Array
    For $objClass In $objWMIService.SubclassesOf()
    For $objClassQualifier In $objClass.Qualifiers_
    If Not $Filter Then
    $Return_Array &= '|' & $objClass.Path_.Class
    Else
    If $objClassQualifier.Name = $Filter Then $Return_Array &= '|' & $objClass.Path_.Class
    EndIf
    Next
    Next
    If $Filter Then Return StringSplit(StringTrimLeft($Return_Array, 1), '|', 2)
    $Return_Array = StringSplit(StringTrimLeft($Return_Array, 1), '|', 2)
    If IsArray($Return_Array) Then Return ___ArrayUnique($Return_Array)
    Return SetError(1, 0, -3)
    EndIf
    Return SetError(1, 0, -1)
    EndFunc ;==>WMI_EnumClass

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

    ;===================================================================================================================================#
    ;Function Name....: WMI_Get($Namespaces, $sClass, $ComputerName = @ComputerName)
    ;
    ;Description......: WMI abfrage [einfache Read Funktionen]
    ;$Namespaces......: Ebene übergeben
    ;$sClass..........: Class übergeben
    ;$ComputerName....: Computer Name Übegeben [localhost Standart]
    ;Return Value(s)..: Array
    ; @error.: -1 Ebene o. Class o. Computer Name = Leer
    ; -2 Kein Objekt
    ; -3 Keine Eigenschalften gefunden
    ;
    ;Author(s)........: Kleiner (http://www.autoit.de)
    ;====================================================================================================================================#
    Func WMI_Get($Namespaces, $sClass, $ComputerName = @ComputerName)
    If Not $Namespaces Or Not $sClass Or Not $ComputerName Then Return SetError(1, 0, -1)

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

    Local $objWMIService = ObjGet('winmgmts:\\' & $ComputerName & '\' & $Namespaces)
    Local $objClass = $objWMIService.Get($sClass)

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

    If Not IsObj($objClass) Then SetError(1, 0, -2)

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

    Local $Row = 0
    Local $aReturn[2][250]
    Local $aProperty[250][2]

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

    For $objProperty In $objClass.Properties_()
    If $objProperty.IsArray = True Then
    $aProperty[$Row][0] = '$objItem.' & $objProperty.Name & '(0)'
    $aReturn[0][$Row] = $objProperty.Name
    ElseIf $objProperty.CIMTYPE = 101 Then
    $aProperty[$Row][0] = '$objItem.' & $objProperty.Name
    $aReturn[0][$Row] = $objProperty.Name
    $aProperty[$Row][1] = 'Time'
    Else
    $aProperty[$Row][0] = '$objItem.' & $objProperty.Name
    $aReturn[0][$Row] = $objProperty.Name
    EndIf
    $Row += 1
    Next

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

    If Not $Row Then Return SetError(1, 0, -3)
    ReDim $aProperty[$Row][2]

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

    $Row = 1
    Local $UB = UBound($aProperty)
    ReDim $aReturn[Int(15999999 / $UB)][$UB]

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

    For $objItem In $objWMIService.ExecQuery('SELECT * FROM ' & $sClass)
    For $i = 0 To $UB - 1
    $aReturn[$Row][$i] = IIF(Not $aProperty[$i][1], Execute($aProperty[$i][0]), StringToDate(Execute($aProperty[$i][0])))
    Next
    $Row += 1
    Next
    ReDim $aReturn[$Row][$UB]
    Return $aReturn
    EndFunc ;==>WMI_Get

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

    ;===================================================================================================================================#
    ;Function Name....: WMI_PropertyZWBS($Namespaces, $sClass, $ComputerName = @ComputerName)
    ;
    ;Description......: Zur weiterbesrbetung Speichern - Classen eigenschaften auflisten
    ;$Namespaces......: Ebene übergeben [root Standart]
    ;$sClass..........: Class übergeben
    ;$ComputerName....: Computer Name Übegeben [localhost Standart]
    ;Return Value(s)..: 2D Array[Property][Datum o. nicht wird mit Time gekenzeichnet]
    ; @error.: -1 Ebene o. Computer Name = Leer
    ; -2 Kein Objekt
    ;
    ;Author(s)........: Kleiner (http://www.autoit.de)
    ;===================================================================================================================================#
    Func WMI_PropertyZWBS($Namespaces, $sClass, $ComputerName = @ComputerName)
    If Not $Namespaces Or Not $sClass Or Not $ComputerName Then Return SetError(1, 0, -1)

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

    Local $objWMIService = ObjGet('winmgmts:\\' & $ComputerName & '\' & $Namespaces)
    Local $objClass = $objWMIService.Get($sClass)

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

    If Not IsObj($objClass) Then SetError(1, 0, -2)

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

    Local $Row = 0
    Local $aReturn[2][250]
    Local $aProperty[250][2]

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

    For $objProperty In $objClass.Properties_()

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

    If $objProperty.IsArray = True Then
    $aProperty[$Row][0] = '$objItem.' & $objProperty.Name & '(0)'
    $aReturn[0][$Row] = $objProperty.Name
    ElseIf $objProperty.CIMTYPE = 101 Then
    $aProperty[$Row][0] = '$objItem.' & $objProperty.Name
    $aReturn[0][$Row] = $objProperty.Name
    $aProperty[$Row][1] = 'Time'
    Else
    $aProperty[$Row][0] = '$objItem.' & $objProperty.Name
    $aReturn[0][$Row] = $objProperty.Name
    EndIf

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

    $Row += 1
    Next

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

    If Not $Row Then Return SetError(1, 0, -3)
    ReDim $aProperty[$Row][2]

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

    Return $aProperty
    EndFunc ;==>WMI_PropertyZWBS

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

    ;===================================================================================================================================#
    ;Function Name....: WMI_ClassProperty($Namespaces, $sClass, $ComputerName = @ComputerName)
    ;
    ;Description......: Classen eigenschaften auflisten
    ;$Namespaces......: Ebene übergeben [root Standart]
    ;$sClass..........: Class übergeben
    ;$ComputerName....: Computer Name Übegeben [localhost Standart]
    ;Return Value(s)..: Array[Property]
    ; @error.: -1 Ebene, Classe o. Computer Name = Leer
    ; -2 Kein Objekt
    ;
    ;Author(s)........: Kleiner (http://www.autoit.de)
    ;===================================================================================================================================#
    Func WMI_ClassProperty($Namespaces, $sClass, $ComputerName = @ComputerName)
    If $ComputerName And $Namespaces And $sClass Then
    Local $objClass = ObjGet('winmgmts:\\' & $ComputerName & _
    '\' & $Namespaces & ':' & $sClass)
    If Not IsObj($objClass) Then Return SetError(1, 0, -2)
    Local $Save_Property
    For $objClassProperty In $objClass.Properties_
    $Save_Property &= '|' & $objClassProperty.Name
    Next
    Return StringSplit(StringTrimLeft($Save_Property, 1), '|', 2)
    EndIf
    Return SetError(1, 0, -1)
    EndFunc ;==>WMI_ClassProperty

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

    ;===================================================================================================================================#
    ;Function Name....: WMI_ClassMethods($Namespaces, $sClass, $ComputerName = @ComputerName)
    ;
    ;Description......: Classen Methoden auflisten
    ;$Namespaces......: Ebene übergeben [root Standart]
    ;$sClass..........: Class übergeben
    ;$ComputerName....: Computer Name Übegeben [localhost Standart]
    ;Return Value(s)..: Array[Property]
    ; @error.: -1 Ebene, Classe o. Computer Name = Leer
    ; -2 Kein Objekt
    ;
    ;Author(s)........: Kleiner (http://www.autoit.de)
    ;===================================================================================================================================#
    Func WMI_ClassMethods($Namespaces, $sClass, $ComputerName = @ComputerName)
    If $ComputerName And $Namespaces And $sClass Then
    Local $objClass = ObjGet('winmgmts:\\' & $ComputerName & _
    '\' & $Namespaces & ':' & $sClass)
    If Not IsObj($objClass) Then Return SetError(1, 0, -2)
    Local $Save_Klass
    For $objClassMethod In $objClass.Methods_
    $Save_Klass &= '|' & $objClassMethod.Name
    Next
    Return StringSplit(StringTrimLeft($Save_Klass, 1), '|', 2)
    EndIf
    Return SetError(1, 0, -1)
    EndFunc ;==>WMI_ClassMethods

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

    ;===================================================================================================================================#
    ;Function Name....: WMI_ClassQualifiers($Namespaces, $sClass, $ComputerName = @ComputerName)
    ;
    ;Description......: Classen Qualifiers auflisten
    ;$Namespaces......: Ebene übergeben [root Standart]
    ;$sClass..........: Class übergeben
    ;$ComputerName....: Computer Name Übegeben [localhost Standart]
    ;Return Value(s)..: Array[Property]
    ; @error.: -1 Ebene, Classe o. Computer Name = Leer
    ; -2 Kein Objekt
    ;
    ;Author(s)........: Kleiner (http://www.autoit.de)
    ;===================================================================================================================================#
    Func WMI_ClassQualifiers($Namespaces, $sClass, $ComputerName = @ComputerName)
    If $ComputerName And $Namespaces And $sClass Then
    Local $objClass = ObjGet('winmgmts:\\' & $ComputerName & _
    '\' & $Namespaces & ':' & $sClass)
    If Not IsObj($objClass) Then Return SetError(1, 0, -2)
    Local $strQualifier
    For $objClassQualifier In $objClass.Qualifiers_
    If IsArray($objClassQualifier.Value) Then
    $strQualifier &= '|' & $objClassQualifier.Name & ' = ' & _
    $objClassQualifier.Value(0)
    Else
    $strQualifier &= '|' & $objClassQualifier.Name & ' = ' & _
    $objClassQualifier.Value
    EndIf
    Next
    Return StringSplit(StringTrimLeft($strQualifier, 1), '|', 2)
    EndIf
    Return SetError(1, 0, -1)
    EndFunc ;==>WMI_ClassQualifiers

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

    ;===================================================================================================================================#
    ;Function Name....: WMI_ClassDescription($Namespaces, $sClass, $ComputerName = @ComputerName, $Flag = False)
    ;
    ;Description......: Classen Beschreibung auflisten
    ;$Namespaces......: Ebene übergeben [root Standart]
    ;$sClass..........: Class übergeben
    ;$ComputerName....: Computer Name Übegeben [localhost Standart]
    ;$Flag............: True vollständige anzeige - False teilanzeige
    ;Return Value(s)..: String
    ; @error.: -1 Ebene, Classe o. Computer Name = Leer
    ; -2 Kein Objekt
    ;
    ;Author(s)........: Kleiner (http://www.autoit.de)
    ;===================================================================================================================================#
    Func WMI_ClassDescription($Namespaces, $sClass, $ComputerName = @ComputerName, $Flag = False)
    If $ComputerName And $Namespaces And $sClass Then
    Local $objClass = ObjGet('winmgmts:\\' & $ComputerName & '\' & $Namespaces)
    If Not IsObj($objClass) Then Return SetError(1, 0, -2)
    If IsBool($Flag) And $Flag Or Not IsBool($Flag) And $Flag Then
    $Flag = 0x020000
    ElseIf Not IsBool($Flag) Or Not $Flag Then
    $Flag = 0
    EndIf
    Return $objClass.Get($sClass, $Flag).GetObjectText_
    EndIf
    Return SetError(1, 0, -1)
    EndFunc ;==>WMI_ClassDescription

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

    ;####### Hilfe Funktionen ##############################################################################

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

    Func ___ArrayUnique(Const ByRef $aArray)
    Local $sHold, $vDelim = '|'
    For $i = 0 To UBound($aArray) - 1
    If Not _StringCount($sHold, $aArray[$i]) Then $sHold &= $vDelim & $aArray[$i]
    Next
    If $sHold Then Return StringSplit(StringTrimLeft($sHold, StringLen($vDelim)), $vDelim, 2)
    Return SetError(2, 0, 0)
    EndFunc ;==>___ArrayUnique

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

    Func _StringCount($sText, $sFind, $sense = 1)
    StringReplace($sText, $sFind, '', 0, $sense)
    Return @extended
    EndFunc ;==>_StringCount

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

    Func IIF($V_Expr, $F_True = True, $F_False = False)
    If $V_Expr Then Return $F_True
    Return $F_False
    EndFunc ;==>IIF

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

    Func StringToDate($Date)
    Return (StringMid($Date, 5, 2) & '/' & StringMid($Date, 7, 2) & '/' & StringLeft($Date, 4) & ' ' & StringMid($Date, 9, 2) & ':' & StringMid($Date, 11, 2) & ':' & StringMid($Date, 13, 2))
    EndFunc ;==>StringToDate

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

    ;########################################################################################################

    [/autoit]

    WMI-Display

    Spoiler anzeigen
    [autoit]

    ; Beispiel .... Kleiner Explorer
    ;########################################
    ; 18.10.2011 12:00 Kleiner AutoIt.de
    ;########################################

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

    #include 'Array.au3'
    #include 'WMI.au3'

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

    Opt('GUIOnEventMode', 1)

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

    Global $Form
    Local $Comm[2], $Button[7]
    Local $Old = '', $SetComm0, $SetComm1, $aReturn
    $Form = GUICreate('WMI-Explorer', 650, 80, -1, -1)
    GUISetOnEvent(-3, 'E')
    $Comm[0] = GUICtrlCreateCombo('', 5, 10, 300, 25)
    GUICtrlSetTip(-1, 'Namespaces')
    $Comm[1] = GUICtrlCreateCombo('', 5, 50, 300, 25)
    GUICtrlSetTip(-1, 'Klassen')
    $Button[0] = GUICtrlCreateButton('Class List', 305, 50, 80, 25)
    GUICtrlSetOnEvent(-1, 'Menu')
    $Button[1] = GUICtrlCreateButton('WMI_Get', 400, 0, 80, 25)
    GUICtrlSetOnEvent(-1, 'Menu')
    $Button[2] = GUICtrlCreateButton('WMI_PropertyZWBS', 520, 00, 120, 25)
    GUICtrlSetOnEvent(-1, 'Menu')
    $Button[3] = GUICtrlCreateButton('WMI_ClassProperty', 520, 25, 120, 25)
    GUICtrlSetOnEvent(-1, 'Menu')
    $Button[4] = GUICtrlCreateButton('WMI_ClassMethods', 520, 50, 120, 25)
    GUICtrlSetOnEvent(-1, 'Menu')
    $Button[5] = GUICtrlCreateButton('WMI_ClassQualifiers', 400, 25, 120, 25)
    GUICtrlSetOnEvent(-1, 'Menu')
    $Button[6] = GUICtrlCreateButton('WMI_ClassDescription', 400, 50, 120, 25)
    GUICtrlSetOnEvent(-1, 'Menu')
    GUISetState()

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

    SplashTextOn('Bitte warten!', 'WMI Namespaces werden geladen Bitte warten ....!', 200, 100, -1, -1)
    $SetComm0 = WMI_EnumNamespaces()
    GUICtrlSetData($Comm[0], _ArrayToString($SetComm0))
    SplashOff()

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

    Func Menu()
    Switch @GUI_CtrlId
    Case $Button[0]
    If GUICtrlRead($Comm[0]) <> $Old Then
    GUICtrlSetData($Comm[1], '')
    SplashTextOn('Bitte warten!', 'WMI Classen werden geladen Bitte warten ....!', 200, 100, -1, -1)
    $Old = GUICtrlRead($Comm[0])
    $SetComm1 = WMI_EnumClass($Old)
    GUICtrlSetData($Comm[1], _ArrayToString($SetComm1))
    SplashOff()
    EndIf
    Case $Button[1]
    Menu_Execute(@GUI_CtrlId)
    Case $Button[2]
    Menu_Execute(@GUI_CtrlId)
    Case $Button[3]
    Menu_Execute(@GUI_CtrlId)
    Case $Button[4]
    Menu_Execute(@GUI_CtrlId)
    Case $Button[5]
    Menu_Execute(@GUI_CtrlId)
    Case $Button[6]
    If Not GUICtrlRead($Comm[0]) Or Not GUICtrlRead($Comm[1]) Then Return MsgBox(0, 0, 'Einer der Comboboxen ist leer!')
    MsgBox(0, 'Info', WMI_ClassDescription(GUICtrlRead($Comm[0]), GUICtrlRead($Comm[1])))
    EndSwitch
    EndFunc ;==>Menu

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

    Func Menu_Execute($iD)
    If Not GUICtrlRead($Comm[0]) Or Not GUICtrlRead($Comm[1]) Then Return MsgBox(0, 0, 'Einer der Comboboxen ist leer!')
    If GUICtrlRead($Comm[0]) <> $Old Then Return MsgBox(0, 0, 'Bitte neue Klasse wählen!')
    Local $Contro_Name = GUICtrlRead($iD, 1)
    SplashTextOn('Bitte warten!', $Contro_Name & ' wird ausgeführt Bitte warten ....!', 200, 100, -1, -1)
    $aReturn = Call($Contro_Name, GUICtrlRead($Comm[0]), GUICtrlRead($Comm[1]))
    SplashOff()
    If Not IsArray($aReturn) Then Return MsgBox(0, 0, ' Keine Info´s gefunden!')
    _ArrayDisplay($aReturn)
    EndFunc ;==>Menu_Execute

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

    Func E()
    Exit
    EndFunc ;==>E

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

    While 1 * Sleep(10)
    WEnd

    [/autoit]


    Erst mal !
    LG Kleiner

    Dateien

    WMI-Display.au3 3,06 kB – 444 Downloads
  • Oscar hat Geburtstag.

    • Kleiner
    • 18. Januar 2010 um 16:24

    Alles Alles gut auch von mir !


    LG Kleiner

  • Universeller Datei / Ordner Sucher [ _Get_DateiSucher_Netzwerk_Dos ]

    • Kleiner
    • 9. Januar 2010 um 08:00

    Guten Morgen!


    Also ich habe mich für _FileFindNet entschieden!
    Habe an der Funktion noch einwenig geschraubt habe da noch ein paar hundertstel rausgeholt !


    U-d: Post#1

    LG Kleiner

  • Variable an Batchdatei zurückgeben

    • Kleiner
    • 9. Januar 2010 um 07:33

    Guten Morgen!


    Ich wolt mein Fehler von gestern noch ersetzen!
    Der name der datei *bat bekommt man mit %0 also eine *bat die gestartet ist kann sich mit dem parameter %0 z.B wieder selber afrufen!
    Andy hat schon ein guten ansatz gemacht!
    Wie ich gerade den ersten post von dir gelesen habe ist mir einsi aufgefallen du schreibst das die *bat erstelt werdeb abhängig von der erstellten "*ini" dar würde mir das gelegen kommen mit autoit die *ini auszulese und zu starten z.B w????? [ Vriable ] in Autoit w??????.bat.

    Beispiel:

    [autoit]

    $Erweiterung = '.bat'

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

    $AuslesenStart = IniReadSection('Pfad','Section')
    For ......
    ;Eventuell prüfung fals nötig mit anderen parametern
    ; Selber starte oder alles an die Logon.cmd o. exe übergeben!
    Run...... $AuslesenStart[..] & $Erweiterung ; oder $AuslesenStart & '.bat' ???
    Run...... ' lobon.cmd o. exe ' & $AuslesenStart[..] & $Erweiterung ; oder $AuslesenStart & '.bat' ???
    ShellExecute...... $AuslesenStart[..] & $Erweiterung ; ???
    Next

    [/autoit]

    Wenn ich das richtig verstanden habe!


    LG Kleiner

  • Variable an Batchdatei zurückgeben

    • Kleiner
    • 8. Januar 2010 um 09:23

    Guten Morgen!


    Meine frage rufst du aus der exe die *.bat auf?

    Ansonsten gibt es in batch verarbeitung den parameter %2 für den namen der laufenden *.bat %1 für den übergebenen Befehl!

    LG Kleiner

  • While-Schleife verlassen geht nicht!

    • Kleiner
    • 8. Januar 2010 um 07:42

    Guten Morgen!


    Zitat aus der Hilfe

    Beendet eine While-, Do- oder For-Schleife.
    ExitLoop [level]
    level [optional] Die Ebene der Schleife, die beendet werden soll (Standard ist 1, also die aktuelle Schleife).

    [autoit]

    $sum = 0
    While 1 ;Endlosschleife bis ExitLoop aufgerufen wird
    $ans = InputBox("Summe=" & $sum, _
    " Bitte eine positive Zahl eingeben. (Durch die Eingabe einer negativen Zahl wird die InputBox beendet)")
    If $ans < 0 Then ExitLoop
    $sum = $sum + $ans
    WEnd
    MsgBox(0,"Die Summe beträgt", $sum)

    [/autoit]


    LG Kleiner

  • Universeller Datei / Ordner Sucher [ _Get_DateiSucher_Netzwerk_Dos ]

    • Kleiner
    • 7. Januar 2010 um 08:46

    Hallo cartan12 & Pinguin94 !

    Danke und schön das es euch gefällt!
    Und auf eure bemerkung der bezeichnugs wegen habt hir recht als ich angefangen habe die Func zu schreiben habe ich sie so genant.
    Die Idee von Pinguin94 hört sich ganz gut an werde mich da heute Abend darum kümmern! :)

    Vieleict hat einer von euch ja noch ein paar andere bezeichnugen für die Func bis heute Abend ! :D
    Bitte Posten!!!!! :thumbup:


    LG Kleiner

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™