一个验证码图片 怎么粘贴到剪切板上呢
验证码html 如下<img src="/code/bin/verify/captcha.php" width="114" height="40" onClick='this.src="/code/bin/verify/captcha.php?n="+Math.random();' alt="一个验证码图片 如何粘贴到剪切板上呢">
他是没有名字的 我找到的验证码放到剪贴板上的代码是
IHTMLElementCollection *objAllElement=NULL;
IHTMLDocument2 *objDocument=NULL;
CComPtr <IDispatch> pDisp;
objDocument=(IHTMLDocument2 *)m_IE.get_Document();
objDocument->get_all(&objAllElement);
HRESULT hr = E_FAIL;
IHTMLDocument2* pDoc = NULL;
IHTMLElement* pelmBody = NULL;
IHTMLElement2* pelmBodyTwo = NULL;
IDispatch* pdispImgElement = NULL;
IDispatch* pdispCtrlRange = NULL;
IHTMLElementCollection* pColl = NULL;
IHTMLControlElement* pCtrlElement = NULL;
IHTMLControlRange* pCtrlRange = NULL;
BSTR bstrCommand = SysAllocString(L"Copy");
VARIANT_BOOL vbReturn;
VARIANT vEmpty;
VariantInit(&vEmpty);
IHTMLDocument2 *pDispDoc=NULL;
pDispDoc=(IHTMLDocument2 *)m_IE.get_Document();
if (pDispDoc == NULL)
goto Cleanup;
if (FAILED(pDispDoc->QueryInterface(IID_IHTMLDocument2, (void**) &pDoc)))
goto Cleanup;
if (FAILED(pDoc->get_all(&pColl)))
goto Cleanup;
if (FAILED(pColl->item(COleVariant( _T("random_img")), COleVariant((long)0), &pdispImgElement))
|| pdispImgElement == NULL)
goto Cleanup;
if (FAILED(pDoc->get_body(&pelmBody)) || pelmBody == NULL)
goto Cleanup;
if (FAILED(pelmBody->QueryInterface(IID_IHTMLElement2, (void**) &pelmBodyTwo))
|| pelmBodyTwo == NULL)
goto Cleanup;
if (FAILED(pelmBodyTwo->createControlRange(&pdispCtrlRange))
|| pdispCtrlRange == NULL)
goto Cleanup;
if (FAILED(pdispCtrlRange->QueryInterface(IID_IHTMLControlRange, (void**) &pCtrlRange))
|| pCtrlRange == NULL)
goto Cleanup;
if (FAILED(pdispImgElement->QueryInterface(IID_IHTMLControlElement, (void**) &pCtrlElement))
|| pCtrlElement == NULL)
goto Cleanup;
hr = pCtrlRange->add(pCtrlElement);
if (SUCCEEDED(hr))
hr = pCtrlRange->execCommand(bstrCommand, VARIANT_FALSE, vEmpty, &vbReturn);
pCtrlElement->Release();
hr = S_OK;
Cleanup:
SysFreeString(bstrCommand);
if (pCtrlRange)
pCtrlRange->Release();
if ( IsClipboardFormatAvailable(CF_BITMAP) )
{
HWND hwnd;
CRect rc;
if (OpenClipboard())
{
HBITMAP hbm = (HBITMAP)GetClipboardData(CF_BITMAP);
m_picture.SetBitmap(hbm);
m_picture.Invalidate();
CloseClipboard();
}
}
其中一段是错误的 我知道 是用验证码的名字获取,可是验证码没有名字怎么获取呢?
if (FAILED(pColl->item(COleVariant( _T("random_img")), COleVariant((long)0), &pdispImgElement))
|| pdispImgElement == NULL)
这句 怎么写呢 怎么获取验证码呢?
[解决办法]
没做过,帮顶
[解决办法]
楼主是想识别图片的验证码?用opencv,具体步骤google
[解决办法]
验证码能这么轻易获取,那验证码就失去意义了。
一般验证码图片是在服务器端合成的图片,只能获得图片,很难获得验证码的文字。
[解决办法]
先下载这个图片,再打开这个图片,转为bmp,复制到剪贴板就完了
[解决办法]
用IE组件来得到图片是个不好的办法,因为如果你知道图片的URL,就可以直接下载
[解决办法]
对你这个流程很感兴趣。背景和重要的文字是分离的吧。是在服务器根据客户点击随机合成还是别的方式?
生成文件没有名字?
感觉困难不仅涉及到网页层面。
[解决办法]
小溪一下!
莫非楼主想偷梁换柱
[解决办法]
你标题是验证码图片,问题却是“怎么写呢 怎么获取验证码呢?”。这写的有点糊涂吧。
真实的验证码是被随机拼到图片背景中的。你只能下图片文件,需要知道验证码图片的文件名?
你是针对某个具体的网站?名字应该是确定的,但每次下的文件是不同的。
因为对你想做什么不了解,呵呵。