Windows开发
文章平均质量分 90
基于C/C++的Windows应用程序开发技术,分享一下自己在学习过程中的一些经验。
encoderlee
十年码龄,专注于Web爬虫、区块链、逆向工程、游戏脚本、自动化、后端开发。如需联系我,关注公众号【挨踢老李】获取联系方式
展开
-
用游戏外挂的方式修复有道云笔记的BUG
由爱到痛有道云笔记是个好东西,在认识它之前,我一直使用Windows记事本来保存网上摘抄的文档资料和学习心得体会。某天朋友推荐了有道云笔记,我安装后就不可收拾的爱上了它。那种感觉,就好比一夜之间手扶拖拉机换成了奥迪Q7,从此驶上了码字界的康庄大道。可就在我对它的爱如火如荼的进行中时,一件痛心疾首的事情发生了。宋体,是我钟爱的字体,而有道云笔记钟爱的字体则是微软雅黑。就是那么一个兴趣爱好的不同,使我们原创 2017-04-22 08:12:30 · 5569 阅读 · 9 评论 -
VC与JavaScript交互(三) ———— JS调用C++
太监的原因: 时隔两年,VC与JavaScript交互系列的最后一篇关于JavaScript如何调用c++的文章终于出炉了。为什么会隔了那么久?因为本来打算太监的,可是看到热情的网友们的眼神,从期望变成了失望,在我的心里激起了层层波澜。两年后的今天,还是坚持把它写了出来。其实当时刚写完VC与JavaScript交互(二)的时候,参考网上的资料,已经把JavaScript调用c++原创 2016-03-26 14:06:37 · 26596 阅读 · 23 评论 -
Win8.1+VS2013+WDK8.1+VirtualBox or VMware 驱动开发环境配置
开发Windows驱动,我选择的环境是Win8.1+VS2013+WDK8.1+VirtualBox。理由如下:①开发机器和测试机器均安装Win8.1,其中开发机器安装的是64位Win8.1,测试机器安装的是32位Win8.1。为什么装Win8.1?因为我平时电脑上装的就是Win8.1,Win10太新,WinXP太老。所以Win7和Win8.1是最合适的,当然以下环境配置,对于Win7和Win原创 2016-03-16 14:56:40 · 18901 阅读 · 32 评论 -
Windows驱动开发如何入门
搞Windows驱动开发是一件痛苦的事情,特别是初学Windows驱动开发。有的人觉得Windows驱动开发就是把开发包WDK下载下来,然后只要掌握了C/C++语言,接下来无非就是类库调来调去,像调用MFC、QT之类的库那样,看着书和MSDN上的文档来就行了。等真正接触以后才发现根本不是那么一回事,痛苦源于以下几点:痛苦一:中文资料太少讲Windows驱动开发的,无论是中文书籍还是原创 2016-03-16 14:55:36 · 40393 阅读 · 11 评论 -
CreateProcess的前两个参数究竟怎么用
CreateProcess是Windows下用于创建进程的API函数,其第一个参数为lpApplicationName,从字面意思上看应该是一个可执行文件的名字,第二个参数为lpCommandLine,从字面意思上看应该是一个启动进程时传给程序的命令行。实际上并没有想象中的那么简单,MSDN上关于该API的这两个参数的说明,长达两屏幕。何耐这些说明都是纯英文的,包括我在内的很多程序员英文都不好,一原创 2015-02-26 22:58:57 · 7667 阅读 · 1 评论 -
Wininet、WebBrowser编程中如何管理Cookie
用VC++访问网页,一般都是用微软提供的Wininet、WinHTTP(基于HTTP协议)或WebBrowser(加载整个网页)。当然还有libcurl之类的第三方类库,因为暂时没接触过,就不说了。在使用上述三种方式访问网页的编程过程中,默认情况下是由它来管理Cookie,但有时候程序员想手工干预,比如清除Cookie、修改Cookie、添加Cookie。在网上搜索了一下,大概有这么三种方法:原创 2013-12-19 12:34:22 · 12454 阅读 · 1 评论 -
开发WEB机器人的三种常用方法
我们在windows平台上写一些WEB机器人程序的时候,通常有三种方法。1.webbrowser一种是使用webbrowser控件加载网页,用MSHTML来操控整个网页,进行模拟填表、提交、点击、采集数据。这种方式开发起来比较简单。但由于需要加载整个页面,缺点是速度慢、效率不高,内存占用大,难以做成多线程并发。2.Winhttp一种是直接基于HTTP协议来做,分析出每一个填表、提交原创 2013-06-02 16:28:05 · 4638 阅读 · 0 评论 -
记一次WEB数据采集程序开发经历——对付简单的动态加载
自从学做网站账号批量注册机、图片批量下载器,开始接触HTTP协议,了解了基本的GET/POST请求等知识,于是便开始着手开发一些小东西了。WEB数据采集,很多人都在搞。据说搞WEB数据采集用JAVA会更方便,有很多现成的类库可用。可以说WEB数据采集这块,是C++的短板。我目前能想到的方法就是利用WinInet,这是一组关于Intelnet三大协议HTTP、FTP、Gopher的windows原创 2013-03-20 08:58:53 · 6063 阅读 · 1 评论 -
WebBrowser无法显示招商银行密码输入控件的问题
之前就看到CSDN论坛上有人提问,自己写的程序中的WebBrowser打开招商银行的登录页面后(https://pbnj.ebank.cmbchina.com/CmbBank_GenShell/UI/GenShellPC/Login/Login.aspx),无法显示密码输入控件,但是在IE中可以正常显示。不卖关子,先把解决方法告诉大家,相信有不少人在头疼这个问题。先把你手头的问题解决了,如果有兴趣再继续往下看解决这个问题的过程。1.如果你的程序是VC6.0、VC2003、VC2005写的,应该什么都不用原创 2014-06-13 13:53:45 · 15034 阅读 · 6 评论 -
VC与JavaScript交互(二) ———— 调用JS函数
VC调用无参JS函数VC调用有参JS函数VC传递数据给JS函数JS函数返回一个值给VCJS函数返回多个值给VC原创 2014-01-18 15:35:48 · 22810 阅读 · 40 评论 -
VC与JavaScript交互(一) ———— 如何实现
为什么要让VC与JavaScript交互?在Windows平台上用VC开发的程序,如何与JavaScript交互?关于WebBrowser:关于IDispatch:说了这么多COM对象,和VC调用JS有什么关系?原创 2014-01-18 15:35:26 · 25925 阅读 · 7 评论 -
将数组中的RGBA序列绘制出来——GDI、MFC_GDI、GDI+实现
如果你有一个字节数组,里面存放着R/G/B/A颜色值序列,如何将它所表示的图片绘制在窗口上呢?之前在论坛上看到有人提了这么一个问题:http://bbs.csdn.net/topics/390663627这个用GDI、MFC封装的GDI、GDI+均可实现。不过要注意的是GDI不支持透明通道A,透明通道A的值读进去以后不起作用。欲支持透明通道,应使用GDI+实现。GDI实现://原创 2013-12-10 13:03:29 · 4496 阅读 · 0 评论 -
WindowsAPI “奇葩”的函数传参方式
前段时间使用windows SDK中的wininet写http客户端。遇到了一些个”奇葩”的API函数,InternetSetOption和InternetQueryOption。看看MSDN上这两个API的函数原型:BOOL InternetSetOption( _In_ HINTERNET hInternet, _In_ DWORD dwOption, _In_ L原创 2013-08-01 19:34:17 · 9585 阅读 · 3 评论 -
Hello MFC 之疯狂注释版
回想刚刚学习MFC编程的时候,打开《MFC windows程序设计》这本书,书中给的第一段代码就是一个Hello MFC的小程序。看得我头大,书中讲解的很详细,几乎每行代码都给了解释。但解释归解释,我一行一行的琢磨这些代码,还是不知道它们是什么意思。于是我把代码一行一行的敲到了编译器里,并找着书上的讲解,给每行代码都标上了长长的、详细的注释。尽管有的注释写上去后我还是不懂,但总算完成了这个Hell原创 2013-05-31 19:47:37 · 2422 阅读 · 1 评论 -
Hello Win32 之疯狂注释版
回想刚刚学习WIN32编程的时候,打开《windows程序设计》这本书,书中给的第一段代码就是一个Hello Win32的小程序。看得我头大,书中讲解的很详细,几乎每行代码都给了解释。但解释归解释,我一行一行的琢磨这些代码,还是不知道它们是什么意思。于是我把代码一行一行的敲到了编译器里,并找着书上的讲解,给每行代码都标上了长长的、详细的注释。尽管有的注释写上去后我还是不懂,但总算完成了这个Hell原创 2013-05-31 19:35:14 · 2084 阅读 · 1 评论 -
windows消息机制的有趣发现(二)
3.一个有窗口和窗口过程函数但没有消息循环的程序一个程序,如果我们创建了窗口,也定义了窗口过程函数,但是没有建立消息循环会怎样呢?我们在win32控制台项目下编写如下代码:#include #define WM_TEST 10000LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); void main(){ static原创 2013-04-01 19:59:37 · 2990 阅读 · 1 评论 -
windows消息机制的有趣发现(一)
最近琢磨windows的消息机制,发现一些有趣的地方,可能是对的,也可能是错的,分享出来让大家评判评判。1:每个线程都有消息队列不仅仅是有窗口的线程,没有窗口的线程也有消息队列!编写一个win32控制台程序,代码如下:#includevoid main(){ DWORD dwThread = GetCurrentThreadId(); ::PostThreadMessa原创 2013-04-01 19:28:32 · 2788 阅读 · 1 评论 -
C++处理UTF8编码的字符串
在windows下打开一个记事本,保存文件,下面有四种编码选择:①ANSI,也就是多字节字符集,在中文系统下约等于GB2312。②Unicode,就是UTF16 LE,小端序存储的UTF16。③Unicode big endian ,就是UTF16 BE,大端序存储的UTF16。④UTF8,网页上很多都是用UTF8,UTF8用1-4个字节来编码所有的字符,英文只需要1个 字节,中文原创 2013-03-26 21:57:50 · 27375 阅读 · 1 评论 -
解析SendMessage和PostMessage的区别
从MSDN上的说明来看,PostMessage将消息寄送到目标消息队列后立即返回。所以返回值是布尔型,只有成功和不成功。而SendMessage把消息寄送过去以后,要等目标窗口的窗口过程函数处理完,return一个值以后才返回。怎么理解呢。这样来说把,有AB两个线程,B线程是UI线程,有一个窗口。A线程用SendMessage给B线程的窗口发送了一个消息,B线程接收到消息后调用对应的窗口过程函数来原创 2013-03-24 14:57:35 · 2359 阅读 · 0 评论 -
MFC通过URL下载并保存文件代码
我们知道,windows有关网络连接的API在wininet.h里,而在MFC里,这些API被封装成了类。CInternetSession类:直接继承自CObject类,该类用来建立与某个Internet服务器的会话CInternetConnection类:帮助用户管理与Internet服务器的连接,同时还提供一些函数完成和响应服务器的通信CInternetConnection类又派生原创 2013-03-12 23:32:22 · 11270 阅读 · 9 评论 -
MFC递归搜索文件函数代码
自己写了一个MFC下的搜索文件的函数,递归遍历各级子目录搜索,对大小写不敏感。递归是个好东西啊,用递归写出来的东西往往代码简短,但不容易理解,并且容易出错,要多加注意。此函数毕竟只是个代码不足30行的小东西。目前存在缺点:不支持通配符*?等。后续将改进。 调用示例:CStringArray aStrFile; int i = CFindFile(_T("D:\\"),_T("qq.原创 2013-03-08 00:35:24 · 4363 阅读 · 0 评论 -
winSDK编程与MFC编程的区别
可以发现MFC的很多成员函数除了和API函数名字几乎相同之外,有个不同之处就是MFC的函数不需要句柄这个参数,它用对象指针代替了句柄。一开始我还以为这样的话MFC就只能操作它自己本身的东西,不能操作它外部其它程序的东西,因为要操作其它程序的窗口的话需要用到其它程序的窗口的句柄,而MFC的函数不需要句柄作参数。比如winSDK编程,可以用FindWindow函数获取IE浏览器的句柄,然后用SendM原创 2013-01-23 13:18:45 · 4565 阅读 · 0 评论 -
MFC程序运行时注册自身所需要的COM组件
我们可以在网上找到很多开发好的COM组件,这些组件提供了接口,我们可以对其进行二次开发,比如mp3play.ocx,通过这个控件,我们可以简单快速开发出自己的MP3播放器,COM组件可以是.ocx后缀,也可以是.dll后缀。熟悉VB开发的同志们对这些控件应该很熟悉吧。这些控件不仅可以用在VB中,同样可以用在VC等开发环境中。在使用该控件时应该保证该电脑上已经注册了该控件。通常,我们都是通过安装原创 2012-12-27 19:23:44 · 3704 阅读 · 1 评论 -
GDI绘图中的映射模式CDC::SetMapMode()
在GDI绘图前,一般要设置映射模式。映射模式是什么呢?它是逻辑长度单位与实际长度单位的一中转换关系,比如我要画一个长为800单位,宽为600单位的矩形,那么在不同的映射模式下,一个单位可能相当于一个像素,也可能相当于一毫米,也可能相当于一微米。也就是说在有的映射模式下,我们指定的800单位的长度相当于800像素,在有的映射模式下,我们指定的800单位的长度相当于800毫米,等等…..我们来看一原创 2012-12-06 13:27:03 · 5937 阅读 · 1 评论