Windows编程tips
介绍Windows编程的一个基础知识以及一些技巧应用
liuwons
混,也是一种追求
展开
-
关于Windows更新窗口内容的问题
Windows中的窗口在特定情况下会由系统进行重绘,如无效区域重新显现时,,会向窗口的处理过程发送VM_PAINT消息,但是,可能还有Windows自己的更新窗口处理,如在下面的代码中,将击键显式地转换为VM_PAINT消息,让窗口过程处理,但是运行的结果却是,击键后窗口没有马上重绘(显示字体没有改变),而是在下次重绘时才改变字体,但是如果改变为一个UpdateWindow()函数时,就会马上改变原创 2012-04-03 00:24:04 · 19637 阅读 · 0 评论 -
关于Visual Studio2010字符集的问题
今天在用Visual Studio写C时,出现了不能正常显示的问题,然后做了个小实验,代码如下: 实验结果:static WCHAR f=L'你'; 这里f采集到的是一个2字节的数据20320('你'的Unicode码),而如果用 static WCHAR f='你'; 采集到的数据是50403(你的GBK码),而显示时如果用的L则正常显示“你”,不用L则不能正常显示。用T原创 2012-04-04 11:15:46 · 22248 阅读 · 3 评论 -
用NASM写DOS16位应用程序
今天用nasm写dos下的.exe十六位应用程序,用nasm -f obj输出OMF格式的obj文件,然后尝试用golink链接,结果不支持omf格式,再用LINK,将OMF转化为COFF时出错,最后还是按照nasm文档上的说明下载了个ALINK,终于成功链接产生16位exe文件,在dosbox中成功运行。原创 2012-04-26 00:34:49 · 20176 阅读 · 0 评论 -
Windows下获取逻辑cpu数量和cpu核数量
代码可在Windows NT下正常运行具体API说明请参照如下文档:GetLogicalProcessorInformation点击打开链接点击打开链接点击打开链接typedef BOOL (WINAPI *LPFN_GLPI)(PSYSTEM_LOGICAL_PROCESSOR_INFORMATION, PDWORD);DWORD CountSet原创 2014-03-26 18:47:14 · 30683 阅读 · 0 评论 -
关于编译后dll中的函数名
msvc在编译dll时,如果函数声明采用__declspec(dllexport) int add(int,int)的形式,dll中的函数名会是?add@@YAHHH@Z这种形式的。 如果使用如下这种声明,dll中的函数名才会和C++中的函数名一致,为add。extern "C"{DLLTEST_API int add(int, int);}原创 2014-04-18 10:23:34 · 20139 阅读 · 0 评论 -
Qt实现Windows远程控制
用Qt实现的Windows平台远程控制软件,包含源代码和编译后可以运行的程序,服务器端(被控端)为进程形式,客户端(主控端)为图形界面程序。客户端在连接时要设置服务器端的ip地址以及要显示的长度和宽度(不能超过服务器端屏幕分辨率)。原创 2014-04-30 23:29:16 · 35757 阅读 · 22 评论 -
为编写的Windows程序提升权限
1.要求以管理员身份运行 在vs工程属性中,Linker ---> Manifest File---> UAC Execution Level,选择requireAdministrator (/level='requireAdministrator')选项 2.在main函数开始时运行以下函数代码:BOOL WINAPI EnablePriv原创 2014-05-21 11:09:27 · 24868 阅读 · 0 评论 -
Windows中openProcess函数返回ERROR_ACCESS_DENIED的解决方法
主要是权限不足引起的。需要提升程序的权限。具体提升方式参照以下文章:Windows程序权限提升原创 2014-05-21 11:12:44 · 26258 阅读 · 0 评论 -
Windows下通过写注册表的方式实现程序开机自启动
程序可以读取同目录下的config.ini文件中的配置来实现开机自启动。config.ini文件地格式实例如下:[Main]KeyName = testProcessPath = D:\bin\test.exe其中KeyName字段为写入注册表的表项名称(可以设置为程序名)ProcessPath为程序的完整路径程序的完整源代码如下。regedit原创 2014-05-23 12:32:10 · 22682 阅读 · 0 评论 -
Windows进程间互斥锁
Windows的互斥锁Mutex是可以在进程间使用的。 CreateMutex时可以指定一个mutex名称,此名称可以被其他进程或线程使用。CreateMutex的第二个参数BOOL bInitialOwner表示在创建后是不是立刻获取此锁,相当于立即WaitForSingleObject。 OpenMutex打开一个已经创建了的mutex。 WaitForSingl原创 2014-06-10 17:12:33 · 29772 阅读 · 0 评论 -
用WindowsAPI截屏并转换为RGB格式
在Windows下捕获屏幕图像可以有多重方法,比较简单可以调用第三方库,如Qt的屏幕截屏API就很容易调用。在这里介绍如何用Windows API实现截屏并转换成RGB格式存储。#include //最终f的内存布局为BGRA格式,需要保证buf长度足够(>w*h*4)void ScreenCap(void* buf, int* w, int* h){ HWND h原创 2015-05-13 09:06:43 · 23370 阅读 · 0 评论