日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

(BCB) CComPtrIHTMLDocument2 FIEDoc;

發布時間:2025/3/15 HTML 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (BCB) CComPtrIHTMLDocument2 FIEDoc; 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一個調用當前IE頁面元素的類庫(BCB)

代碼:
//---------------------------------------------------------------------------
// 作者:雨中漫步
// 寫于:2004-12-26, 19:07:56
// 網址:http://www.wzszf.com/
//---------------------------------------------------------------------------
#ifndef IEInvokeH
#define IEInvokeH
#include <vcl.h>
#include <utilcls.h>
#include <atl/atlbase.h>
#include <oleacc.h>
#include <mshtml.h>
#include <comdef.h>
#pragma hdrstop
#define CLASS_SIZE?? 500

//---------------------------------------------------------------------------
class TIEInvoke :
public TObject
{
private:
CComPtr<IHTMLDocument2> FIEDoc;
HANDLE?????? FIEHandle;
void __fastcall SetIEDoc(CComPtr<IHTMLDocument2> value);
CComPtr < IHTMLDocument2 > __fastcall GetIEDoc(void);
String __fastcall GetSystemErrorMessage(DWORD dwError);
void __fastcall?? SetIEHandle(HANDLE value);
HANDLE __fastcall GetIEHandle(void);
protected:
public:
__fastcall?? TIEInvoke(void);
__property CComPtr<IHTMLDocument2>?? IEDoc = { read = GetIEDoc, write = SetIEDoc };
__property HANDLE IEHandle = { read = GetIEHandle, write = SetIEHandle };
CComPtr < IHTMLDocument2 > __fastcall FindIE(void);
bool __fastcall CallJs(String jsName, TStringList *args, CComVariant *pVarResult);
bool __fastcall SetTextInput(String textInputName, String &textInputValue);
bool __fastcall SetTextAreaInput(String textAreaInputName, String &textAreaInputValue);
bool __fastcall SetDropDownSelect(String dropDownName, String dropDownValue);
bool __fastcall GetTextInput(String textInputName, String &textInputValue);
bool __fastcall GetDropDownSelect(String dropDownName, String &dropDownValue);
bool __fastcall GetTextAreaInput(String textAreaInputName, String &textAreaInputValue);
};

/* */
BOOL CALLBACK FindIEInst(HWND hwnd, LPARAM lParam)
{
char?? wndowclass[CLASS_SIZE];

if(GetClassName(hwnd, wndowclass, CLASS_SIZE) == 0)
{
? return TRUE;
}

String?? strTemp(wndowclass);
if(strTemp == String("Internet Explorer_Server"))
{
? CoInitialize(NULL);

? HINSTANCE hInst = ::LoadLibrary(_T("OLEACC.DLL"));
? String?? strTemp;
? CComPtr<IHTMLDocument2> spDoc;
? LRESULT lRes;

? strTemp = "";

? UINT?? nMsg = ::RegisterWindowMessage(_T("WM_HTML_GETOBJECT"));
? ::SendMessageTimeout(hwnd, nMsg, 0L, 0L, SMTO_ABORTIFHUNG, 1000, (DWORD *) &lRes);

? LPFNOBJECTFROMLRESULT pfObjectFromLresult = (LPFNOBJECTFROMLRESULT)::GetProcAddress(hInst, _T("ObjectFromLresult"));
? if(pfObjectFromLresult != NULL)
? {
??? HRESULT hr;
??? hr = (*pfObjectFromLresult) (lRes, IID_IHTMLDocument2, 0, (void **) &spDoc);
??? if(SUCCEEDED(hr))
??? {
??? TIEInvoke *ie = (TIEInvoke *) lParam;
??? if(ie != NULL)
??? {
????? ie->IEDoc = spDoc;
????? ie->IEHandle = hwnd;
??? }

??? ::FreeLibrary(hInst);
??? CoUninitialize();
??? return FALSE;
??? }
? }

? ::FreeLibrary(hInst);
? CoUninitialize();
}

return TRUE;
}

