分享

windows下编程常用API函数

 chen0818 2012-04-13
  1. 1.窗口信息
  2. MS 为我们提供了打开特定桌面和枚举桌面窗口的函数。
  3. hDesk=OpenDesktop(lpszDesktop,0,FALSE,DESKTOP_ENUMERATE);
  4. //打开我们默认的Default 桌面;
  5. GetWindowText(hWnd,szWindowText,dwMaxCount);//取得编辑框中的文字
  6. GetWindowThreadProcessId(hWnd,&dwPID);
  7. 2.磁盘信息
  8. 获得系统所有磁盘的信息,包括软盘,硬盘,光盘等等;
  9. GetLogicalDriveStrings(dwBufferLength,lpBuffer); //获得逻辑设备的信息;
  10. GetVolumeInformation(lpRootPathName,lpVolumeNameBuffer,
  11. dwVolumeNameSize,&dwVolumeSerialNumber,
  12. &dwMaximumComponentLength,&dwFileSystemFlags,
  13. lpFileSystemNameBuffer,dwFileSystemNameSize);
  14. //获得磁盘卷信息,包括卷名称和格式类型;

  15. GetDiskFreeSpaceEx(lpRootPathName,&FreeBytesAvailable,
  16. &TotalNumberOfBytes,&TotalNumberOfFreeBytes);
  17. //探测磁盘的空间使用情况;
  18. 3.环境变量
  19. 从注册表中获得环境块的信息:
  20. RegOpenKeyEx(HKEY_LOCAL_MACHINE,RegKey,0,KEY_QUERY_VALUE,&hKey);
  21. //打开注册表的键;
  22. RegEnumValue(hKey,dwIndex,EnvironVariable,
  23. &dwVariableLength,NULL,NULL,NULL,NULL);
  24. //查询我们需要的信息值;
  25. GetEnvironmentVariable(EnvironVariable,EnvironString,1024);
  26. //获得环境变量的字符串信息;
  27. 4.事件记录信息
  28. OpenEventLog(NULL,szLog);
  29. //打开时间日志记录;
  30. GetOldestEventLogRecord(hEvent,&dwThisRecord);
  31. //获得最新的日志信息,以便继续查找;
  32. ReadEventLog(hEvent,EVENTLOG_FORWARDS_READ │ EVENTLOG_SEQUENTIAL_READ,
  33. 0,pEventLogRecord,1024*32,&dwRead,&dwNeeded)
  34. //读取日志信息;
  35. LookupAccountSid(NULL,pSid,szName,&dwName,szDomain,&dwDomain,&SNU);
  36. //获取账户的SID,以便获得账户的用户名称;
  37. GetNumberOfEventLogRecords(hEvent,&dwTotal);
  38. //获得事件日志的总数;
  39. CloseEventLog(hEvent);
  40. //不要忘记关闭事件句柄;
  41. 5.网络共享
  42. NetShareEnum(NULL,dwLevel,(PBYTE
  43. *)&pBuf,MAX_PREFERRED_LENGTH,&entriesread,&totalentries,&resume);
  44. //列举所有的共享目录及相关信息;
  45. NetApiBufferFree(pBuf);//释放缓冲区;
  46. NetShareDel(NULL,(char *)lpShareNameW,0); //删除网络共享目录;
  47. 6.网络适配器信息
  48. 我们要探测NIC的信息和网络流量;
  49. GetAdaptersInfo(&AdapterInfo,&OutBufLen);
  50. //获取适配器信息;
  51. 7.系统性能
  52. 获取系统的存储器使用情况;
  53. GetPerformanceInfo(&PerfInfo,sizeof(PERFORMACE_INFORMATION))
  54. //获取系统性能信息;
  55. 8.进程/线程/模块信息
  56. 在此我们使用工具帮助函数(ToolHelp32)和系统
  57. OpenProcessToken(GetCurrentProcess(),TOKEN_QUERY │
  58. TOKEN_ADJUST_PRIVILEGES,&hToken);
  59. //打开进程的令牌,提升权限;
  60. AdjustTokenPrivileges(hToken,FALSE,&TokenPrivileges,sizeof(TOKEN_PRIVILEGES
  61. ),NULL,NULL);
  62. //将进程的权限提升到支持调试(Debug);
  63. CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
  64. //创建进程的快照;
  65. Process32First(hProcessSnap,&ProcessEntry32);
  66. //枚举所有进程;
  67. OpenProcess(PROCESS_QUERY_INFORMATION,FALSE,ProcessEntry32.th32ProcessID);
  68. //打开特定进程,以查询进程相关信息;
  69. GetProcessTimes(hProcess,&CreateTime,&ExitTime,&KernelTime,&UserTime);
  70. //获取进程的时间信息;
  71. GetProcessMemoryInfo(hProcess,&PMCounter,sizeof(PMCounter));
  72. //获取进程的存储区信息;
  73. GetPriorityClass(hProcess);
  74. //获取进程的优先权;
  75. GetProcessIoCounters(hProcess,&IoCounters);
  76. //获取进程的IO使用情况;
  77. CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwProcessID);
  78. //创建模块快照;
  79. Module32First(hModuleSnap, &ModuleEntry32);
  80. Module32Next(hModuleSnap, &ModuleEntry32);
  81. //枚举进程模块信息;

  82. CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0);
  83. //创建线程快照;

  84. Thread32First(hThreadSnap, &ThreadEntry32);
  85. Thread32Next(hThreadSnap, &ThreadEntry32);
  86. //枚举线程信息;

  87. OpenThread(THREAD_ALL_ACCESS,FALSE,ThreadEntry32.th32ThreadID);
  88. //打开线程,须自己获得此函数地址;

  89. TerminateProcess(hProcess,0);
  90. //终止进程;

  91. SuspendThread(hThread);
  92. //悬挂线程;

  93. ResumeThread(hThread);
  94. //激活线程;


  95. 9.关机
  96. AdjustTokenPrivileges(hToken,FALSE,&TokenPrivileges,sizeof(TOKEN_PRIVILEGES),NU
  97. LL,NULL);
  98. //调整进程令牌,使其支持关机;

  99. ExitWindowsEx(EWX_LOGOFF,0); //注销系统;

  100. LockWorkStation(); //锁定系统;

  101. InitiateSystemShutdown(NULL,szMessage,dwTimeout,FALSE,bSig);
  102. //支持到记时和消息显示的关机/重启;

  103. SetSystemPowerState(bSig,FALSE);//系统休眠;


  104. 10.用户信息
  105. NetUserEnum(NULL,dwLevel,FILTER_NORMAL_ACCOUNT,(LPBYTE*)&pBuf,
  106. dwPrefMaxLen,&dwEntriesRead,&dwTotalEntries,&dwResumeHandle);
  107. //枚举系统用户信息;

  108. NetUserDel(NULL,lpUserNameW); //删除指定用户;


  109. 11.系统版本信息
  110. GetVersionEx((LPOSVERSIONINFO)&osviex);//获取操作系统的版本信息;
  111. 也可以通过注册表(HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows
  112. NT\CurrentVersion)获取相关信息:

  113. GetTickCount();
  114. //获取开机时间;

  115. GetComputerName(szInfo,&dwInfo);
  116. //获取计算机名称;

  117. GetUserName(szInfo,&dwInfo);
  118. //获取计算机用户名;

  119. GetWindowsDirectory(szInfo,MAX_PATH+1);
  120. //获取Windows目录;

  121. GetSystemDirectory(szInfo,MAX_PATH+1);
  122. //获取系统目录;


  123. 12.文件操作
  124. DeleteFile(LPCTSTR lpFileName);
  125. //删除文件

  126. CopyFile(LPCTSTR lpExistingFileName,//存在的源文件
  127. LPCTSTR lpNewFileName,//要复制到的目标文件
  128. BOOL bFailIfExists
  129. )
  130. //拷贝文件

  131. MoveFile(LPCTSTR lpExistingFileName,//源文件
  132. LPCTSTR lpNewFileName//目标文件

  133. //移动文件

  134. CreateDirectory(LPCTSTR lpPathName,
  135. LPSECURITY_ATTRIBUTES lpSecurityAttributes)
  136. //创建目录

  137. RemoveDirectory(LPCTSTR lpPathName)
  138. //删除目录

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多