Windows
文章平均质量分 67
狐帝
山不在高,有仙则名;窝不怕破,有狐则灵。
展开
-
制作可被svchost调用的服务(下)
上一篇简要介绍了如何制作一个可被svchost调用的服务,本篇介绍如何使得这个服务可以被svchost识别并调用。svchost会到注册表的HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost项中搜索其子项,每一个子项都是一个svchost服务组,svchost项有很多键值,每个键对应一个服务组,其值是该服务组下所有的服务所以,首先要决定我们自己的服务放在哪个服务组里,这里假设是netsvcs组。在nets原创 2021-05-23 12:49:12 · 782 阅读 · 0 评论 -
制作可被svchost调用的服务(上)
一个被svchost调用的服务应该做成DLL,所以必须定义DLLMain函数,做为动态库的入口。DLLMain的代码框架如下:BOOL APIENTRY DllMain(HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved){ switch (ul_reason_for_call) { case DLL_PROCESS_DETACH: // 将服务状态设置为SERVICE_CONTROL_原创 2021-05-23 10:51:47 · 962 阅读 · 3 评论 -
利用Win32 API获取当前登录用户名的几种方法比较
方法一:使用GetUserName函数。GetUserName可以获得创建当前进程的用户名,其函数原型是:BOOL GetUserNameA(LPSTR lpBuffer, LPDWORD pcbBuffer);其中,lpBuffer指向存放用户名的字符数组,pcbBuffer在调用之前需要赋予lpBuffer指向的缓冲区的长度,调用完成后会返回用户名的长度。代码示例如下:string getLoginUsernameByApi(){ char username[1024];原创 2021-05-02 15:36:27 · 4054 阅读 · 0 评论 -
Windows下双显示器截屏方法
网上的Windows环境下截屏的源代码很多,但是看到的都是只能适应单显示器,无法截取桌面扩展到双显示器情况下的完整屏幕。过查找资料和摸索,发现问题的关键就在于正确获得截屏的长宽尺寸。通常,计算屏幕实际大小可以用:HWND hWnd = GetDesktopWindow();RECT re;GetWindowRect(window, &re);int width = re.rig...原创 2020-04-08 18:43:14 · 6134 阅读 · 0 评论 -
将Eclipse CDT+MinGW配置成开发WIndows GUI程序的IDE环境
在Windows平台上,Eclipse CDT + MinGW是很好的C/C++开发IDE,不过默认的配置只能用来编写控制台模式的WIndows程序,无法开发GUI程序,最大的障碍就是默认配置无法编译GUI程序需要的.rc文件,而.rc文件中包含了诸多GUI程序所需的图形控件。不过MinGW是带有Resource Compiler的(windres.exe),但是CDT却无法调用MinGW的资源编...原创 2020-02-16 11:23:26 · 752 阅读 · 0 评论 -
Eclipse CDT编译Windows资源文件(.rc文件)
折腾了很久终于弄明白如何在Eclipse CDT环境中编译Windows编程所需的资源文件了。步骤如下:1. 在project中加入资源文件resources.rc,然后鼠标右击该文件,在弹出菜单中选择“proterties”,如下图所示:2. 在对话框中找到"C/C++ Builder"->"Tool Chain Editor"页面,在右下方的"Select tool"下拉框中...原创 2020-02-15 22:19:50 · 849 阅读 · 2 评论