枚举桌面窗口并获取进程信息

原创 2015年11月17日 17:00:13
#include <Windows.h>
#include <Psapi.h>
#include <iostream>

#pragma comment(lib, "psapi.lib")
using namespace std;

BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
{
	if (GetParent(hwnd) == NULL && IsWindowVisible(hwnd))
	{
		char WindowText[100] = {0};
		::GetWindowTextA(hwnd, WindowText, 100);
		if (strlen(WindowText) != 0)
		{
			std::cout << WindowText <<std::endl;
			char szClassName[100] = {0};
			::GetClassNameA(hwnd, szClassName, 100);
			cout<< szClassName <<endl;
			DWORD dwPID = 0;
			GetWindowThreadProcessId(hwnd, &dwPID);
			cout<< "PID: "<<dwPID <<endl;
			HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwPID);
			cout<< "PHandle: "<<hProcess<< endl;

			HMODULE hMod = NULL;
			DWORD dwcbNeeded = 0;
			if (EnumProcessModules(hProcess, &hMod, sizeof(hMod), &dwcbNeeded))
			{
				char szPath[MAX_PATH] = {0};
				GetModuleFileNameA(hMod, szPath, MAX_PATH);
				cout<< szPath << endl;
				GetModuleFileNameExA(hProcess, hMod, szPath, MAX_PATH);
				cout<< szPath<<std::endl <<endl;;
			}
			CloseHandle(hProcess);
		}
	}
	return TRUE;
}
int _tmain(int argc, _TCHAR* argv[])
{
	EnumWindows(EnumWindowsProc, 0);

	system("pause");
	return 0;
}



另外上面的代码中在获取进程模块路径时用到的GetModuleFileNameA和GetModuleFileNameExA两个API获取路径不同, 第一个只能获取本进程的模块路径,包括主路径和dll路径(比如 kernel32.dll)。 

第二个可以获取用OpenProcess打开的进程句柄的路径。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

EnumWindows-枚举桌面窗口

  • 2017-02-07 16:55
  • 175KB
  • 下载

Android获取应用信息判断网络连接返回桌面及卸载apk结束进程等的实现思路

获取应用信息 获取应用名 /** * 根据应用包名获取应用名 * @param context * @param appPackageName * @return 返回应用名,不存...

VC++ 枚举进程模块信息

  • 2012-09-14 17:13
  • 46KB
  • 下载

枚举进程加获取qq号

  • 2017-05-22 19:23
  • 28KB
  • 下载

枚举Android系统的进程、任务和服务的信息

转载自:http://www.cnblogs.com/crazypebble/archive/2011/03/29/1999151.html 一、简介   在Android Marke...

枚举Android系统的进程、任务和服务的信息

http://www.cnblogs.com/crazypebble/archive/2011/03/29/1999151.html 一、简介   在Android Market上,不...

枚举Android系统的进程,任务和服务的信息

一、简介   在Android Market上,不乏各种各样的手机管理软件,360手机安全软件,QQ手机安全助手,开机自启动管理软件,等等之类的~这些软件给我的一个感觉是,做手机管理软件的都很NX,...

枚举进程信息

1.PSAPI法 #include #include #include #include "psapi.h" #pragma comment ( lib, "psapi.lib" ) i...
  • evi10r
  • evi10r
  • 2011-09-02 10:58
  • 2467

基于visual c++之windows核心编程代码分析(19)枚举进程以及进程加载模块信息

我们进行Windows安全编程的时候,经常需要检测进程,我们来实践一下枚举进程与进程加载模块。请见代码实现与注释分析。  /* 头文件 */ #include #include #include ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)