//---------------------------------------------------------------------------
#endif


代碼:
//---------------------------------------------------------------------------
// 作者:雨中漫步
// 寫于:2004-12-26, 19:07:56
// 網址:http://www.chinabcb.com
//---------------------------------------------------------------------------
#include "IEInvoke.h"

/* */

__fastcall TIEInvoke::TIEInvoke(void)
{
FIEDoc = NULL;
FIEHandle = NULL;
}

/* */
bool __fastcall TIEInvoke::SetTextInput(String textInputName, String &textInputValue)
{
CComPtr<IHTMLElementCollection> pAllColl;
HRESULT hr;
hr = FIEDoc->get_all((IHTMLElementCollection **) &pAllColl);
if(hr == S_OK)
{
? LONG?? length = 0;
? hr = pAllColl->get_length(&length);
? if(hr == S_OK)
? {
??? for(int i = 0; i < length; i++)
??? {
??? VARIANT varIndex;
??? varIndex.vt = VT_UINT;
??? varIndex.lVal = i;

??? VARIANT var2;
??? VariantInit(&var2);

??? IDispatch *pDisp;
??? hr = pAllColl->item(varIndex, var2, &pDisp);?? //Get an element
??? if(hr == S_OK)
??? {
????? IHTMLElement?? *pElem;
????? hr = pDisp->QueryInterface(IID_IHTMLElement, (void **) &pElem);
????? if(hr == S_OK)
????? {
??????? BSTR?? bstr;

??????? hr = pElem->get_tagName(&bstr);

??????? String?? strTag;
??????? strTag = bstr;

??????? String?? mStr = "";
??????? IHTMLInputTextElement *pUser;
??????? hr = pDisp->QueryInterface(IID_IHTMLInputTextElement, (void **) &pUser);
??????? if(hr == S_OK)
??????? {
??????? pUser->get_name(&bstr);
??????? mStr = bstr;
??????? if(mStr == textInputName)
??????? {
????????? pUser->put_value(WideString(textInputValue));

????????? pUser->Release();
????????? pElem->Release();
????????? pDisp->Release();

????????? return true;
??????? }

??????? pUser->Release();
??????? }

??????? pElem->Release();
????? }

????? pDisp->Release();
??? }
??? }
? }
}

return false;
}

/* */
bool __fastcall TIEInvoke::SetTextAreaInput(String textAreaInputName, String &textAreaInputValue)
{
CComPtr<IHTMLElementCollection> pAllColl;
HRESULT hr;
hr = FIEDoc->get_all((IHTMLElementCollection **) &pAllColl);
if(hr == S_OK)
{
? LONG?? length = 0;
? hr = pAllColl->get_length(&length);
? if(hr == S_OK)
? {
??? for(int i = 0; i < length; i++)
??? {
??? VARIANT varIndex;
??? varIndex.vt = VT_UINT;
??? varIndex.lVal = i;

??? VARIANT var2;
??? VariantInit(&var2);

??? IDispatch *pDisp;
??? hr = pAllColl->item(varIndex, var2, &pDisp);?? //Get an element
??? if(hr == S_OK)
??? {
????? IHTMLElement?? *pElem;
????? hr = pDisp->QueryInterface(IID_IHTMLElement, (void **) &pElem);
????? if(hr == S_OK)
????? {
??????? BSTR?? bstr;

??????? hr = pElem->get_tagName(&bstr);

??????? String?? strTag;
??????? strTag = bstr;

??????? String?? mStr = "";
??????? IHTMLTextAreaElement?? *pUser;
??????? hr = pDisp->QueryInterface(IID_IHTMLTextAreaElement, (void **) &pUser);
??????? if(hr == S_OK)
??????? {
??????? pUser->get_name(&bstr);
??????? mStr = bstr;
??????? if(mStr == textAreaInputName)
??????? {
????????? pUser->put_value(WideString(textAreaInputValue));

????????? pUser->Release();
????????? pElem->Release();
????????? pDisp->Release();

????????? return true;
??????? }

??????? pUser->Release();
??????? }

??????? pElem->Release();
????? }

????? pDisp->Release();
??? }
??? }
? }
}

return false;
}

