質問編集履歴
1
ソースコードの追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -74,4 +74,83 @@
|
|
74
74
|
<div class="fieldValue">
|
75
75
|
<input type="submit" name="Submit" value="ログイン" class="button" >
|
76
76
|
</div>
|
77
|
+
```
|
78
|
+
|
79
|
+
|
80
|
+
現状の自身のソースコード
|
81
|
+
```
|
82
|
+
namespace webbrowser
|
83
|
+
{
|
84
|
+
public partial class Form1 : Form
|
85
|
+
{
|
86
|
+
private const string strRegPath = @"Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION";
|
87
|
+
private Microsoft.Win32.RegistryKey regKey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(strRegPath, true);
|
88
|
+
private string strProcessName = System.Diagnostics.Process.GetCurrentProcess().ProcessName + ".exe";
|
89
|
+
private CookieContainer cc;
|
90
|
+
public Form1()
|
91
|
+
{
|
92
|
+
InitializeComponent();
|
93
|
+
}
|
94
|
+
|
95
|
+
private void button1_Click(object sender, EventArgs e)
|
96
|
+
{
|
97
|
+
regKey.SetValue(strProcessName, 11001, Microsoft.Win32.RegistryValueKind.DWord);
|
98
|
+
webBrowser1.ScriptErrorsSuppressed = false;
|
99
|
+
|
100
|
+
webBrowser1.Visible = true;
|
101
|
+
webBrowser1.Navigate("機器のURL");//機器にアクセス
|
102
|
+
System.Threading.Thread.Sleep(2000);//2秒待つ
|
103
|
+
SendKeys.Send("Y");//「Y」を押す(セキュリティエラーの苦肉の回避策)
|
104
|
+
|
105
|
+
while (webBrowser1.IsBusy || webBrowser1.ReadyState != WebBrowserReadyState.Complete)
|
106
|
+
{
|
107
|
+
//無処理
|
108
|
+
System.Windows.Forms.Application.DoEvents();
|
109
|
+
System.Threading.Thread.Sleep(100);
|
110
|
+
}//開くまで待つ
|
111
|
+
|
112
|
+
|
113
|
+
HtmlWindow iframe = webBrowser1.Document.Window.Frames[0];
|
114
|
+
HtmlElementCollection elements = iframe.Document.All;
|
115
|
+
HtmlElement id = elements.GetElementsByName("userName")[0];
|
116
|
+
HtmlElement pw = elements.GetElementsByName("pwd")[0];
|
117
|
+
id.InnerText = "ID";//ログインIDを入力
|
118
|
+
pw.InnerText = "password";//ログインPASSを入力
|
119
|
+
|
120
|
+
HtmlElement login = elements.GetElementsByName("Submit")[0];
|
121
|
+
login.InvokeMember("click");//ログインボタンを押す
|
122
|
+
|
123
|
+
while (webBrowser1.IsBusy || webBrowser1.ReadyState != WebBrowserReadyState.Complete)
|
124
|
+
{
|
125
|
+
System.Windows.Forms.Application.DoEvents();
|
126
|
+
System.Threading.Thread.Sleep(100);
|
127
|
+
}//開くまで待つ
|
128
|
+
System.Threading.Thread.Sleep(2000);//2秒待つ
|
129
|
+
|
130
|
+
CookieContainer cc = new CookieContainer();
|
131
|
+
|
132
|
+
cc.SetCookies(webBrowser1.Url, webBrowser1.Document.Cookie.Replace(";", ","));
|
133
|
+
|
134
|
+
HttpWebRequest req = (HttpWebRequest)WebRequest.Create("ダウンロード先URL");//Cookieをセットしてダウンロード先にアクセス
|
135
|
+
req.CookieContainer = cc;
|
136
|
+
/*下記でエラーが出る。
|
137
|
+
System.Net.WebException: '接続が切断されました: SSL/TLS のセキュリティで保護されているチャネルに対する信頼関係を確立できませんでした。
|
138
|
+
内部例外 AuthenticationException: 検証プロシージャによると、リモート証明書は無効です。
|
139
|
+
上記で停まってしまい、証明書をスルーするコードを記入すると何も取得出来なくなります。
|
140
|
+
*/
|
141
|
+
HttpWebResponse res = (HttpWebResponse)req.GetResponse();
|
142
|
+
Stream st = res.GetResponseStream();
|
143
|
+
StreamReader sr = new StreamReader(st);
|
144
|
+
|
145
|
+
HttpWebResponse res = (HttpWebResponse)req.GetResponse();
|
146
|
+
Stream st = res.GetResponseStream();
|
147
|
+
StreamReader sr = new StreamReader(st);
|
148
|
+
String htmlSorce = sr.ReadToEnd();
|
149
|
+
Console.WriteLine(htmlSorce);
|
150
|
+
sr.Close();
|
151
|
+
st.Close();
|
152
|
+
|
153
|
+
}
|
154
|
+
|
155
|
+
}
|
77
156
|
```
|