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

Beiträge von BugFix

  • Inputfelder $GUI_Enable durch Checkbox $GUI_Checked und vice versa

    • BugFix
    • 16. Juli 2008 um 15:44

    Für Bit-Funktionen: s. mein Bit-Tut (Signatur) :D
    Bei dir flimmert es, weil du in jedem Durchlauf Enable setzt und dann erst prüfst ob die Checkbox markiert ist.

    Kurse geben... :rolleyes: Gute Idee - als Entlohnung verlange ich nette, blonde, weibliche Gesellschaft :rofl:

  • Inputfelder $GUI_Enable durch Checkbox $GUI_Checked und vice versa

    • BugFix
    • 16. Juli 2008 um 15:35

    :D Ja klar, der Status muß natürlich ausgelesen werden.

    [autoit]

    For $i = 0 To 10
    If $GUI_Msg = $agCB[$i] Then
    If BitAND(GUICtrlRead($agCB[$i]), $GUI_CHECKED) Then
    GUICtrlSetState($agIn[$i], $GUI_Enable)
    GUICtrlSetState($agIn2[$i], $GUI_Enable)
    Else
    GUICtrlSetState($agIn[$i], $GUI_Enable)
    GUICtrlSetState($agIn2[$i], $GUI_Enable)
    EndIf
    EndIf
    Next

    [/autoit]
  • Problem etwas an ein Fenster zu Senden

    • BugFix
    • 16. Juli 2008 um 15:26

    Probier mal so:

    [autoit]

    Opt('WinTitleMatchMode', 2)
    ControlClick('Microsoft Internet Explorer', '', '[CLASS:Button; INSTANCE:1]')

    [/autoit]
  • Netview in Autoit?

    • BugFix
    • 16. Juli 2008 um 15:20

    Boa, Todsünde! ;)
    Du hast GUIGetMsg UND GUIOnEventMode in einem Skript verwendet.
    Du mußt dich schon entscheiden, was du möchtest. :D

  • Inputfelder $GUI_Enable durch Checkbox $GUI_Checked und vice versa

    • BugFix
    • 16. Juli 2008 um 14:41
    Zitat von Towacom

    dachte da gibts auch so schon ne Möglichkeit was zu sagen.


    Es war nicht ersichtlich, gegen welchen Wert dein Case prüft - jetzt weiß ich's: $GUI_Msg :D
    Einfach folgende Schleife außerhalb des Switch-Case-Statements einfügen:

    [autoit]

    For $i = 0 To 10
    If $GUI_Msg = $agCB[$i] Then
    GUICtrlSetState($agIn[$i], $GUI_Enable)
    GUICtrlSetState($agIn2[$i], $GUI_Enable)
    EndIf
    Next

    [/autoit]
  • Variablendeklaration automatisiert - Opt("MustDeclareVars", 1)

    • BugFix
    • 16. Juli 2008 um 14:31

    Hi,
    diese Version ist speziell dafür, um während des Skriptens in SciTE mal schnell per HotKey die Variablendeklaration zu überprüfen/auszuführen.
    Kopiert die Datei SetVarsDeclaredCurrentFile.au3 an einen Ort eurer Wahl (ich hab dafür extra einen Ordner in SciTE angelegt).
    Nun in der SciTEUser.properties(in SciTE: <Optionen> <Benutzer-Einstellungen öffnen>) einen Eintrag erstellen.
    Der Eintrag muß unbedingt vor diesem Block erfolgen:

    Code
    #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
    # START: DO NOT CHANGE ANYTHING AFTER THIS LINE     #-#-#-#-#
    # Created by SciTEConfig
    #------------------------------------------------------------


    Wenn ihr noch keinen Eintrag dort habt, beginnt mit der Nummer 36 statt wie hier 42. Ansonsten einfach fortlaufend nummerieren.

    Code
    # 42 DeclareVars
    command.42.*.au3="$(autoit3dir)\AutoIt3.exe" "$(SciteDefaultHome)\OtherTools\SetVarsDeclaredCurrentFile.au3" "$(FilePath)" "Prod"
    command.name.42.*.au3=Declare Vars
    command.save.before.42.*.au3=1
    command.is.filter.42.*.au3=1
    command.shortcut.42.*.au3=Ctrl+Shift+V


    In der ersten command-Zeile muß nach dem AutoIt-Pfad der Pfad der Datei SetVarsDeclaredCurrentFile.au3 folgen.
    Der erste Parameter "$(FilePath)" übergibt den Dateipfad der au3-Datei, von der aus in SciTE der Aufruf erfolgt.
    Der zweite Parameter "Prod" ist nicht erforderlich, wenn die Prod benutzt wird. Verwendet euer Skript aber die Beta, so muß der Parameter "Beta" übergeben werden!
    Den ShortCut könnt ihr natürlich frei wählen (solang er noch nicht belegt ist ;) ).

    Nun nur in einem beliebigen au3-Skript per Shortcut aufrufen und die Variablendeklaration erfolgt. :rolleyes:

    Spoiler anzeigen
    [autoit]

    ; Version 3.2.12.0
    #include<ProgressConstants.au3>
    #include<StaticConstants.au3>
    #include<GUIConstantsEx.au3>
    #include<WindowsConstants.au3>
    #include<File.au3>
    Opt("GUIOnEventMode", 1)
    Opt("MustDeclareVars", 1)

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

    Global $aLang[4][2] = [ _
    ['Fehler', 'Error'], _
    ['SciTE nicht aktiv!', 'SciTE not active!'], _
    [' << Variablendeklaration erfolgreich beendet. >>', ' << Variables successful declared. >>'], _
    [' << Alle Variablen bereits deklariert! >>', ' << All variables already declared! >>']], $iLang = 0
    If Not StringInStr("0407,0807,0c07,1007,1407", @OSLang) Then $iLang = 1

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

    If Not ProcessExists('SciTE.exe') Then Exit MsgBox(262192, $aLang[0][$iLang], $aLang[1][$iLang])
    If $CmdLine[0] Then
    Global $File2Scan = $CmdLine[1]
    If $CmdLine[0] > 1 Then
    If $CmdLine[2] = 'Beta' Then
    Global $BetaUse = True
    Else
    Global $BetaUse = False
    EndIf
    Else
    Global $BetaUse = False
    EndIf
    Else
    Exit
    EndIf
    Global $GUI, $progress, $lbl, $prog_val = 0, $step

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

    $GUI = GUICreate($File2Scan, 640, 100, -1, 120)
    $progress = GUICtrlCreateProgress(10, 15, 620, 20, $PBS_SMOOTH)
    $lbl = GUICtrlCreateLabel('', 290, 50, 60, 17, $SS_CENTER)
    GUISetOnEvent($GUI_EVENT_CLOSE, "GUIClose")
    GUISetState(@SW_SHOW)

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

    If _SetVarsDeclared($File2Scan, $BetaUse) = 0 Then
    WinSetTitle($GUI, '', $aLang[2][$iLang])
    Else
    WinSetTitle($GUI, '', $aLang[3][$iLang])
    EndIf

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

    While 1
    Sleep(100)
    WEnd

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

    Func GUIClose()
    Exit
    EndFunc

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

    Func _SetVarsDeclared($FILE, $BETA=False)
    Local $oVars = ObjCreate('System.Collections.ArrayList')
    Local $oFuncVars = ObjCreate('System.Collections.ArrayList')
    Local $oConst = ObjCreate('System.Collections.ArrayList')
    Local $oDeclared = ObjCreate('System.Collections.ArrayList')
    Local $skip = False, $PathInclude, $1stChar, $inFunc = False, $aFile, $aMatch, $var, $strKey, $lastInclude = 1
    Local $str0 = 'Opt("MustDeclareVars", 1)', $str1 = 'Global ', $sLen, $len = 130, $tmp, $keys, $lastOpt = 1, $declare = 0
    If $BETA Then
    $PathInclude = RegRead('HKEY_LOCAL_MACHINE\SOFTWARE\AutoIt v3\AutoIt', 'betaInstallDir') & '\Include\'
    Else
    $PathInclude = RegRead('HKEY_LOCAL_MACHINE\SOFTWARE\AutoIt v3\AutoIt', 'InstallDir') & '\Include\'
    EndIf
    Local $aConst_au3 = _FileListToArray($PathInclude, '*.au3', 1)
    $step = 33/UBound($aConst_au3)
    For $i = 1 To UBound($aConst_au3) -1
    $prog_val += $step
    GUICtrlSetData($progress, Int($prog_val))
    GUICtrlSetData($lbl, StringFormat('%3.2f', $prog_val) & '%')
    If Not StringInStr($aConst_au3[$i], 'constants') Then ContinueLoop
    _FileReadToArray($PathInclude & $aConst_au3[$i], $aFile)
    For $k = 1 To UBound($aFile) -1
    $aMatch = StringRegExp($aFile[$k], '\$[\d\w]+', 3)
    If Not IsArray($aMatch) Then ContinueLoop
    For $l = 0 To UBound($aMatch) -1
    If Not $oConst.Contains($aMatch[$l]) Then $oConst.Add($aMatch[$l])
    Next
    Next
    Next
    GUICtrlSetData($progress, 33)
    GUICtrlSetData($lbl, '33.00%')
    _FileReadToArray($FILE, $aFile)
    $tmp = FileRead($FILE)
    Local $pos_incl, $pos_opt, $before_str
    If (StringInStr($tmp, '#include')) Or (StringInStr($tmp, 'Opt')) Then
    For $i = 1 To UBound($aFile) -1
    $1stChar = StringLeft(StringStripWS($aFile[$i],1), 1)
    If ($1stChar <> ';') And (StringInStr($aFile[$i], '#cs') Or StringInStr($aFile[$i], '#comments-start')) Then $skip = True
    If ($1stChar <> ';') And (StringInStr($aFile[$i], '#ce') Or StringInStr($aFile[$i], '#comments-end')) Then $skip = False
    If $skip Then ContinueLoop
    If StringRegExp($aFile[$i], "(?i)#include") Then
    $pos_incl = StringInStr($aFile[$i], '#include')
    If $pos_incl > 1 Then
    $before_str = StringLeft($aFile[$i], $pos_incl-1) ; maybe quoted - don't use then
    If StringInStr($before_str, '"') Or StringInStr($before_str, "'") Then ContinueLoop
    EndIf
    $lastInclude = $i
    ElseIf StringRegExp($aFile[$i], "(?i)opt") Then
    $pos_opt = StringInStr($aFile[$i], 'opt')
    If $pos_opt > 1 Then
    $before_str = StringLeft($aFile[$i], $pos_opt-1) ; maybe quoted - don't use then
    If StringInStr($before_str, '"') Or StringInStr($before_str, "'") Then ContinueLoop
    EndIf
    $lastOpt = $i
    EndIf
    Next
    If $lastOpt > $lastInclude Then $lastInclude = $lastOpt
    EndIf
    $step = 67/UBound($aFile)
    For $i = 1 To UBound($aFile) -1
    $prog_val += $step
    GUICtrlSetData($progress, Int($prog_val))
    GUICtrlSetData($lbl, StringFormat('%3.2f', $prog_val) & '%')
    $1stChar = StringLeft(StringStripWS($aFile[$i],1), 1)
    If $1stChar = ';' Then ContinueLoop
    If StringInStr($aFile[$i], 'Dim') Or StringInStr($aFile[$i], 'Global') Then
    $aMatch = StringRegExp($aFile[$i], '\$[\d\w]+', 3)
    If Not IsArray($aMatch) Then ContinueLoop
    For $k = 0 To UBound($aMatch) -1
    If Not $oDeclared.Contains($aMatch[$k]) Then $oDeclared.Add($aMatch[$k])
    Next
    ContinueLoop
    EndIf
    If StringInStr($aFile[$i], '#cs') Or StringInStr($aFile[$i], '#comments-start') Then $skip = True
    If StringInStr($aFile[$i], '#ce') Or StringInStr($aFile[$i], '#comments-end') Then $skip = False
    If $skip Or ($1stChar = '#') Then ContinueLoop
    If StringLeft(StringStripWS($aFile[$i],1),4) = 'Func' Then
    $inFunc = True
    If $oFuncVars.Count > 0 Then $oFuncVars.Clear
    $aMatch = StringRegExp($aFile[$i], '\$[\d\w]+', 3)
    If Not IsArray($aMatch) Then ContinueLoop
    For $k = 0 To UBound($aMatch) -1
    If Not $oFuncVars.Contains($aMatch[$k]) Then $oFuncVars.Add($aMatch[$k])
    Next
    ContinueLoop
    EndIf
    If $inFunc And (StringLeft(StringStripWS($aFile[$i],1),7) = 'EndFunc') Then $inFunc = False
    $aMatch = StringRegExp($aFile[$i], '\$[\d\w]+', 3)
    If Not IsArray($aMatch) Then ContinueLoop
    If $inFunc And StringInStr($aFile[$i], 'Local') Then
    For $k = 0 To UBound($aMatch) -1
    $oFuncVars.Add($aMatch[$k])
    Next
    ContinueLoop
    EndIf
    For $k = 0 To UBound($aMatch) -1
    If (Not $oVars.Contains($aMatch[$k])) And _
    (Not $oFuncVars.Contains($aMatch[$k])) Then $oVars.Add($aMatch[$k])
    Next
    Next
    GUICtrlSetData($progress, 98)
    GUICtrlSetData($lbl, '98.00%')
    For $strKey In $oConst
    If $oVars.Contains($strKey) Then $oVars.Remove($strKey)
    Next
    For $strKey In $oDeclared
    If $oVars.Contains($strKey) Then $oVars.Remove($strKey)
    Next
    $oVars.Sort
    If $oVars.Count > 0 Then
    For $strKey In $oVars
    $sLen = StringLen($str1 & $strKey & ', ')
    If $sLen < $len Then
    $str1 &= $strKey & ', '
    Else
    $str1 = StringTrimRight($str1, 2) & @LF & 'Global '
    $len += 130
    EndIf
    Next
    If StringRight($str1, 2) = ', ' Then $str1 = StringTrimRight($str1, 2)
    If StringRight($str1, 7) = 'Global ' Then $str1 = StringTrimRight($str1, 7)
    If $declare = 0 Then
    _FileWriteToLine($FILE, $lastInclude +1, $str0 & @CRLF & $str1)
    Else
    _FileWriteToLine($FILE, $declare, $str0, 1)
    _FileWriteToLine($FILE, $lastInclude +1, $str1)
    EndIf
    GUICtrlSetData($progress, 100)
    GUICtrlSetData($lbl, '100.00%')
    Return 0
    Else
    GUICtrlSetData($progress, 100)
    GUICtrlSetData($lbl, '100.00%')
    Return -1
    EndIf
    EndFunc ;==> _SetVarsDeclared

    [/autoit]

    Edit 13.09.08:
    Hatte einen Schleifenfehler und dadurch nicht alle Konstanten erfaßt - aber nun korrigiert. ;)

  • Inputfelder $GUI_Enable durch Checkbox $GUI_Checked und vice versa

    • BugFix
    • 16. Juli 2008 um 09:45

    Hi,
    das kannst du in einer Schleife durchgehen. Aber zeig mal etwas mehr vom Code, der Schnipsel ist nicht sehr aussagefähig. Wie werden die CB erstellt, soll mit einer CB alles de/aktiviert werden können oder alle wechselseitig?

  • Keylogger

    • BugFix
    • 16. Juli 2008 um 09:37
    Zitat von Frayzer

    hat es einen nachteil wenn ich es mit ansi statt unicode?
    bzw wenn ich nicht mit upx packe.


    ANSI oder Unicode ist entscheidend dafür, auf welcher Plattform es lauffähig sein soll. Für Win9x brauchst du ANSI. Für höhere Versionen kannst du mit Unicode arbeiten.
    Wenn du UPX nicht verwendest, ist halt die EXE größer. ;)

  • POST/GET, unterschied _StringSplit und StringSplit

    • BugFix
    • 16. Juli 2008 um 09:30
    Zitat von LilProgger208

    wo ist der unterschied zwischen _StringSplit und StringSplit


    Der Unterschied ist ein kleiner, aber wesentlicher.
    StringSplit() gibt ein Array zurück und in Array[0] ist die Anzahl der gesplitteten Elemente. Ab Array[1] sind die eigentlichen Splits. Das ist nicht sehr praktisch, da man das Array häufig nicht direkt weiterverwenden kann, wegen des Zählers an Pos[0].
    _StringSplit() liefert ein Array ohne den Zähler, ansonsten identisch. Die Werte sind also ab Pos[0] im Array.

    Einen Zähler an Position [0] zu führen, hat sich wohl eingeschlichen, weil ein deklariertes Array mindestens 1 Element haben muß und dieses der Einfachheit halber dann zum Führen eines Zählers verwendet wurde. Neue Elemente wurden dann ohne vorherige Abfrage mit ReDim erweitert.
    Sinn macht es nicht, da die Elementzahl ja über UBound verfügbar ist.

  • Mehere GUI's ?

    • BugFix
    • 15. Juli 2008 um 21:21

    Und falls du nur mit GUIGetMsg arbeitest:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    $gui1 = GUICreate('GUI 1')
    $btn1 = GUICtrlCreateButton('Zeige GUI 2', 10, 20, 100, 20)

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

    $gui2 = GUICreate('GUI 2')
    $btn2 = GUICtrlCreateButton('Button 2', 10, 20, 100, 20)

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

    GUISetState(@SW_SHOW, $gui1)

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

    While 1
    $msg = GUIGetMsg(1)
    Switch $msg[1] ; Window Handle
    Case $gui1
    Switch $msg[0] ; Event
    Case $GUI_EVENT_CLOSE
    Exit
    Case $btn1
    GUISetState(@SW_HIDE, $gui1)
    GUISetState(@SW_SHOW, $gui2)
    EndSwitch
    Case $gui2
    Switch $msg[0]
    Case $GUI_EVENT_CLOSE
    GUISetState(@SW_SHOW, $gui1)
    GUISetState(@SW_HIDE, $gui2)
    Case $btn2
    MsgBox(0, '', 'Button 2 geklickt')
    EndSwitch
    EndSwitch
    WEnd

    [/autoit]
  • Koordinatenproblem

    • BugFix
    • 14. Juli 2008 um 21:43

    Wir können über IRC quatschen oder auch Gobby - gerade getestet, coole Sache.
    Aber freut mich, dass es dir geholfen hat.

  • erweiterte Zwischenablage - Ideen

    • BugFix
    • 14. Juli 2008 um 21:40
    Zitat von sc4ry

    schön wäre, wenn in zeile 1 immer der aktuellste eintrag vorhanden ist, die anderen quasi immer eine zeile runterrutschen.

    Dazu kann ich dir mal Recent File List anbieten. Brauchst du nur an deine Einträge anpassen.
    Bei den anderen Sachen - mal schauen die Tage ;)

  • Koordinatenproblem

    • BugFix
    • 14. Juli 2008 um 20:56

    Ja, dadran gehts natürlich auch.
    $k entspricht dem Wert für die Höhe.

    [autoit]

    $match = PixelSearch($i, $k-30, $i+10, $k+10,$color)

    [/autoit]
  • Gobby - Dateien gemeinsam bearbeiten

    • BugFix
    • 14. Juli 2008 um 20:46

    Ich kanns gar nicht öffnen: "Unerwartetes Token $"

  • Koordinatenproblem

    • BugFix
    • 14. Juli 2008 um 20:43

    Spiele in alle Richtungen.

  • µit - Juli

    • BugFix
    • 14. Juli 2008 um 20:09

    Auweia, ich bin wieder schuld! :rofl:

  • Koordinatenproblem

    • BugFix
    • 14. Juli 2008 um 20:02

    Dann suche halt weiter oben :D
    Verändere den Wert für $y_start = ... , mach ihn etwas kleiner (so 10 - 20 Pixel)

  • erweiterte Zwischenablage - Ideen

    • BugFix
    • 14. Juli 2008 um 18:08
    Zitat von sc4ry

    der text in spalte 1 kopiert wird


    Kopieren oder Verschieben?

    Zitat von sc4ry

    standardmäßig soll eine zeile markiert sein und beim scrollen dann jeweils die markierung hoch oder runterlaufen.


    Das widerspricht der obigen Funktion. Mit dem Wechsel der Markierung würde die Aktion zum Verschieben/Kopieren in Spalte 1 veranlaßt.

  • Koordinatenproblem

    • BugFix
    • 14. Juli 2008 um 17:57
    Zitat von qui xux

    das grün liegt außerhalb des symbols


    Probiere aus, in welchem Abstand es liegt und ziehe diesen Abstand vom $match ab (also z.B. $match[0] -30 ). Der Y-Wert dürfte passen.

  • Registry-Funktionen per Objekt

    • BugFix
    • 14. Juli 2008 um 17:53

    Hi,
    3 nützliche "Helferlein":

    _GetRegSubKeys($HKEY)
    Ermittelt die Unterschlüssel für den übergebenen Schlüssel

    _GetRegRights($HKEY)
    Ermittelt die Rechte des Abfragenden für den übergebenen Schlüssel

    _GetRegValues($HKEY)
    Ermittelt alle Namen, Typen und Werte in einem gegebenen Schlüssel

    Spoiler anzeigen
    [autoit]

    #include<Array.au3>
    $ar = _GetRegSubKeys('HKLM\Software')
    _ArrayDisplay($ar, "SubKeys von Software")
    MsgBox(0, 'Rechte für Software', _GetRegRights('HKLM\Software'))
    $ar = _GetRegValues('HKEY_LOCAL_MACHINE\SOFTWARE\AutoIt v3\Autoit')
    If IsArray($ar) Then
    _ArrayDisplay($ar)
    Else
    MsgBox(0, '', 'Fehler')
    EndIf
    ;========================================================================================
    ; Function Name: _GetRegSubKeys($HKEY)
    ; Description: Ermittelt die Unterschlüssel für den übergebenen Schlüssel
    ; Parameter(s): $HKEY der Registryschlüssel
    ; Return Value(s): Erfolg Array mit den Unterschlüsseln
    ; Fehler Leerstring (keine Unterschlüssel vorhanden oder Schlüssel existiert nicht)
    ; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
    ;========================================================================================
    Func _GetRegSubKeys($HKEY)
    If StringInStr($HKEY, '\') Then
    If StringRight($HKEY, 1) = '\' Then
    $HKEY = StringTrimRight($HKEY, 1)
    Local $strKeyPath = ''
    Else
    Local $strKeyPath = StringRight($HKEY, StringLen($HKEY)-StringInStr($HKEY, '\') )
    $HKEY = StringLeft($HKEY, StringInStr($HKEY, '\')-1)
    EndIf
    Else
    Local $strKeyPath = ''
    EndIf
    Select
    Case $HKEY = "HKEY_LOCAL_MACHINE" Or $HKEY = "HKLM"
    $HKEY = 0x80000002
    Case $HKEY = "HKEY_USERS" Or $HKEY = "HKU"
    $HKEY = 0x80000003
    Case $HKEY = "HKEY_CURRENT_USER" Or $HKEY = "HKCU"
    $HKEY = 0x80000001
    Case $HKEY = "HKEY_CLASSES_ROOT" Or $HKEY = "HKCR"
    $HKEY = 0x80000000
    Case $HKEY = "HKEY_CURRENT_CONFIG" Or $HKEY = "HKCC"
    $HKEY = 0x80000005
    EndSelect
    Local $arrSubKeys = '', $subkey
    Local $oReg = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
    $oReg.EnumKey ($HKEY, $strKeyPath, $arrSubKeys)
    Return $arrSubKeys
    EndFunc ;==>_GetRegSubKeys

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

    ;========================================================================================
    ; Function Name: _GetRegRights($HKEY)
    ; Description: Ermittelt die Rechte des Abfragenden für den übergebenen Schlüssel
    ; Parameter(s): $HKEY der zu prüfende Registryschlüssel
    ; Return Value(s): String mit Auflistung der Rechte:
    ; Q Key Query Value
    ; S Key Set Value
    ; C Key Create Sub Key
    ; D Delete
    ; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
    ;========================================================================================
    Func _GetRegRights($HKEY)
    Local $bHasAccessRight, $sRights = ''
    If StringInStr($HKEY, '\') Then
    If StringRight($HKEY, 1) = '\' Then
    $HKEY = StringTrimRight($HKEY, 1)
    Local $strKeyPath = ''
    Else
    Local $strKeyPath = StringRight($HKEY, StringLen($HKEY)-StringInStr($HKEY, '\') )
    $HKEY = StringLeft($HKEY, StringInStr($HKEY, '\')-1)
    EndIf
    Else
    Local $strKeyPath = ''
    EndIf
    Select
    Case $HKEY = "HKEY_LOCAL_MACHINE" Or $HKEY = "HKLM"
    $HKEY = 0x80000002
    Case $HKEY = "HKEY_USERS" Or $HKEY = "HKU"
    $HKEY = 0x80000003
    Case $HKEY = "HKEY_CURRENT_USER" Or $HKEY = "HKCU"
    $HKEY = 0x80000001
    Case $HKEY = "HKEY_CLASSES_ROOT" Or $HKEY = "HKCR"
    $HKEY = 0x80000000
    Case $HKEY = "HKEY_CURRENT_CONFIG" Or $HKEY = "HKCC"
    $HKEY = 0x80000005
    EndSelect
    Local $oReg = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
    $oReg.CheckAccess($HKEY, $strKeyPath, 0x0001, $bHasAccessRight)
    If $bHasAccessRight = True Then $sRights &= 'Q'
    $oReg.CheckAccess($HKEY, $strKeyPath, 0x0002, $bHasAccessRight)
    If $bHasAccessRight = True Then $sRights &= 'S'
    $oReg.CheckAccess($HKEY, $strKeyPath, 0x0004, $bHasAccessRight)
    If $bHasAccessRight = True Then $sRights &= 'C'
    $oReg.CheckAccess($HKEY, $strKeyPath, 0x00010000, $bHasAccessRight)
    If $bHasAccessRight = True Then $sRights &= 'D'
    Return $sRights
    EndFunc ;==>_GetRegRights

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

    ;========================================================================================
    ; Function Name: _GetRegValues($HKEY)
    ; Description: Ermittelt alle Namen, Typen und Werte in einem gegebenen Schlüssel
    ; Parameter(s): $HKEY der Registryschlüssel
    ; Return Value(s): Erfolg Array[i][0] = Name
    ; Array[i][1] = Typ
    ; Array[i][2] = Wert
    ; Fehler Leerstring (Schlüssel existiert nicht oder ist ohne Einträge)
    ; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
    ;========================================================================================
    Func _GetRegValues($HKEY)
    Local $oMyError = ObjEvent("AutoIt.Error","MyErrFunc")
    If StringInStr($HKEY, '\') Then
    If StringRight($HKEY, 1) = '\' Then
    $HKEY = StringTrimRight($HKEY, 1)
    Local $strKeyPath = ''
    Else
    Local $strKeyPath = StringRight($HKEY, StringLen($HKEY)-StringInStr($HKEY, '\') )
    $HKEY = StringLeft($HKEY, StringInStr($HKEY, '\')-1)
    EndIf
    Else
    Local $strKeyPath = ''
    EndIf
    Select
    Case $HKEY = "HKEY_LOCAL_MACHINE" Or $HKEY = "HKLM"
    $HKEY = 0x80000002
    Case $HKEY = "HKEY_USERS" Or $HKEY = "HKU"
    $HKEY = 0x80000003
    Case $HKEY = "HKEY_CURRENT_USER" Or $HKEY = "HKCU"
    $HKEY = 0x80000001
    Case $HKEY = "HKEY_CLASSES_ROOT" Or $HKEY = "HKCR"
    $HKEY = 0x80000000
    Case $HKEY = "HKEY_CURRENT_CONFIG" Or $HKEY = "HKCC"
    $HKEY = 0x80000005
    EndSelect
    Local $oReg = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
    Local $arrValueNames, $arrValueTypes, $strValue
    $oReg.EnumValues($HKEY, $strKeyPath, $arrValueNames, $arrValueTypes)
    $OEvent = ObjEvent($oReg, "EnumValues")
    If Not IsArray($arrValueNames) Then Return ''
    Local $arOut[UBound($arrValueNames)][3]
    For $i = 0 To UBound($arrValueNames) -1
    $arOut[$i][0] = $arrValueNames[$i]
    Switch $arrValueTypes[$i]
    Case 1
    $arOut[$i][1] = 'REG_SZ'
    $oReg.GetStringValue($HKEY, $strKeyPath, $arrValueNames[$i], $strValue)
    Case 2
    $arOut[$i][1] = 'REG_EXPAND_SZ'
    $oReg.GetExpandedStringValue($HKEY, $strKeyPath, $arrValueNames[$i], $strValue)
    Case 3
    $arOut[$i][1] = 'REG_BINARY'
    $oReg.GetBinaryValue($HKEY, $strKeyPath, $arrValueNames[$i], $strValue)
    Case 4
    $arOut[$i][1] = 'REG_DWORD'
    $oReg.GetStringValue($HKEY, $strKeyPath, $arrValueNames[$i], $strValue)
    Case 7
    $arOut[$i][1] = 'REG_MULTI_SZ'
    $oReg.GetMultiStringValue($HKEY, $strKeyPath, $arrValueNames[$i], $strValue)
    EndSwitch
    $arOut[$i][2] = $strValue
    Next
    Return $arOut
    EndFunc ;==>_GetRegValues
    Func MyErrFunc()
    Return
    Endfunc

    [/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™