HPでの自動入力

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者

HPでの自動入力

#1 投稿記事 by »

懸賞サイト等では郵便番号から氏名、電話番号と言った決まったフォームの入力を求められます。
これを何とか自動化出来ないものかと考えたのですが、
実際にこれをABで作ろうと思えば作れるものなのでしょうか?

IEでHPを開き、入力の欄に入力(自動で入力)後、送信ボタンをクリック<ここまでの流れをABで。

もし可能な様であるならば、簡単なサンプルでも教えて頂けたらと思います。
宜しくお願いします。

Re: javaでHTTPUNITでも使えば一発ですよ

#3 投稿記事 by »

> http://httpunit.sourceforge.net/doc/cookbook.html

yasさん、有難う御座います。
ただ・・・英語なのとjavaは全然わからないので、内容がさっぱり理解出来ません。
(ABでは実現は困難なのでしょうか?)
rj

#4 投稿記事 by rj »

IEをABで操作するのは難しそうですね。
他に考えられるのは

HTTPでHTMLをダウンロード

HTMLを解析して設定すべきフォームを探す

内容を設定する

HTTPを使ってPOSTとsubmitを送信する

ぐらいしか思いつきません。
これもHTMLとHTTPとSOCKETの知識がないとまず無理です。

突き放すようで申し訳ありませんが、あきらめるのが無難かと。
ゲスト

#5 投稿記事 by ゲスト »

http://www5.ocn.ne.jp/~miisan/aibar/support/
こういうのでしょうか?
これを実現するには、COMで、DOMを操る必要があります。
IE限定です。

#6 投稿記事 by »

回答有難う御座います。
お二人の意見を纏めるとHTMLとHTTPとSOCKET及びCOMでDOMを操る知識が必要なんですね。

ゲストさんの書かれてた"IE限定"と言う言葉が気になったのですがIE限定であれば行けるんでしょうか?(しつこくてすいません)

紹介して頂いたHP見ました。
正に実現したいのはそう言う風なソフトです。
konisi
記事: 893
登録日時: 2005年7月25日(月) 13:27
お住まい: 埼玉県東松山市
連絡する:

#7 投稿記事 by konisi »

話はそれますが、IE限定っていうのとWebブラウザ限定っていうのとでは違うので区別した方がいいと思います。

IE・・・IE4 IE5 IE6等のInternetExplorerシリーズ

Webブラウザ・・・IE、FireFox、Nescape、Sleipnir等の全てのWebページを表示できるブラウザ

この定義で行っても「IE限定」かどうか調べてみてくだされ。暇なら。

そして文自体にミスがあったら言ってください。
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。

に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
ノッチ
記事: 82
登録日時: 2005年6月01日(水) 23:27
お住まい: 北海道札幌市

#8 投稿記事 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、タブで移動する等で
必要な項目を入力していくことが可能です。
こんな方法はどうでしょうか。(というかこういうソフトが実在するんですが)
ゲスト

#9 投稿記事 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
ゲスト

#10 投稿記事 by ゲスト »

× IE限定となる訳です。
○ IEコンポ限定となる訳です。
ゲスト

#11 投稿記事 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 = "自動入力の質問"
です。

#12 投稿記事 by »

返事が遅くなりすいません

>ノッチさん
教えて頂いたコードを実行してみましたが・・・
その先をどうすれば良いのか全然わかりません(汗)
PrintScreenボタンを押す動作をエミュレートした と言う事だけは理解出来ましたが。

>ゲストさん
Excel VBAのサンプルの実行の仕方をもう少し詳しく教えて頂けないでしょうか?
Excel VBAに貼り付けて実行すると”ユーザ定義型は定義されていません”と表示されコンパイルエラーになってしまいます。
バケさん
記事: 8
登録日時: 2005年9月22日(木) 19:29
お住まい: 広島県
連絡する:

#13 投稿記事 by バケさん »

> Excel VBAのサンプルの実行の仕方をもう少し詳しく教えて頂けないでしょうか?
> Excel VBAに貼り付けて実行すると”ユーザ定義型は定義されていません”と表示されコンパイルエラーになってしまいます。
ソースのコメントに書かれてあるのですが、参照設定が必要です。

BBSのソースでは以下の様に記述されてあるのでVisualBasicEditorのメニューバーの tool - 参照設定 を選択して
「Microsoft Internet Controls」をチェックします。
(実行、デバッグ時には停止させないと設定できません)
Dim oShellwnd As ShellWindows 'Library SHDocVwを参照設定 - (Microsoft Internet Controls)
ゲスト

#14 投稿記事 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%の自動入力は、
出来ませんでした。
ゲスト

#15 投稿記事 by ゲスト »

書き忘れましたが、サンプルでは、フレームには、対応してません。
フレームもオブジェクトとして存在します。
返信する