系统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; }解决 无用评论 打赏 举报