/* */
bool __fastcall TIEInvoke::CallJs(String jsName, TStringList *args, CComVariant *pVarResult)
{
CComPtr<IDispatch>?? spScript;
HRESULT hr = FIEDoc->get_Script(&spScript);
ATLASSERT(SUCCEEDED(hr));
if(!SUCCEEDED(hr))
{
? return false;
}

BSTR?? bstrMember = WideString(jsName);
DISPID?? dispid = NULL;
hr = spScript->GetIDsOfNames(IID_NULL, &bstrMember, 1, LOCALE_SYSTEM_DEFAULT, &dispid);
if(FAILED(hr))
{
? return false;
}

const int?? arraySize = args->Count;

DISPPARAMS?? dispparams;
memset(&dispparams, 0, sizeof dispparams);
dispparams.cArgs = arraySize;
dispparams.rgvarg = new VARIANT[dispparams.cArgs];

for(int i = 0; i < arraySize; i++)
{
? CComBSTR?? bstr = WideString(args->Strings[arraySize - 1 - i]).Copy(); // back reading
? bstr.CopyTo(&dispparams.rgvarg.bstrVal);
? dispparams.rgvarg.vt = VT_BSTR;
}

dispparams.cNamedArgs = 0;

EXCEPINFO excepInfo;
memset(&excepInfo, 0, sizeof excepInfo);

CComVariant vaResult;
UINT?????? nArgErr = (UINT) - 1; // initialize to invalid arg
hr = spScript->Invoke(dispid, IID_NULL, 0, DISPATCH_METHOD, &dispparams, &vaResult, &excepInfo, &nArgErr);

delete[] dispparams.rgvarg;
if(FAILED(hr))
{
#ifdef _DEBUG
? ShowMessage(GetSystemErrorMessage(hr));
#endif
? return false;
}

if(pVarResult)
{
? *pVarResult = vaResult;
}

return true;
}

/* */
CComPtr<IHTMLDocument2> __fastcall TIEInvoke::FindIE(void)
{
HANDLE?? HWND = FindWindow("IEFrame", NULL);
if(HWND == NULL)
{
? return NULL;
}

EnumChildWindows(HWND, (WNDENUMPROC) FindIEInst, (LPARAM) this);
return FIEDoc;
}

/* */
bool __fastcall TIEInvoke::GetTextInput(String textInputName, String &textInputValue)
{
CComPtr<IHTMLElementCollection> pAllColl;
HRESULT hr;
hr = FIEDoc->get_all((IHTMLElementCollection **) &pAllColl);
if(hr == S_OK)
{
? LONG?? length = 0;
? hr = pAllColl->get_length(&length);
? if(hr == S_OK)
? {
??? for(int i = 0; i < length; i++)
??? {
??? VARIANT varIndex;
??? varIndex.vt = VT_UINT;
??? varIndex.lVal = i;

??? VARIANT var2;
??? VariantInit(&var2);

??? IDispatch *pDisp;
??? hr = pAllColl->item(varIndex, var2, &pDisp);?? //Get an element
??? if(hr == S_OK)
??? {
????? IHTMLElement?? *pElem;
????? hr = pDisp->QueryInterface(IID_IHTMLElement, (void **) &pElem);
????? if(hr == S_OK)
????? {
??????? BSTR?? bstr;

??????? hr = pElem->get_tagName(&bstr);

??????? String?? strTag;
??????? strTag = bstr;

??????? String?? mStr = "";
??????? IHTMLInputTextElement *pUser;
??????? hr = pDisp->QueryInterface(IID_IHTMLInputTextElement, (void **) &pUser);
??????? if(hr == S_OK)
??????? {
??????? pUser->get_name(&bstr);
??????? mStr = bstr;
??????? if(mStr == textInputName)
??????? {
????????? WideString?? inputValue = "";
????????? pUser->get_value(&inputValue);
????????? textInputValue = inputValue;
????????? pUser->Release();
????????? pElem->Release();
????????? pDisp->Release();

????????? return true;
??????? }

??????? pUser->Release();
??????? }

??????? pElem->Release();
????? }

????? pDisp->Release();
??? }
??? }
? }
}

return false;
}

