ok dachte ich mir schon. Passt, hab sowieso kein bock mir den kram mit Process hooks anzuschauen. Danke
Beiträge von AutoITBengel
-
-
Hi,
leider kenne ich nicht die passenden Stichworte für dieses Vorhaben, aber was ich suche, ist ähnlich wie das, was manche Monitoring Tools machen, die die Temperatur im oben Rand des Desktops anzeigen, während man in einem Spiel ist. Soweit ich weiß, ist das nicht so einfach oder?Also ich möchte einen Text auf dem "Desktop" zeichnen, den man auch sehen kann, wenn ich in LoL drin bin, möglich?
-
Beides wirklich super Antworten. Danke jungs
-
Hi,
ich arbeite häufiger mit Objekten und dabei ist mir immer das selbe Problem aufgefallen: Welche Methoden gibt es? Beispielsweise bei der System.Collections.ArrayList... Ist ja nichts neues, dass nur ein Bruchteil der Methoden funktionieren/implementiert wurden, wieso auch immer. Wenn man sich die offizielle msdn doku dazu anschaut wird schnell kla, das viele nützliche Methoden fehlen. Kann man eine Liste der verfügbaren Methoden ausgeben?Wäre schön, wenn sowas mal funktionieren würde:
-
Hey,
ich bastel an einer "Jump To" Registry Schlüssel Funktion...ich leg einen Schlüssel fest und regedit wird mit angegebenen Schlüssel geöffnet. Einziges Problem: ich starte aktuell die regedit.exe im skript, was auch funktioniert, aber jeder Versuch auf die TreeView items zuzugreifen, wenn regedit bereits geöffnet ist schläft fehl.C
Alles anzeigen#include <GUIConstants.au3> #include <GuiTreeView.au3> #include <TreeViewConstants.au3> #include <SendMessage.au3> #include <WinAPI.au3> Global $h_item ShellExecute("regedit.exe") ;~ Local $pid = ProcessExists("regedit.exe") ;~ If $pid Then ;~ $h_tree = WinHandFromPID($pid, "[CLASS:RegEdit_RegEdit]") ;~ WinActivate("[CLASS:RegEdit_RegEdit]", "") ;~ EndIf WinWaitActive("[CLASS:RegEdit_RegEdit]", "") ;~ WinActivate("[CLASS:RegEdit_RegEdit]", "") ;~ WinSetState("[CLASS:RegEdit_RegEdit]", "", @SW_SHOW) ; activate ;~ WinSetState("[CLASS:RegEdit_RegEdit]", "", @SW_RESTORE) ; activate ;~ WinSetState("[CLASS:RegEdit_RegEdit]", "", @SW_RESTORE) ; activate $h_tree = WinGetHandle("[CLASS:RegEdit_RegEdit]", "") ;~ $ret = _WinAPI_ShowWindow($h_tree, @SW_RESTORE) $ctrl = ControlGetHandle($h_tree, "", "[CLASS:SysTreeView32]") ConsoleWrite("$h_tree: " & $h_tree & @CRLF) ConsoleWrite("$ctrl: " & $ctrl & @CRLF) $show = GUICtrlCreateButton("Show", 70, 180, 70, 20) Show() ;~ While 1 ;~ Sleep(200) ;~ WEnd Func Show() $result = "" _SendMessage($ctrl, $WM_SETFOCUS, 0, 0) If @error Then ConsoleWrite("error" & @CRLF) $h_item = _SendMessage($ctrl, $TVM_GETNEXTITEM, $TVGN_ROOT, 0) $split = StringSplit("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders", "\") For $i=1 To $split[0] ConsoleWrite("item bevor findkey: " & $h_item & @CRLF) $h_item = FindKey($h_item, $split[$i]) If $h_item = 0 Then Return _SendMessage($ctrl, $TVM_SELECTITEM, 0x0009, $h_item) ; expand tree _GUICtrlTreeView_Expand($ctrl, $h_item) Next MsgBox(0, "dsfsdf", "sdfsf") Exit EndFunc Func FindKey($hItemParent, $sKey) $h_item = _SendMessage($ctrl, $TVM_GETNEXTITEM, $TVGN_CHILD, $hItemParent) ConsoleWrite("child : " & $h_item & " key: " & $sKey & " parent: " & $hItemParent & " parent text: " & _GUICtrlTreeView_GetText($ctrl, $hItemParent) & @CRLF) While $h_item <> 0 Local $sItemText = _GUICtrlTreeView_GetText($ctrl, $h_item) ConsoleWrite("text : " & $sItemText & @CRLF) If $sItemText = $sKey Then Return $h_item $h_item = _SendMessage($ctrl, $TVM_GETNEXTITEM, $TVGN_NEXT, $h_item) ConsoleWrite("next : " & $h_item & @CRLF) WEnd ConsoleWrite("not found" & @CRLF) Return 0 EndFunc
-
Danke Sir, kann man sicherlich mal gebrauchen
-
Grüß dich BugFix
Ich dachte mir schon, dass das mit Klammern nicht möglich ist. Werde mit deiner Funktion weiter arbeiten.Danke
-
Hi,
ich hätte gerne folgende Struktur, bin aber scheinbar nicht clever genug dafür:CodeLocal $aArray[100][4] = [ _ ["HKLM64\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU", "NoAutoUpdate", 1, 0], _ ["HKLM64\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings", "UxOption", 1, 0], _ [["HKLM\SYSTEM\ControlSet001\Services\PcaSvc", "HKLM\SYSTEM\CurrentControlSet\Services\PcaSvc"], ["Start", "Start"], [4, 4], [3, 3]], _ ["HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System", "VerboseStatus", 1, 0] _ ]
Zeile 4 ist ausschlaggebend. Jede Zeile stellt eine "Option" dar und manche Optionen benötige 2 Tweaks, wie z.B. Zeile 4. So gesehen brauche ich ein Array in einem Array, aber statt diese Arrays zu definieren, möchte ich das direkt im $aArray definieren. Die Struktur müsste also genau so sein wie oben beschrieben, das ist wichtig, weil ich das Array später mit einer loop durchlaufe.
Möglich?
-
ok läuft, habs jetzt so gemacht:
Code
Alles anzeigenFunc FirewallRuleExists($sName) Local $oPolicy = ObjCreate("HNetCfg.FwPolicy2") Return IsObj($oPolicy.Rules.Item($sName)) EndFunc Func Template_COMErrorRegister() $__g_oTemplateCOMErrorHandler = ObjEvent("AutoIt.Error", "Template_COMErrFunc") EndFunc ;==>Template_COMErrorRegister Func Template_COMErrorUnregister() $__g_oTemplateCOMErrorHandler = 0 EndFunc ;==>Template_COMErrorUnregister Func Template_COMErrFunc() ; Do nothing special, just check @error after suspect functions. EndFunc ;==>Template_COMErrFunc Func GetOutgoingTrafficRules() Template_COMErrorRegister() Local $aCurExplorerOptions[] = [ _ FirewallRuleExists('"AADBrokerPlugin"-App') , _ FirewallRuleExists('"AppAccountsControl"-App') , _ FirewallRuleExists('"BioEnrollment"-App') , _ FirewallRuleExists('"LockApp"') , _ FirewallRuleExists('"Edge"-App (Teil 1/2)') , _ FirewallRuleExists('"Edge"-App (Teil 2/2)') , _ FirewallRuleExists('"AssignedAccessLockApp"-App') , _ FirewallRuleExists('"Background Task Host"-Prozesses') , _ FirewallRuleExists('"Download Upload Host"-Prozesses') , _ FirewallRuleExists('"Hostprozesses für Windows-Aufgaben"') , _ FirewallRuleExists('"Host Process for Setting Synchronization"') , _ FirewallRuleExists('"Microsoft Compatibility Telemetry"-Prozesses') , _ FirewallRuleExists('"FeedbackSIUFDeployment"-Prozesses') , _ FirewallRuleExists('"Feeds Synchronization"-Prozesses') , _ FirewallRuleExists('"MalwareProtectionCommandLineUtility"-Prozesses') , _ FirewallRuleExists('"Windows-Tools zum Entfernen bösartiger Software"') , _ FirewallRuleExists('"RuntimeBroker"-Prozesses') , _ FirewallRuleExists('"SIH Client"-Prozesses') , _ FirewallRuleExists('"Problem Reporting"-Prozesses') , _ FirewallRuleExists('"SQM-Konsolidator"-Prozesses') , _ FirewallRuleExists('"Windows-Aktivierungsclient"-Prozesses') , _ FirewallRuleExists('"Device Association Framework Provider Host"-Prozesses') _ ] Template_COMErrorUnregister() Return $aCurExplorerOptions EndFunc
-
Das mit objevent ist ne super idee! Kann ich das so einrichten, dass ich nur von diesem "HNetCfg.FwPolicy2" Objekt den Fehler abfange und normale syntax Fehler weiterhin zum Crash führen?
Wenn ich
Global $oErrorHandler = ObjEvent("HNetCfg.FwPolicy2", "_ErrFunc")
benutze, crasht AutoIt und wenn ich
Global $oErrorHandler = ObjEvent("AutoIt.Error", "_ErrFunc")
benutze, werden halt alle Arten von Fehlern umgangen -
Hi,
ich versuch auf eine bestimmte Firewall Regel zuzugreifen, bzw. auf ein Item eines "Regel" Objekts:CodeFunc FirewallRuleExists($sName) Local $oPolicy = ObjCreate("HNetCfg.FwPolicy2") Return (IsObj($oPolicy.Rules.Item($sName))) ? 1 : 0 EndFunc
Das Problem ist, dass wenn beispielsweise $oPolicy.Rules.Item("Test") nicht existiert, ein Fehler geworfen wird:
The requested action with this object has failed.:Return (IsObj($oPolicy.Rules.Item($sName))) ? 1 : 0$oPolicy.Rules ist ok, es geht nur ums Item...
Kennt man ja auch vom Dictionary, daher hab ichs mit $oPolicy.Rules.Exists("Test") versucht, aber das "$oPolicy.Rules" Objekt ist kein Dictionary
Hat jemand ne idee, wie ich den error abfangen kann?