2017-11-19 13 views
0

Windowsセキュリティウィンドウの名前とパスワードを自動的に入力しようとしましたが、基本的にページが数秒後に開きますが、ユーザーとパスワードのフィールドは空です。これは私がこれまで持っていたコードですが、どんな助けもありがたいです。ありがとうございました。自動ログインウィンドウのセキュリティウィンドウ

新しいプロセスとして暗いoProcess()新ProcessStartInfo

psi.FileName = "arp" 
    psi.Arguments = "-a" 
    psi.UseShellExecute = False 
    psi.RedirectStandardOutput = True 
    psi.WindowStyle = ProcessWindowStyle.Hidden 
    psi.CreateNoWindow = True 
    Dim p As Process = Process.Start(psi) 
    Dim s As String = p.StandardOutput.ReadToEnd() 
    s = s.Split(" ".ToCharArray)(1) 
    WebBrowser1.Navigate("http://user:[email protected]" + (s) + ":34655/") 

それは動作しますが、私はCMDのみ最初のipから取得するよう 薄暗いPSI(192.2.2.2:私は今の私どこ

です)、arpコマンドを使用しないと、私はデバイスのipを見ません。 基本的には、3行目のこのcmd出力からipを取得する必要があります。 "interface:192.2.2.2 ---- 0xb ////// インターネットアドレス - 物理アドレス---タイプ/////// 134.45.455.455.4(このIP)MACアドレスの動的////// などなど「///// は、あなたがより具体的である必要が

+0

[お問い合わせ]を読んで[ツアー]をご覧ください。あなたはPInvokeを研究すべきです - これらのLongはすべてInt32である可能性が高いです。彼らはあなたのコードは、彼らが失敗している場合は、いつ見てリターンをテストする可能性が機能しているので - 彼らが使用された場合、つまり、 – Plutonix

答えて

0

ありがとうございます。
接続先サイトが基本認証を使用している場合は、標準フィールドとボタンコントロールを持つシステム入力ボックスが表示されます。 それはWebフォームのログイン認証を使用する場合は、あなたが記入した半標準のフォーム要素を持つWebフォーム されています。

前者の場合には、WebRequest/HttpWebResponseまたは、もしthrou認証を実行するために非常に簡単ですWebBrowserコントロール を使用して、.Navigateプロパティを設定して同じ結果を得る必要があります。

あなたのケースが後者の場合、WebBrowserコントロールを使用してURIにナビゲートするので、PInvokeはまったく必要ありません。
WebBrowser.Documentには、HTMLページを記述するHtmlDocumentが含まれています。
また、ページで定義されているすべてのオブジェクトにアクセスすることもできます。

はあなたがに接続しているサイト、事前に知っていればそう、あなたがあなたのWebブラウザーの.DocumentCompletedイベントを使用することができます(つまり、あなたがこれだけのサイトのために、この操作 を実行する必要がある)とから直接 あなたのパラメータを設定しますそこ:

は考えてみましょう: ["UserName"], ["Password"], ["LoginButton"]
<input>テキストボックス、<input>パスワード、 と.Clickイベントでフォームパラメータを転送<input>ボタンを表すHTML要素のIDとして。だから、 、htmlのページからフォーム内の要素のIDを読み、自分の値を挿入します。WebBrowser1_DocumentCompletedで


WebBrowser1.Document.All(["UserName"]).SetAttribute("Value", "UserID") 
WebBrowser1.Document.GetElementById(["Password"]).SetAttribute("Value", "Password") 
WebBrowser1.Document.All(["LoginButton"]).InvokeMember("Click") 

私は2つがあることを示すために.Document.All.Document.GetElementByIdを使用しています同一のタスクを達成するために異なる メソッド。

Htmlページの内容を事前に把握していない場合は、HtmlDocumentオブジェクトを使用してページの単純な解析を実行し、フォームの要素を取得してから前に を繰り返す必要があります仕事。

私が言ったように、あなたはより具体的にする必要があります。
ご不明な点がございましたら、私の回答を編集します。

+0

をごanswer.Yesいただきありがとうございますが、基本的な認証の場合です。私は最終的にログインすることができました。ページが開いていますが、ページのボタンを押すと認証ウィンドウが再び表示されるため、ユーザーとパスワードを再度入力する必要があります。 – user8967715

+0

認証の管理方法が明確ではありません。 HttpRequest POST経由ですか? – Jimi

+0

私は、基本認証にレベルルールがあることを意味します。 URI "https:// servername/directory1 /"で認証すると、同じレベルにあるものに対してのみ認証されます。 "ディレクトリ1"。 "https:// servername/directory1/directory2 /"にあるilを尋ねる場合は、そのレベルに対してもう一度認証する必要があります。 – Jimi

関連する問題