MFCは自動記入フォームと自動提出フォームを実現

3385 ワード

自動記入フォームと自動提出フォームはホームページに自動的に登録し、自動的に投稿し、プログラムをホームページとインタラクティブにすることができます.この機能の使用はまだ広いです.私が一般的に使っている自動記入フォームと自動提出フォームのいくつかのテクニックを話してみましょう.これらのテクニックは、いくつかの拡張思考と結びつけてもっと多くのことをすることができます.フォームキーを自動的に入力して変数のnameを見つけ(maxLengthを検索すると、変数のnameを見つけやすくなります)、フォームキーを提出してformのsubmitnameとformのnameを見つけます.
1.DlgダイアログMFCプログラムの新規作成
2.ダイアログボックスでWebBrowserコントロールIDをIDCに変更するEXPLORER、その関連コントロール変数、変数名はm_web.
3.ボタンを3つ追加し、1つは「フォームの発行」、IDはIDC_に変更SUBMITは、一つは「自動記入」ボタンIDがIDC_AUTOに変更され、もう一つは「ウェブページを開く」ボタンIDがIDC_に変更された.OPEN、同時に3つのボタンにメッセージ応答を追加
4.2つの編集ボックス2つの静的テキストを追加して、彼らは“アカウント”と“パスワード”の2つのグループを構成して、アカウントの編集ボックスのためにIDを修正して、IDC_USERNAME、関連CString変数はm_username、パスワード編集ボックスのIDを:IDC_に変更PASWORD、関連CString変数はm_password、編集ボックスIDを追加:IDC_URL、関連CString変数はm_url、これは開くのと同じグループになってページを開く(Dlgクラスの初期化関数で直接指定したページを開くこともできます)
5.dlgのoppファイル(実装ファイル)のヘッダにヘッダファイルを含む
[cpp] view plain copy print ?
#include   
#include <MsHTML.h>

6.「Webサイトを開く」ボタンのメッセージ応答に次のコードを追加します.
[cpp] view plain copy print ?
 
CComVariant vtUrl(m_url);
	CComVariant	vtEmpty;
	m_web.Navigate2(&vtUrl, &vtEmpty, &vtEmpty, &vtEmpty, &vtEmpty);//       

7.「自動記入」ボタンの詳細応答に次のコードを追加します.
[cpp] view plain copy print ?
 
 CComPtr < IDispatch > spDispDoc;
	spDispDoc = m_web.get_Document();
	CComQIPtr< IHTMLDocument2 > spDocument2 = spDispDoc;
	CComQIPtr< IHTMLElementCollection > spElementCollection;
	if(SUCCEEDED(spDocument2->get_all(&spElementCollection)))
	{
		CComPtr<IDispatch> spDisp1, spDisp2;
		HRESULT hr1, hr2;
		hr1 = spElementCollection->item(CComVariant("u"), CComVariant("0"), &spDisp1);
		hr2 = spElementCollection->item(CComVariant("p"), CComVariant("0"), &spDisp2);
		if(SUCCEEDED(hr1))//||SUCCEEDED(hr2)||SUCCEEDED(hr3))
		{

			CComQIPtr<IHTMLInputElement>  spElem1 = spDisp1;
			CComQIPtr<IHTMLInputElement>  spElem2 = spDisp2;
			spElem1->put_value(CComBSTR(username));spElem2->put_value(CComBSTR(password));}}

8.「フォームの発行」ボタンのメッセージ応答に次のコードを追加します.
[cpp] view plain copy print ?
 
 CComPtr < IDispatch > spDispDoc;
	spDispDoc = m_web.get_Document();
	CComQIPtr< IHTMLDocument2 > spDocument2 = spDispDoc;
	CComQIPtr< IHTMLElementCollection > spElementCollection;
	if(SUCCEEDED(spDocument2->get_all(&spElementCollection)))
	{
	CComPtr<IDispatch> spDisp;
	HRESULT hr;
	hr = spElementCollection->item(CComVariant("submit"), CComVariant("0"), &spDisp);
	if(SUCCEEDED(hr))
	{

	CComQIPtr<IHTMLFormElement>  spForm = spDisp;
	spForm->submit();
	}
	}
ウェブページ入力にウェブページwww.baiduを入力.comはそれから「ボタンを開く」をクリックして、それから編集ボックスの中でアカウントのパスワードを入力して、クリックして自動的に記入して、更に「提出フォーム」をクリックしてブラウザの中のデータが自動的に提出フォームに入力することを見ましたか?この时、皆さんは拡張することができて、自動記入の処理を提出フォームの中に置いて処理して、それからdlg類の初期化関数の中でウェブサイトを開く操作を設定して、この时ソフトウェアを開くと指定のホームページを開いて、それからアカウントのパスワードを入力して、点は提出して、ブラウザの中のデータは自動的に提出フォームを入力して登録して、この时、新しいページに基づいていくつかの操作を行うと、自动的な投稿を実现することができます.この时、操作が终わった后、ページを开けられないエラー処理をすると、异常を投げ出すことができます.みんな自分で考えなさい.