【c++】CHtmlView链接在本窗口中打开(类似于在另一个标签中打开)

代码实现: void C*****View::OnNewWindow2(LPDISPATCH* ppDisp, BOOL* Cancel) {  // TODO: Add your specialized code here and/or call the base class  CWinApp*   pApp   =   AfxGetApp();       //   Get   the   correct   document   template.     POSITION   pos   =   pApp-> GetFirstDocTemplatePosition();      CDocTemplate*   pDocTemplate   =   pApp-> GetNextDocTemplate(   pos   );       //   Create   a   new   frame.     CFrameWnd*   pFrame   =   pDocTemplate-> … Continue reading “【c++】CHtmlView链接在本窗口中打开(类似于在另一个标签中打开)”

【c++】CHtmlView屏蔽js脚本

实现代码: void C******View::OnNavigateComplete2(LPCTSTR strURL) {  // TODO: Add your specialized code here and/or call the base class    CComPtr<IDispatch>   spDisp   =   GetHtmlDocument();     if(spDisp!=NULL)      {         CComPtr<IHTMLDocument2> doc;         spDisp->QueryInterface(IID_IHTMLDocument2, reinterpret_cast<void**>(&doc));         if(doc != NULL)         {               IHTMLWindow2 * pIhtmlwindow2 = NULL;             doc->get_parentWindow(&pIhtmlwindow2);             if(pIhtmlwindow2 != NULL)             {//”function fnOnError(msg,url,lineno){alert(‘script error:\\n\\nURL:’+url+’\\n\\nMSG:’+msg +’\\n\\nLine:’+lineno);return … Continue reading “【c++】CHtmlView屏蔽js脚本”

【C++】CHtmlView屏蔽右键菜单以及选择功能实现

如下代码实现: int nVirtKey;  //屏蔽右键菜单  if ((pMsg->message == WM_RBUTTONDOWN) || (pMsg->message == WM_RBUTTONDBLCLK))              return TRUE;  //禁止招标标显示I型指针  HCURSOR curIbeam = LoadCursor( NULL, IDC_IBEAM );  if ( GetCursor() == curIbeam )  {  HCURSOR curArrow = LoadCursor( NULL, IDC_ARROW );    SetCursor( curArrow );  }  //禁止选择  if ( pMsg->message == WM_MOUSEMOVE )  {  nVirtKey = GetKeyState( VK_LBUTTON ); … Continue reading “【C++】CHtmlView屏蔽右键菜单以及选择功能实现”

【c++】全局钩子技术 – 监视打开的程序

注: dll文件 第一步: 定义全局钩子 HHOOK g_hHookShell; 第二步: LRESULT CALLBACK ShellHookProc(int nCode,WPARAM wParam,LPARAM lParam) { if (nCode == HSHELL_WINDOWCREATED)// Windows Created { //针对WH_SHELL的HSHELL_WINDOWCREATED,wParam传递的是打开创建的窗口名称,而lParam无效(0). //PostMessage(g_hWndMain,WM_SHELLHOOK,wParam,lParam); HWND m_hWnd = (HWND)wParam; char strTitle[256]; ::GetWindowText(m_hWnd,strTitle,1024); MessageBox(m_hWnd,strTitle,”提示:”,MB_OK); } return CallNextHookEx(g_hHookShell,nCode,wParam,lParam); } BOOL SetHook() { g_hHookShell = SetWindowsHookEx(WH_SHELL, ShellHookProc,GetModuleHandle(“QJHook”),0); return g_hHookShell ? TRUE : FALSE; } BOOL DestroyHook() { if (g_hHookShell == … Continue reading “【c++】全局钩子技术 – 监视打开的程序”

【c++】线程注入技术

代码如下: DWORD ProcID = (DWORD)GetDlgItemInt(IDC_EDIT_PID); //获得进程句柄 HANDLE ProcHandle = OpenProcess(PROCESS_ALL_ACCESS,FALSE,ProcID); //DLL路径 CString str=”E:\\项目\\插件制作\\软件\\hookdll\\test\\Debug\\test.dll”; //以可执行,可写,可读方式创建虚拟空间 LPVOID VirAddress = VirtualAllocEx(ProcHandle,NULL,strlen(str)+1,MEM_COMMIT,PAGE_EXECUTE_READWRITE); //写入空间 WriteProcessMemory(ProcHandle,VirAddress,(LPVOID)str.LockBuffer(),strlen(str)+1,NULL); HMODULE KHandle = LoadLibrary(“Kernel32.dll”); LPTHREAD_START_ROUTINE LBAddress = (LPTHREAD_START_ROUTINE)GetProcAddress(KHandle,”LoadLibraryA”); HANDLE remoteHandle = CreateRemoteThread(ProcHandle,NULL,NULL,LBAddress,VirAddress,NULL,NULL); WaitForSingleObject(remoteHandle,INFINITE); CloseHandle(remoteHandle); CloseHandle(ProcHandle); 取消注入: 取消的方法: FreeLibrary  以上一样

【c++】 vc6.0 sdk

微软已经不再对 VC6 支持了,最新的 SDK 已经不能在 VC6 上使用。但是还是可以找到支持 VC6 的最后两个版本: For Server2003 3790.0 RTM: Size (bytes): 342,000,000 Last Updated: February 2003 For XPSP2 2600.2180 RTM: Size (bytes): 266,000,000 Last Updated: August 2004 在这里感谢网友发现的下载地址: Platform SDK XP-SP2: http://www.microsoft.com/msdownload/platformsdk/sdkupdate/XPSP2FULLInstall.htm http://download.microsoft.com/download/platformsdk/sdk/update/WIN98MeXP/EN-US/2600.2180/FULL/PSDK-FULL.1.cab http://download.microsoft.com/download/platformsdk/sdk/update/WIN98MeXP/EN-US/2600.2180/FULL/PSDK-FULL.2.cab http://download.microsoft.com/download/platformsdk/sdk/update/WIN98MeXP/EN-US/2600.2180/FULL/PSDK-FULL.3.cab http://download.microsoft.com/download/platformsdk/sdk/update/WIN98MeXP/EN-US/2600.2180/FULL/PSDK-FULL.4.cab http://download.microsoft.com/download/platformsdk/sdk/update/WIN98MeXP/EN-US/2600.2180/FULL/PSDK-FULL.5.cab http://download.microsoft.com/download/platformsdk/sdk/update/WIN98MeXP/EN-US/2600.2180/FULL/PSDK-FULL.6.cab http://download.microsoft.com/download/platformsdk/sdk/update/WIN98MeXP/EN-US/2600.2180/FULL/PSDK-FULL.7.cab http://download.microsoft.com/download/platformsdk/sdk/update/WIN98MeXP/EN-US/2600.2180/FULL/PSDK-FULL.8.cab http://download.microsoft.com/download/platformsdk/sdk/update/WIN98MeXP/EN-US/2600.2180/FULL/PSDK-FULL.9.cab http://download.microsoft.com/download/platformsdk/sdk/update/WIN98MeXP/EN-US/2600.2180/FULL/PSDK-FULL.10.cab http://download.microsoft.com/download/platformsdk/sdk/update/WIN98MeXP/EN-US/2600.2180/FULL/Extract.exe http://download.microsoft.com/download/platformsdk/sdk/update/WIN98MeXP/EN-US/2600.2180/FULL/PSDK-FULL.bat Platform SDK February 2003: http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm http://download.microsoft.com/download/platformsdk/sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.1.cab http://download.microsoft.com/download/platformsdk/sdk/update/win98mexp/en-us/3790.0/FULL/PSDK-FULL.2.cab … Continue reading “【c++】 vc6.0 sdk”

【C#】应用IHTMLDocument2编程实现网页表单数据的自动提交

MSHTML是微软公司的一个COM组件,该组件封装了HTML语言中的所有元素及其属性,通过其提供的标准接口,可以访问指定网页的所有元素.MSHTML对象模型是由一些对象和集合组成的.处于根部的是HTML,描述了打开页面的1个窗口,包括一系列集合和对象。如Frames集合,History,Location,Navigator,Document,Vi—sum,Event对象等.其中描述呈现在客户窗口实际网页的是Document对象。由一系列的属性、方法、对象和集合组成.其中All集合中包含网页中所有标记(Tag)元素,其主要的方法和属性有: (1)Length(长度):即标记出现的个数,可以把标记的集合理解为从0开始的一维数组,其次序按照标记在网页位置排列; (2)Tags(标记):用于过滤出给定标记的集合,如Doc.Al1.Tags(P)得到所有分段标记P; (3)Item(项目):用于选择集合中的某1个元素,如object.item(0)得到集合的第1个元素,而object.item(i)得到第i+1个元素. 此外,IHTMLElement也是个常用的集合对象,代表网页中指定标记的集合,通过这个集合对象,可以得到网页上特定标记的内容.IHTMLElement有4个主要属性: (1)InnerText:开始标记和结束标记之间的文本; (2)InnerHTML:开始标记和结束标记之间的文本和HTML; (3)OuterText:对象的文本; (4)OuterHTML:对象的文本和HTML. C# 实现基本思路为:使用从CDHtmlDialog或者CHtmlView继承的类来创建一个浏览器窗口,并打开你指定的URL。 在DocumentComplete事件(虚函数)中获得浏览器容器的IHTMLDocument2接口(文档接口)。 从文档接口中扫描DOM树,寻找你希望的FORM元素。 扫描FORM中的各个IHTMLInputElement,如果是你希望赋值的,就执行IHTMLInputElement::put_Value()赋值。 调用IHTMLFormElement::submit()方法实现提交 C#例程: 使用ihtmldocument2的类去控制。 1、添加引用。 在COM中,选择Microsoft.mshtml 2、使用命名空间。 using mshtml; 3、具体代码。 IHTMLDocument2 doc = (IHTMLDocument2)this.webBrowser1.Document.DomDocument; mshtml.HTMLInputTextElement text1; text1 = (HTMLInputTextElement)doc.all.item( “username “, 0); ((mshtml.HTMLInputElement)(text1)).value = “warran “; //这里注意,因为是input输入框,所以要定义HTMLInputTextElement类 text1 = (HTMLInputTextElement)doc.all.item( “password “, 0); ((mshtml.HTMLInputElement)(text1)).value = “123456 “; mshtml.HTMLFormElement f1 = (mshtml.HTMLFormElement)doc.all.item( “form1 … Continue reading “【C#】应用IHTMLDocument2编程实现网页表单数据的自动提交”

【c++】怎样在MFC中调用C#编写的DLL

一、使用 /clr 编译 MFC 可执行文件或规则 DLL 1、打开“项目属性”对话框,方法是右键单击“解决方案资源管理器”中的项目并选择“属性”。 2、展开“配置属性”旁边的节点并选择“常规”。在右侧窗格中的“项目默认值”下,将“公共语言运行库支持”设置为“公共语言运行库支持 (/clr)”。 3、在相同的窗格中,确保将“MFC 的使用”设置为“在共享 DLL 中使用 MFC”。 4、在“配置属性”下,展开“C/C++”旁边的节点并选择“常规”。请确保将“调试信息格式”设置为“程序数据库 /Zi”(而不是“/ZI”)。 5、在“配置属性”下,选择“C/C++”,然后选择“代码生成”。请确保将“运行时库”设置为“多线程调试 DLL (/MDd)”或“多线程 DLL (/MD)”之一。 二、在代码引用需要的dll #using #using “DownloaFiles.dll” //换成需要的dll文件 using namespace System; using namespace CGistarMath;//换成dll中类所使用的namespace 三、在dll函数调用代码前加入#pragma managed 这是manage和unmanage混合编程在MFC下的一种实现方式。 以下是我自己碰到的问题的总结: 当我在声明一个变量的时候,是在.H文件的类里面声明: CGistarMath^ CSPro; 但是编译的时候会出现这个错误: error C3265: 无法声明托管“CSPro”(在非托管“CMathCPPDlg”中) 不能声明全局或静态变量,也不能声明引用 gc 堆中对象的本机类型成员 因此,我只能讲CGistarMath^ CSPro修改成 CGistarMath^ CSPro = gcnew CGistarMath();并且放入函数的实现当中,才将该问题解决,但是有个缺点就是需要使用到该DLL的函数都要自己生面一个对象,比较麻烦,也容易造成资源浪费。