健壮性,稳定性和你不应该这样做的问题除外,有没有人通过代码填写Windows凭证提示(这样就是这样:)
是否可以通过Win32 API或使用SendKeys / send mouse / UI Automation与这些对话框进行交互?任何人的想法/提示将不胜感激!
答案 0 :(得分:0)
使用像AHK (Auto HotKey)这样的东西,它是一种可以编译成EXE的简单语言,专为自动键盘和鼠标而设计。
或者你可以从WPF做到: http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/6fc7f1f6-f3e2-4b32-9d2b-9c7a2680e04a/
或者用户只需勾选“记住我的凭据”
即可答案 1 :(得分:0)
我最终使用UI Automation framework,这允许我获取对凭证提示的引用,然后将其填写并以这种方式完成。
代码段:
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对象并调用其方法(例如,Textboxes有一个ValuePattern,它具有.SetValue()方法。
我还使用UISpy来查找ClassNames,AutomationIds等所有值,以帮助通过.FindAll()和PropertyConditions对象找到正确的项目。