/* */
bool __fastcall TIEInvoke::SetDropDownSelect(String dropDownName, String dropDownValue)
{
return false;
}

/* */
bool __fastcall TIEInvoke::GetDropDownSelect(String dropDownName, String &dropDownValue)
{
return false;
}

/* */
bool __fastcall TIEInvoke::GetTextAreaInput(String textAreaInputName, String &textAreaInputValue)
{
CComPtr<IHTMLElementCollection> pAllColl;
HRESULT hr;
hr = FIEDoc->get_all((IHTMLElementCollection **) &pAllColl);
if(hr == S_OK)
{
? LONG?? length = 0;
? hr = pAllColl->get_length(&length);
? if(hr == S_OK)
? {
??? for(int i = 0; i < length; i++)
??? {
??? VARIANT varIndex;
??? varIndex.vt = VT_UINT;
??? varIndex.lVal = i;

??? VARIANT var2;
??? VariantInit(&var2);

??? IDispatch *pDisp;
??? hr = pAllColl->item(varIndex, var2, &pDisp);?? //Get an element
??? if(hr == S_OK)
??? {
????? IHTMLElement?? *pElem;
????? hr = pDisp->QueryInterface(IID_IHTMLElement, (void **) &pElem);
????? if(hr == S_OK)
????? {
??????? BSTR?? bstr;

??????? hr = pElem->get_tagName(&bstr);

??????? String?? strTag;
??????? strTag = bstr;

??????? String?? mStr = "";
??????? IHTMLTextAreaElement?? *pUser;
??????? hr = pDisp->QueryInterface(IID_IHTMLTextAreaElement, (void **) &pUser);
??????? if(hr == S_OK)
??????? {
??????? pUser->get_name(&bstr);
??????? mStr = bstr;
??????? if(mStr == textAreaInputName)
??????? {
????????? WideString?? inputValue = "";
????????? pUser->get_value(&inputValue);
????????? textAreaInputValue = inputValue;

????????? pUser->Release();
????????? pElem->Release();
????????? pDisp->Release();

????????? return true;
??????? }

??????? pUser->Release();
??????? }

??????? pElem->Release();
????? }

????? pDisp->Release();
??? }
??? }
? }
}

return false;
}

/* */
void __fastcall TIEInvoke::SetIEDoc(CComPtr<IHTMLDocument2> value)
{
FIEDoc = value;
}

/* */
CComPtr<IHTMLDocument2> __fastcall TIEInvoke::GetIEDoc(void)
{
return FIEDoc;
}

/* */
String __fastcall TIEInvoke::GetSystemErrorMessage(DWORD dwError)
{
String?? strError;
LPTSTR?? lpBuffer;

if
(
? !FormatMessage
??? (
??? FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
??? NULL,
??? dwError,
??? MAKELANGID(LANG_NEUTRAL, SUBLANG_SYS_DEFAULT),
??? (LPTSTR) & lpBuffer,
??? 0,
??? NULL
??? )
)
{
? strError = "FormatMessage Netive Error";
}
else
{
? strError = lpBuffer;
? LocalFree(lpBuffer);
}

return strError;
}

/* */
void __fastcall TIEInvoke::SetIEHandle(HANDLE value)
{
FIEHandle = value;
}

/* */
HANDLE __fastcall TIEInvoke::GetIEHandle(void)
{
return FIEHandle;
}

?

使用例子:
代碼:
TIEInvoke *ie = new TIEInvoke();
CComPtr<IHTMLDocument2> IEDoc = ie->FindIE();
String???? subject = "郵件主題";

