Welcome

首页 / 软件开发 / C++ / 获取信息的有关Windows API

获取信息的有关Windows API2008-01-051.窗口信息

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);

// 查询设备驱动器的当前状态;

QueryServiceConfig2(schDevice, SERVICE_CONFIG_DESCRIPTION, (LPBYTE)lpDeviceDescription, 8*1024, &dwBytesNeeded)