ページ 1 / 1
HPでの自動入力
Posted: 2005年12月21日(水) 10:38
by 弘
懸賞サイト等では郵便番号から氏名、電話番号と言った決まったフォームの入力を求められます。
これを何とか自動化出来ないものかと考えたのですが、
実際にこれをABで作ろうと思えば作れるものなのでしょうか?
IEでHPを開き、入力の欄に入力(自動で入力)後、送信ボタンをクリック<ここまでの流れをABで。
もし可能な様であるならば、簡単なサンプルでも教えて頂けたらと思います。
宜しくお願いします。
javaでHTTPUNITでも使えば一発ですよ
Posted: 2005年12月21日(水) 10:46
by yas
Re: javaでHTTPUNITでも使えば一発ですよ
Posted: 2005年12月21日(水) 11:12
by 弘
>
http://httpunit.sourceforge.net/doc/cookbook.html
yasさん、有難う御座います。
ただ・・・英語なのとjavaは全然わからないので、内容がさっぱり理解出来ません。
(ABでは実現は困難なのでしょうか?)
Posted: 2005年12月21日(水) 11:57
by rj
IEをABで操作するのは難しそうですね。
他に考えられるのは
HTTPでHTMLをダウンロード
↓
HTMLを解析して設定すべきフォームを探す
↓
内容を設定する
↓
HTTPを使ってPOSTとsubmitを送信する
ぐらいしか思いつきません。
これもHTMLとHTTPとSOCKETの知識がないとまず無理です。
突き放すようで申し訳ありませんが、あきらめるのが無難かと。
Posted: 2005年12月21日(水) 12:10
by ゲスト
http://www5.ocn.ne.jp/~miisan/aibar/support/
こういうのでしょうか?
これを実現するには、COMで、DOMを操る必要があります。
IE限定です。
Posted: 2005年12月21日(水) 12:54
by 弘
回答有難う御座います。
お二人の意見を纏めるとHTMLとHTTPとSOCKET及びCOMでDOMを操る知識が必要なんですね。
ゲストさんの書かれてた"IE限定"と言う言葉が気になったのですがIE限定であれば行けるんでしょうか?(しつこくてすいません)
紹介して頂いたHP見ました。
正に実現したいのはそう言う風なソフトです。
Posted: 2005年12月22日(木) 18:17
by konisi
話はそれますが、IE限定っていうのとWebブラウザ限定っていうのとでは違うので区別した方がいいと思います。
IE・・・IE4 IE5 IE6等のInternetExplorerシリーズ
Webブラウザ・・・IE、FireFox、Nescape、Sleipnir等の全てのWebページを表示できるブラウザ
この定義で行っても「IE限定」かどうか調べてみてくだされ。暇なら。
そして文自体にミスがあったら言ってください。
Posted: 2005年12月22日(木) 22:47
by ノッチ
こんばんわ。
キーボード入力をエミュレートする
keybd_event
というAPIがあります。
コード: 全て選択
Declare Function MapVirtualKey Lib "user32" Alias "MapVirtualKeyA" (ByVal wCode As Long,ByVal wMapType As Long) As Long
keybd_event(VK_SNAPSHOT,MapVirtualKey(VK_SNAPSHOT,0),0,0)
keybd_event(VK_SNAPSHOT,MapVirtualKey(VK_SNAPSHOT,0),KEYEVENTF_KEYUP,0)
end
上記コードをABにそのまま貼り付けして実行するとクリップボードに画面がコピーされます。
(PrintScreenボタンを押す動作をエミュレートした)
これを加工して、
アルファベットキーを押す、放すを繰り返してスペースで変換、エンターで決定、
タブで次の項目に移動を繰り返したり、
クリップボードに必要な文字列をコピーしてCtrl+V、タブで移動する等で
必要な項目を入力していくことが可能です。
こんな方法はどうでしょうか。(というかこういうソフトが実在するんですが)
Posted: 2005年12月23日(金) 10:38
by ゲスト
> IE限定であれば行けるんでしょうか?
ただしくは、IEコンポーネントを使用したブラウザです。
IEは、ページの表示部分がCOMサーバですので、IE限定となる訳です。
そして、ページの内容をプロパティなどとして操作できる様になっています。
(Donutなどでも出来るかも)
操作は、ABでも行けるはずですが、かなり面倒です。
なので、ツール作成に必要な機能をVBAや、VBなどのRAD開発環境を使用して、
プロトタイプを作成した方がいいと思います。
Excel VBAでのサンプルを載せますので、あとは、ご自身で調査願います。
私も大して詳しくありません。確か専用のhtmlヘルプがありました。(英語)
IEを起動して、以下のサンプルをVBAに貼り付けて実行してください。
コード: 全て選択
Sub BBS()
' Dim oDoc As HTMLDocument 'Library MSHTMLを参照設定 - (Microsoft HTML Object Library)
Dim oShellwnd As ShellWindows 'Library SHDocVwを参照設定 - (Microsoft Internet Controls)
Set oShellwnd = New ShellWindows
If oShellwnd.Count = 0 Then
MsgBox "IEを起動してください!!", vbExclamation + vbOKOnly
GoTo ExitTag
End If
Call oShellwnd.Item(0).Navigate("http://www.discoversoft.net/bbs/bbs.cgi")
While oShellwnd.Item(0).Busy = True
DoEvents
Wend
oShellwnd.Item(0).document.all.Name.Value = "弘"
oShellwnd.Item(0).document.all.email.Value = "mail@address.co.jp"
oShellwnd.Item(0).document.all.sub.Value = "HPでの自動入力"
oShellwnd.Item(0).document.all.Comment.Value = "自動入力の質問"
' 又は…。
' Set oDoc = oShellwnd.Item(0).document
' oDoc.Item(0).document.all.Name.Value = "弘"
' oDoc.Item(0).document.all.email.Value = "mail@address.co.jp"
' oDoc.Item(0).document.all.sub.Value = "HPでの自動入力"
' oDoc.Item(0).document.all.Comment.Value = "自動入力の質問"
ExitTag:
' Set oDoc = Nothing
Set oShellwnd = Nothing
End Sub
コード: 全て選択
Sub Google()
Dim oTag As Object
Dim oShellwnd As ShellWindows 'Library SHDocVwを参照設定 - (Microsoft Internet Controls)
Set oShellwnd = New ShellWindows
If oShellwnd.Count = 0 Then
MsgBox "IEを起動してください!!", vbExclamation + vbOKOnly
GoTo ExitTag
End If
Call oShellwnd.Item(0).Navigate("http://www.google.co.jp/")
While oShellwnd.Item(0).Busy = True
DoEvents
Wend
For Each oTag In oShellwnd.Item(0).document.all.tags("input")
If oTag.Type = "text" Then
oTag.Value = "HPでの自動入力"
End If
Next oTag
ExitTag:
Set oShellwnd = Nothing
End Sub
Posted: 2005年12月23日(金) 10:40
by ゲスト
× IE限定となる訳です。
○ IEコンポ限定となる訳です。
Posted: 2005年12月23日(金) 10:59
by ゲスト
もう一つ訂正。
コード: 全て選択
' 又は…。
' Set oDoc = oShellwnd.Item(0).document
' oDoc.all.Name.Value = "弘"
' oDoc.all.email.Value = "mail@address.co.jp"
' oDoc.all.sub.Value = "HPでの自動入力"
' oDoc.all.Comment.Value = "自動入力の質問"
です。
Posted: 2005年12月30日(金) 21:43
by 弘
返事が遅くなりすいません
>ノッチさん
教えて頂いたコードを実行してみましたが・・・
その先をどうすれば良いのか全然わかりません(汗)
PrintScreenボタンを押す動作をエミュレートした と言う事だけは理解出来ましたが。
>ゲストさん
Excel VBAのサンプルの実行の仕方をもう少し詳しく教えて頂けないでしょうか?
Excel VBAに貼り付けて実行すると”ユーザ定義型は定義されていません”と表示されコンパイルエラーになってしまいます。
Posted: 2005年12月31日(土) 07:48
by バケさん
> Excel VBAのサンプルの実行の仕方をもう少し詳しく教えて頂けないでしょうか?
> Excel VBAに貼り付けて実行すると”ユーザ定義型は定義されていません”と表示されコンパイルエラーになってしまいます。
ソースのコメントに書かれてあるのですが、参照設定が必要です。
BBSのソースでは以下の様に記述されてあるのでVisualBasicEditorのメニューバーの tool - 参照設定 を選択して
「Microsoft Internet Controls」をチェックします。
(実行、デバッグ時には停止させないと設定できません)
Dim oShellwnd As ShellWindows 'Library SHDocVwを参照設定 - (Microsoft Internet Controls)
Posted: 2005年12月31日(土) 12:17
by ゲスト
Excelや、VBがない人は、VBSでも実行できます。
このサンプルでは、新たな属性も変更します。
実行手順:
1.Google.vbs ファイルを新規作成して、以下のコードを貼り付け保存。
2.IEを起動して、
http://www.google.co.jp/ を開く。
3.Google.vbs をダブルクリック
コード: 全て選択
Set oshell = CreateObject("Shell.Application")
For Each ownd In oshell.Windows()
MsgBox ownd.document.body.innerHTML
ownd.document.body.text = "#FFFFFF"
ownd.document.body.bgcolor = "#000000"
For Each oTag In ownd.document.all.tags("input")
If oTag.Type = "text" And oTag.Name = "q" Then
oTag.Value = "HPでの自動入力"
End If
Next
Next
サンプルのように入力するターゲットが決まっている場合は、いいですが、
ページごとに異なるフォームの場合は、ソースの解析も必要です。
自動入力以上に苦労するかもしれません。
私が、例の懸賞ソフトを試したのが数年前ですが、当時100%の自動入力は、
出来ませんでした。
Posted: 2005年12月31日(土) 12:19
by ゲスト
書き忘れましたが、サンプルでは、フレームには、対応してません。
フレームもオブジェクトとして存在します。