堅牢性、安定性の問題はさておき、これを行うべきではありません。コードを介してWindowsクレデンシャルプロンプトに入力した人がいます(これは次のようになります:)
Win32 APIを介して、またはSendKeys / send mouse / UI Automationを使用して、これらのダイアログボックスを操作することは可能ですか?誰かが持っているアイデア/ヒントは大歓迎です!
堅牢性、安定性の問題はさておき、これを行うべきではありません。コードを介してWindowsクレデンシャルプロンプトに入力した人がいます(これは次のようになります:)
Win32 APIを介して、またはSendKeys / send mouse / UI Automationを使用して、これらのダイアログボックスを操作することは可能ですか?誰かが持っているアイデア/ヒントは大歓迎です!
AHK(Auto HotKey)のようなものを使用してください。これは、EXEにコンパイルできる単純な言語であり、キーボードとマウスを自動化するように設計されています。
または、WPFから実行することもできます: http ://social.msdn.microsoft.com/Forums/en-US/wpf/thread/6fc7f1f6-f3e2-4b32-9d2b-9c7a2680e04a/
または、ユーザーは単に「私の資格情報を記憶する」にチェックを入れることができます
最終的に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
}
}
要素を操作するには、適切なパターンオブジェクトを取得し、そのメソッドを呼び出します(たとえば、テキストボックスには.SetValue()メソッドを持つValuePatternがあります。
また、UISpyを使用して、ClassNames、AutomationIdsなどのすべての値を検索し、.FindAll()およびPropertyConditionsオブジェクトを介して正しいアイテムを検索できるようにしました。