系统API函数EnumDesktopsA如何使用呢
其中有一个参数是函数回调地址,不知道怎么写

系统API函数EnumDesktopsA如何使用(语言-c++)
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- P2441M 2023-05-15 09:22关注
你可以看看官方文档:https://learn.microsoft.com/zh-cn/windows/win32/api/winuser/nf-winuser-enumdesktopsa。
这个函数会枚举与调用进程的指定窗口站(window station)关联的所有桌面,其原型如下:BOOL EnumDesktopsA( [in, optional] HWINSTA hwinsta, [in] DESKTOPENUMPROCA lpEnumFunc, [in] LPARAM lParam ); typedef BOOL (CALLBACK* DESKTOPENUMPROCA)(LPSTR, LPARAM);
hwinsta
:这个参数指向了要被枚举所有桌面的窗口站的句柄。此句柄必须由CreateWindowStation
、GetProcessWindowStation
或OpenWindowStation
函数返回,且具有WINSTA_ENUMDESKTOPS
访问权限;若指定此参数为 NULL,则使用当前窗口站;lpEnumFunc
:这个回调函数用于接受枚举结果。回调函数语法如下:
其中,BOOL CALLBACK EnumDesktopProc( LPSTR lpszDesktop, LPARAM lParam );
lpszDesktop
就是指向桌面名称的字符串;lParam
:有应用程序定义的量,也将传递给回调函数。
举个例子吧:
#include <windows.h> #include <cstdio> BOOL CALLBACK MyEnumDesktopProc(LPSTR lpszDesktop, LPARAM lParam) { printf("桌面名称: %s\n", lpszDesktop); return TRUE; } int main() { HWINSTA hwinsta = GetProcessWindowStation(); if (!hwinsta) return 1; if (!EnumDesktopsA(hwinsta, MyEnumDesktopProc, 0)) return 1; return 0; }
解决 无用评论 打赏 举报