快速业务通道

获取信息的有关Windows API

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-06-30

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

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

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

// 查询设备的描述信息;

StartService(schDevice, 0, NULL);

// 启动设备;

ControlService(schDevice, SERVICE_CONTROL_STOP, &DeviceStatus);

// 停止设备;

DeleteService(schDevice);

// 删除设备;

3.磁盘信息

我们希望获得系统所有磁盘的信息,包括软盘,硬盘,光盘等等;

GetLogicalDriveStrings(dwBufferLength, lpBuffer);

// 获得逻辑设备的信息;

GetVolumeInformation(lpRootPathName, lpVolumeNameBuffer, dwVolumeNameSize, &dwVolumeSerialNumber,

&dwMaximumComponentLength, &dwFileSystemFlags, lpFileSystemNameBuffer, dwFileSystemNameSize);

// 获得磁盘卷信息,包括卷名称和格式类型;

GetDiskFreeSpaceEx(lpRootPathName, &FreeBytesAvailable, &TotalNumberOfBytes, &TotalNumberOfFreeBytes);

// 探测磁盘的空间使用情况;

4.环境变量

我们可以从注册表中获得环境块的信息:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment,当然要使用注册表的函数。

RegOpenKeyEx(HKEY_LOCAL_MACHINE, RegKey, 0, KEY_QUERY_VALUE, &hKey);

// 打开注册表的键;

RegEnumValue(hKey, dwIndex, EnvironVariable, &dwVariableLength, NULL, NULL, NULL, NULL);

// 查询我们需要的信息值;

GetEnvironmentVariable(EnvironVariable, EnvironString, 1024);

// 获得环境变量的字符串信息;

5.事件记录信息

OpenEventLog(NULL, szLog);

// 打开时间日志记录;

GetOldestEventLogRecord(hEvent, &dwThisRecord);

// 获得最新的日志信息,以便继续查找;

ReadEventLog(hEvent, EVENTLOG_FORWARDS_READ │ EVENTLOG_SEQUENTIAL_READ,

0, pEventLogRecord, 1024 * 32, &dwRead, &dwNeeded);

// 读去日志信息;

LookupAccountSid(NULL, pSid, szName, &dwName, szDomain, &dwDomain, &SNU);

// 获取账户的SID,以便获得账户的用户名称;

GetNumberOfEventLogRecords(hEvent, &dwTotal);

// 获得事件日志的总数;

CloseEvent

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号