- 締切済み
VB2005でUWSCを実行した後の命令が実行されません。
VB初心者です。 今VB2005でUWSCを実行してあるwebサイトにログインした後、 そのサイトのHTMLデータを抜き出そうと試みています。 今UWSCを実行してwebサイトにログインはできているのですが、 HTMLデータを抜き出すところで困っています。 下に作成したソースを記述します。稚拙なソースですみません。 ----------------------------------------------------------------------------- Imports System.Text.RegularExpressions Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click System.Diagnostics.Process.Start("C:\uwsc44b\UWSC.exe", "C:\uwsc44b\自動ログイン.uws") Dim reg1 As Regex Dim mat1 As Match reg1 = New Regex("<TD align=left noWrap bgcolor=#ffffff>(.*?)</TD>", RegexOptions.Singleline) mat1 = reg1.Match(TextBox1.Text) While mat1.Success Console.WriteLine(mat1.Value) mat1 = mat1.NextMatch() End While End Sub End Class ----------------------------------------------------------------------------- UWSCの自動ログイン.uwsが実行されている間にVBの他の命令が実行されてしまって いるのではないかと考えています。 どなたかアドバイスをいただけないでしょうか。 よろしくお願い致します。 ※補足 OS : WindowsXP sp2 VB : VisualBasic2005 Express Edition UWSC : uwsc44b (フリーソフト)
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- iriyak
- ベストアンサー率48% (40/82)
こんにちは。 > TextBox1にHTML文は出力されていませんが、UWSC.exeは終了しています(多分ですが・・・)。 UWSC.exe が関係しているかどうかを切り分けるために、プロセスの起動指示箇所をスリープにして、マニュアルでログイン操作を行って TextBox1 の text 属性の値がスリープ前後でどう変化するか見てはいかがでしょうか。 TextBox1 が何かよくわかっていないので、そういう副作用がそもそも期待できる条件にあるのか、という話もありますが。
- ProKaseifu
- ベストアンサー率51% (98/192)
UWSCというのはナニモノか知りませんが。 System.Diagnostics.Process.Start("C:\uwsc44b\UWSC.exe", "C:\uwsc44b\自動ログイン.uws") ↑が実行されるとTextBox1にHTML文が出力されて「UWSC.exe」が終了するのでしょうか? そうであるならば Dim process As System.Diagnostics.Process = System.Diagnostics.Process.Start("C:\uwsc44b\UWSC.exe", "C:\uwsc44b\自動ログイン.uws") process.WaitForExit() と、プロセスが終了するまで待ってあげればいいかと。
お礼
早速の回答ありがとうございます。 >System.Diagnostics.Process.Start("C:\uwsc44b\UWSC.exe", "C:\uwsc44b\自動ログイン.uws") >↑が実行されるとTextBox1にHTML文が出力されて「UWSC.exe」が終了するのでしょうか? TextBox1にHTML文は出力されていませんが、UWSC.exeは終了しています(多分ですが・・・)。 >Dim process As System.Diagnostics.Process = System.Diagnostics.Process.Start("C:\uwsc44b\UWSC.exe", "C:\uwsc44b\自動ログイン.uws") >process.WaitForExit() >と、プロセスが終了するまで待ってあげればいいかと。 書き換えて実行してみたところやはり何も表示されませんでした。 Dim reg1 As Regex Dim mat1 As Match reg1 = New Regex("<TD align=left noWrap bgcolor=#ffffff>(.*?)</TD>", RegexOptions.Singleline) mat1 = reg1.Match(TextBox1.Text) While mat1.Success Console.WriteLine(mat1.Value) mat1 = mat1.NextMatch() End While ここに問題がありそうです。 せっかくアドバイス頂いたのに活かせず申し訳ありません。