摘要: VC中的GetKeyState和GetAsyncKeyState的区别 VC中添加组合快捷键时,经常会用到函数GetKeyState或函数GetAsyncKeyState,但是这两个函数有什么区别呢?各自都该如何使用呢?从网上搜了一下,找到如下资料……………………………………………………………………………………………………………………………………………………使用::GetKeyState()返回一个short型的数,short型是16位有符号的数据类型,如果要查询的键被按下,返回值最高位被置1,则这个数表示负数,所以可以用0或0来判断。 0x8000是16进制数,用2进制表示为1000 0 阅读全文
posted @ 2011-01-27 02:57 alex618 阅读(8700) 评论(0) 推荐(0) 编辑
摘要: 实现步骤大家知道,每个Internet客户端程序都伴随有一定的目的行为,如读文件、写文件、删除文件等等。客户端的程序要实现这些行为的先决条件是建立Internet连接。然后再根据不同的目的进行具体的操作。为了方便起见,下面这这些张表格针对不同的应用行为列出了所需要的具体操作。其中列出了一般的Internet URL (FTP、或者 HTTP)客户端行为要实现某个目标所必须使用的方法。这张表格的内容来自MSDN。我对部分我认为重要的地方做了补充。(表一)一个典型的Internet客户端程序的处理流程 目的方法结果开始一个Internet session创建 CInternetSession 对象 阅读全文
posted @ 2011-01-27 02:56 alex618 阅读(8085) 评论(0) 推荐(2) 编辑
摘要: 1)READYSTATE r;HRESULT hr = IWebBrowser2::get_ReadyState(&r);if (SUCCEEDED(hr) && r == READYSTATE_COMPLETE) {...}2)if (SUCCEEDED(IWebBrowser2::Stop()) {...} -------------------------Navigate2后,可以查询组建状态,查询所使用的方法就是get_ReadyState。如果READYSTATE等于READYSTATE_COMPLETE,就说明Navigate2所请求的数据已经DOWNLOAD完成了。另外,还有个可 阅读全文
posted @ 2011-01-27 02:52 alex618 阅读(12811) 评论(1) 推荐(1) 编辑
摘要: 版权声明请尊重原创作品。转载请保持文章完整性,并以超链接形式注明原始作者“tingsking18”和主站点地址,方便其他朋友提问和指正。在Internet Explorer编程中,获取WebBrowser指针通常是一件很重要的事情,因为有了WebBrowser指针,我们就有了对IE完整的控制权。我们就可以对IE浏览器为所欲为了,想干什么都可以。比方说获取或者设置DOM控件的值。调用页面中的JavaScript,或者控制浏览器的行为 比方说刷新,前进、后退等等等等。。下面两篇文章中,我将介绍两种方法来获取IWebBrowser2指针。第一种使用OLEACC.dll动态库中的ObjectFromL 阅读全文
posted @ 2011-01-27 02:49 alex618 阅读(6834) 评论(0) 推荐(1) 编辑
摘要: 申明: 本文涉及到的技术只供参考研究之用,不可用于非法行为,本人不负责。A. 写在开始:继写了木马技术研究第一部分后, 我发现我的blog,PageRank上升了.最终发现中国的很多网站上摘抄我blog上的一些文章. 我写的东西很少,而能让别人摘抄, 怎么说也是一件荣幸的事. 这里只希望摘抄文章的朋友能够继续深入研究,为中国的反流反木马事业做点贡献. 我的文章能启到抛屎引玉的程度,那就可幸了.今天我要写的主题是反流技术之IE插件技术研究第一部分. google: IE插件技术, 结果是很多IE插件安装程序的下载...从而让人想到的是中国internet 网的现状. 流软横行的世界.3721 V 阅读全文
posted @ 2011-01-27 02:45 alex618 阅读(1074) 评论(0) 推荐(1) 编辑
摘要: 早些天,因项目需要做了一个自动登陆网站的ActiveX插件。主要功能就是通过这个插件启动一个IE实例或者使用插件所在的浏览器, 打一个网站(即通过Navigate导航),通过IHTMLDocument2接口找到相关元素,并填入相应的值,最后模拟点击登陆按钮,完成登陆。这种 方法简单,而且理论上属于模拟人工登陆,受限性比较小。但是它有一个缺点,就是有打开登陆页面,填入值的过程,没有直接进入登陆 后的页面看上去更自然。 再次查看MSDN,IWebBrowser2::Navigate声明: HRESULT Navigate( BSTR url, VARIANT *Flags, VARIANT *Ta 阅读全文
posted @ 2011-01-27 02:40 alex618 阅读(1275) 评论(0) 推荐(0) 编辑
摘要: 如何往IE工具条添加按钮问题提出:金山词霸、网络蚂蚁等软件安装后会向IE的工具条添加自己的按钮。按下按钮后还会作出相应的动作,这种功能是如何实现的呢?读完本文,您也可以将自己应用程序的按钮添加到IE的工具条中。基本原理:从IE5开始便允许我们向工具栏添加自己的按钮,其本质就是修改注册表,添加创建此按钮所需的信息。实现步骤:1.创建此按钮的GUID(globally unique identifier)你可以通过Visual Studio中的Guidgen.exe来产生GUID。例如我生成的GUID是{1FBA04EE-3024-11D2-8F1F-0000F87ABD16}以下的例子中我都使用 阅读全文
posted @ 2011-01-27 02:39 alex618 阅读(15230) 评论(0) 推荐(1) 编辑
摘要: 一.关键头文件: #include vs2005自带. VS 2008中由于将ALT项目的部分代码剥离出去成为了独立的开源项目,需要用到ALT中正则表达式等功能就需要手动下载。 参考:http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=306398 下载地址:http://www.co... 阅读全文
posted @ 2011-01-27 02:35 alex618 阅读(1463) 评论(0) 推荐(1) 编辑
摘要: #include #include #include #pragma comment(lib,"wininet.lib") void main() { DWORD byteread=0; char buffer[100]; memset(buffer,0,100); HINTERNET internetopen; internetopen=InternetOpen("Testing",INTER... 阅读全文
posted @ 2011-01-27 02:34 alex618 阅读(5017) 评论(0) 推荐(5) 编辑
摘要: 开发中的社区游戏,要求将原来的mini浏览器扩展成可以通过Http POST传输来打开网页,比如:通过提交用户id,password,用户的action(查看profile,查看日记,打开blog等等),从而在mini浏览器里打开相应的网页。具体实现是通过获取浏览器的IWebBrowser2指针,用该接口的Navigate2方法来实现,Navigate2在MSDN描述如下, HRESULT N... 阅读全文
posted @ 2011-01-27 02:31 alex618 阅读(7222) 评论(0) 推荐(0) 编辑
摘要: #include #include #include #pragma comment(lib,"wininet.lib") int main(void) { DWORD byteread=0; char buffer[100]; memset(buffer,0,100); HINTERNET internetopen; internetopen=InternetOpen("Testing",IN... 阅读全文
posted @ 2011-01-27 02:26 alex618 阅读(3806) 评论(0) 推荐(0) 编辑
摘要: 写VC程序时碰到一个定时器的问题,说明一下。SetTimer函数用于创建一个计时器,KillTimer函数用于销毁一个计时器。计时器属于系统资源,使用完应及时销毁。SetTimer的函数原型如下:UINT_PTR SetTimer( HWND hWnd, UINT_PTR nIDEvent, UINT uElapse,TIMERPROC lpTimerFunc ) ;其中hWnd是和timer关联的窗口句柄,此窗口必须为调用SetTimer的线程所有;如果hWnd为NULL,没有窗口和timer相关联并且nIDEvent参数被忽略nIDEvent是timer的标识,为非零值;如果hWnd为NU 阅读全文
posted @ 2011-01-27 01:59 alex618 阅读(1437) 评论(0) 推荐(0) 编辑
摘要: MMRESULTtimeSetEvent(UINTuDelay,UINTuResolution,LPTIMECALLBACKlpTimeProc,WORDdwUser,UINTfuEvent)uDelay:以毫秒指定事件的周期。Uresolution:以毫秒指定延时的精度,数值越小定时器事件分辨率越高。缺省值为1ms。LpTimeProc:指向一个回调函数。DwUser:存放用户提供的回调数据。FuEvent:指定定时器事件类型:TIME_ONESHOT:uDelay毫秒后只产生一次事件TIME_PERIODIC:每隔uDelay毫秒周期性地产生事件。微软公司在其多媒体Windows中提供了精 阅读全文
posted @ 2011-01-27 01:43 alex618 阅读(4498) 评论(0) 推荐(0) 编辑
摘要: 1.在COM组件中调用JavaScript函数 // 连接点方式页面javascript脚本 // 事件属性方式页面javascript脚本 function onState(s){ alert("onState(" + s + ")"); return 456; } var o = new ActiveXObject("TestATL.TestCom"); o.onstaTe=onSt... 阅读全文
posted @ 2011-01-27 01:42 alex618 阅读(6384) 评论(0) 推荐(0) 编辑
摘要: 获取HWND用API GetConsoleWindow,获取HINSTANCE使用GetModuleHandle(NULL)。 比如说: #include #include #include #include using namespace std; namespace dbsoft { class CSplashWindow { public: CSplashWindow( H... 阅读全文
posted @ 2011-01-27 01:42 alex618 阅读(5049) 评论(0) 推荐(0) 编辑
摘要: ATL包装了WINAPI中与创建和操作“窗口、对话框以及WINDOWS控制”有关的部分。ATL窗口类还包含了诸如子类化和超类化这样的高级特性。一、Windows应用程序的结构入口点——_tWinMain,它提供应用程序的HINSTANCE、命令行参数和指示如何显示主窗口的标志。调用RegisterClass注册主窗口类。调用CreateWindow创建主窗口。调用ShowWindow和UpdateWindow来显示主窗口。一个分发消息的消息循环。一个处理主窗口消息的过程。一组消息处理函数,用来处理窗口感兴趣的消息。调用DefWindowProc让Windows处理我们不感兴趣的消息。一旦主窗口 阅读全文
posted @ 2011-01-27 01:40 alex618 阅读(3771) 评论(0) 推荐(0) 编辑
摘要: 您试图与不兼容的库链接。重要事项 运行时库现在包含防止混合不同类型的指令。如果试图在同一个程序中使用不同类型的运行时库或使用调试和非调试版本的运行时库,则将收到此警告。例如,如果编译一个文件以使用一种运行时库,而编译另一个文件以使用另一种运行时库(例如单线程运行时库对多线程运行时库),并试图链接它们,则将得到此警告。应将所有源文件编译为使用同一个运行时库。有关更多信息,请参阅使用运行时库(/MD、/ML、/MT、/LD)编译器选项。可以使用链接器的 /VERBOSE:LIB 开关来确定链接器搜索的库。如果收到LNK4098,并想创建使用如单线程、非调试运行时库的可执行文件,请使用 /VERBO 阅读全文
posted @ 2011-01-27 01:39 alex618 阅读(31935) 评论(0) 推荐(2) 编辑
摘要: 目录:COM多线程原理与应用... 1目录:... 1前言:... 1套间:... 1套间的定义:... 1套间的分类:... 2套间的进入和退出:.. 2对象的同步:... 2组件对象的同步:... 2COM对象线程模型:.. 2进程内对象线程模型的种类:.. 2ATL对多线程的支持:.. 3对象引用的保护:... 3成员变量的保护:... 4前言:COM多线程一直是个不容易弄清的问题,我也被困扰了很久,特别是COM在线程方面的术语总是不能统一。本文是为了将我所学所用得做一个总结,本文不保证一定正确,但是会随着时间的推移逐渐完善改正。套间:套间的定义: 我个人认为COM技术内幕中关于 阅读全文
posted @ 2011-01-27 01:36 alex618 阅读(423) 评论(0) 推荐(0) 编辑
摘要: 什么是代理和存根 ? 打个比方,你到自动取款机上去取款;你就是客户,取款机就是你的代理;你不会在乎钱具体放在那里,你只想看到足够或更多的钱从出口出来(这就是com的透明性)。你同银行之间的操作完全是取款机代理实现。 你的取款请求通过取款机,传到另一头,银行的服务器,他也没有必要知道你在哪儿取钱,他所关心的是你的身份,和你取款多少。当他确认你的权限,就进行相应的操作,返回操作结果给取款机,取款机根据服务器返回结果,从保险柜里取出相应数量的钱给你。你取出卡后,操作完成。 取款机不是直接同服务器连接的,他们之间还有一个“存根”,取款机与存根通信,服务器与存根通信。从某种意义上说存根就是服务器的代 阅读全文
posted @ 2011-01-27 01:35 alex618 阅读(1275) 评论(0) 推荐(0) 编辑
摘要: 这阵子在搞一个activex的项目,发现dll型的输出控件比较难调试,导致我郁闷了几天了,调试不进去的话就定位不到错误,后面的工作就受阻了。试了好多种方法都不行,原来是不了解ie所致的。好像自从4.0以后,ie在我们打开一个网页时,会启动一个主的进程,和一个副进程,ie的调试器只touch到副进程是不行的,还得touch到主进程才可以。这个我也不确定是否正确,不过要使vs调试到activex工程里面去的话,我们还得按照下面的方法做。第一步:选择activex项目,打开项目属性,在“configuration properties”- “debugging”中的command 中选择ie浏览器 阅读全文
posted @ 2011-01-27 01:32 alex618 阅读(5241) 评论(0) 推荐(2) 编辑