0

健壮性、稳定性和你不应该这样做的问题,有没有人通过代码填写过 Windows 凭证提示(所以看起来像这样:)

windows安全提示

是否可以通过 Win32 API 或使用 SendKeys/发送鼠标/UI 自动化与这些对话框进行交互?任何人的任何想法/提示将不胜感激!

4

2 回答 2

0

使用AHK(自动热键)之类的东西,它是一种可以编译为 EXE 的简单语言,旨在实现键盘和鼠标的自动化。

或者您可以从 WPF 执行此操作:http: //social.msdn.microsoft.com/Forums/en-US/wpf/thread/6fc7f1f6-f3e2-4b32-9d2b-9c7a2680e04a/

或者用户可以简单地勾选“记住我的凭据”

于 2012-04-20T03:44:42.870 回答
0

我最终使用了UI 自动化框架,它允许我获取对凭据提示的引用,然后填写并以这种方式完成。

代码片段:

AutomationElement desktop = AutomationElement.RootElement;
//get all windows on the desktop
AutomationElementCollection windows = desktop.FindAll(TreeScope.Descendants, new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Window));
         foreach (AutomationElement window in windows)
        {
            if (window.Current.ClassName.Equals("#32770"))   //security dialog
            {

                // access the appropriate AutomationElements to enter credentials here

            }
        }

要与元素交互,您需要获取适当的 Pattern 对象并调用它的方法(例如,文本框有一个 ValuePattern,它有一个 .SetValue() 方法。

我还使用 UISpy 查找 ClassNames、AutomationIds 等的所有值,以帮助通过 .FindAll() 和 PropertyConditions 对象找到正确的项目。

于 2012-04-24T07:45:58.287 回答