//ie->SetTextInput("TextBoxSubject", subject);
//ie->GetTextInput("TextBoxFromEmail", subject);
//ie->SetTextAreaInput("TextBoxDescription",subject);
//ie->GetTextAreaInput("TextBoxDescription",subject);
TStringList *args = new TStringList();
args->Add("2");
args->Add("3");

CComVariant *pVarResult = new CComVariant();
ie->CallJs("add", args, pVarResult);

int result = pVarResult->intVal;
delete pVarResult;
pVarResult = NULL;
delete args;
args = NULL;
delete ie;
ie = NULL;
ShowMessage(result);

總結

以上是生活随笔為你收集整理的(BCB) CComPtrIHTMLDocument2 FIEDoc;的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 激情影院内射美女 | 性喷潮久久久久久久久 | 欧美成人中文字幕 | 亚洲免费不卡视频 | 鲁丝一区二区三区 | 操操影视 | av女优天堂网 | 2019亚洲男人天堂 | 欧美午夜精品理论片a级按摩 | 午夜剧场免费看 | 精品国产一区二区三区性色 | 久久国产精品免费视频 | 波多野结衣一区二区三区 | mm视频在线观看 | 九色91popny蝌蚪新疆 | 日韩欧美精品一区二区 | 精品人伦一区二区三区蜜桃网站 | 香蕉av网 | 四虎4hu永久免费网站影院 | 久久99精品国产麻豆婷婷 | 99热热99| 91免费短视频 | 在线免费av网站 | 中文字幕在线视频免费播放 | 9久9久9久女女女九九九一九 | 国产大片一区 | 欧美激情国产日韩精品一区18 | 成人午夜精品一区二区 | 亚洲欧美一区二区三区在线观看 | 国产又黄又粗 | 亚洲久久久 | 刘亦菲毛片一区二区三区 | 日本激情视频一区二区三区 | 欧美野外猛男的大粗鳮 | 日韩一级性| 男人天堂a在线 | 国产经典久久 | 久久久久久午夜 | 欧美亚洲网站 | 精品欧美在线 | 亚洲欧美色图在线 | 国产精选在线 | 日韩视频精品在线 | 曰韩av | 麻豆蜜桃wwww精品无码 | 黄色一级片免费 | 封神榜二在线高清免费观看 | 国产乱国产乱老熟 | 欧美性生活一区二区 | 国产婷婷色一区二区三区 | 亚州国产精品 | 中文字幕在线观看视频网站 | av无码一区二区三区 | 对白超刺激精彩粗话av | 成人免费看片'在线观看 | 超碰福利在线观看 | 欧美一级片观看 | 青青操视频在线观看 | 亚洲欧美一区二区精品久久久 | 亚洲精品小说 | 91一区| 国产在线播放一区二区三区 | aaa一级片 | 欧美偷拍精品 | 人人射影院 | 老女人综合网 | 午夜寂寞少妇 | 在线观看成人小视频 | 求免费黄色网址 | 国产精品久久综合 | 狠狠干中文字幕 | 国产一级黄色 | 久久国产精品久久国产精品 | 啪在线视频 | 国产精品成人国产乱一区 | 日本免费色视频 | 中文字幕第31页 | 综合在线一区 | 热久久在线 | 久久久久久天堂 | 亚洲av电影天堂男人的天堂 | 国产91在线播放精品91 | 国内精品小视频 | 姑娘第5集高清在线观看 | 国产精品激情偷乱一区二区∴ | 成人免费福利视频 | 99久久婷婷国产综合精品 | 欧美国产另类 | 日韩精品人妻无码一本 | freesex性hd公交车上 | 福利视频导航网 | 成人国产精品久久久 | 精品无码一区二区三区的天堂 | 懂色av中文一区二区三区天美 | 小说肉肉视频 | 狠狠操天天干 | 成人观看| 欧美brazzers| 亚洲欧美日韩成人 |