2024年3月14日发(作者:)

1.窗口信息

MS为我们提供了打开特定桌面和枚举桌面窗口的函数。

hDesk=OpenDesktop(lpszDesktop,0,FALSE,DESKTOP_ENUMERATE);

//打开我们默认的Default桌面;

EnumDesktopWindows(hDesk,(WNDENUMPROC)EnumWindowProc,0);

//枚举打开桌面上的所有窗口,由回调函数实现。

BOOL __stdcall EnumWindowProc(HWND, LPARAM);

//在回调函数中,我们可以获得窗口的标题和相关进程,线程信息;

GetWindowText(hWnd,szWindowText,dwMaxCount);

GetWindowThreadProcessId(hWnd,&dwPID);

2.设备驱动器信息(服务和设备驱动器差不多,在此不做重复)

设备驱动信息有服务控制管理器(SCM)来管理的,我要打开服务控制管理器,并枚

举所有的设备驱动器。

OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);

//以所有权限打开服务控制管理器;

EnumServicesStatus(schManager,dwDeviceType,dwDeviceState,

EnumStatus,dwBufSize,&dwBytesNeeded,

&dwDevicesReturned,&dwResumeHandle))

//枚举所有设备的当前状态;

CloseServiceHandle(schManager);

//记住,在结束访问后要关闭服务句柄;

OpenService(schManager,szDeviceName,SERVICE_ALL_ACCESS);

//打开特定的设备驱动器;

QueryServiceConfig(schDevice,lpDeviceConfig,

1024*8,&dwBytesNeeded);

//查询驱动器的服务配置信息;

QueryServiceStatus(schDevice,&DeviceStatus);