#include <TlHelp32.h>

//根据进程名获取进程ID
BOOL GetPidByProcessName(TCHAR *pProcess, DWORD*dwPid)
{
HANDLE hSnapshot;
PROCESSENTRY32 lppe;
//创建系统快照
hSnapshot = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL); if (hSnapshot == NULL)
return FALSE; //初始化 lppe 的大小
lppe.dwSize = sizeof(lppe); //查找第一个进程
if (!::Process32First(hSnapshot, &lppe))
return FALSE;
do
{
if(_tcscmp(lppe.szExeFile, pProcess) == 0)
{
*dwPid = lppe.th32ProcessID;
}
}
while (::Process32Next(hSnapshot, &lppe)); //查找下一个进程 return TRUE;
} //根据进程ID获取窗口句柄
HWND GetHwndByPid(DWORD dwProcessID)
{
//返回Z序顶部的窗口句柄
HWND hWnd = ::GetTopWindow(0); while ( hWnd )
{
DWORD pid = 0;
//根据窗口句柄获取进程ID
DWORD dwTheardId = ::GetWindowThreadProcessId( hWnd,&pid); if (dwTheardId != 0)
{
if ( pid == dwProcessID )
{
return hWnd;
}
}
//返回z序中的前一个或后一个窗口的句柄
hWnd = ::GetNextWindow(hWnd , GW_HWNDNEXT); }
return hWnd;
}
 
 
 

typedef struct
{
 HWND hWnd;
 DWORD dwPid;
}WNDINFO;
 
BOOL CALLBACK EnumWindowsProc(HWND hWnd, LPARAM lParam)
{
 WNDINFO* pInfo = (WNDINFO*)lParam;
 DWORD dwProcessId = 0;
 GetWindowThreadProcessId(hWnd, &dwProcessId);
 
 if(dwProcessId == pInfo->dwPid)
 {
  pInfo->hWnd = hWnd;
  return FALSE;
 }
 return TRUE;
}
 
HWND GetHwndByProcessId(DWORD dwProcessId)
{
 WNDINFO info = {0};
 info.hWnd = NULL;
 info.dwPid = dwProcessId;
 EnumWindows(EnumWindowsProc, (LPARAM)&info);
 return info.hWnd;
}

C++获取进程号及窗口的更多相关文章

  1. 通过awk获取netstat命令中的进程号

    需要如下: 获取进程号

  2. python获取进程id号:

    python获取进程id号: os.getpid()获取当前进程id os.getppid()获取父进程id

  3. python 获取进程pid号

    #-*- encoding:UTF-8 -*- import os import sys import string import psutil import re def get_pid(name) ...

  4. linux将程序扔到后台并获取程序的进程号

    我们经常需要写一些执行时间较长的程序,但是如果在程序执行过程中超时了,有许多原因,可能是程序已经挂起了,这时就需要杀死这样的进程,则可以通过如下的命令执行: java -jar TestProcess ...

  5. CMD魔法堂:获取进程路径和PID值的方法集

    一.前言    在开发发布更更新工具——更新Weblogic应用模块时,了解到更新Weblogic应用需要先关闭Weblogic应用窗口然后是清缓存.更新应用文件,最后再重启Weblogic应用窗口. ...

  6. C#根据进程名称获取进程的句柄?

    C#根据进程名称获取进程的句柄或C#如何获取其他进程的句柄? 有时候标题名是动态变化的,所以不使用FindWindow方法! [StructLayout(LayoutKind.Sequential)] ...

  7. Linux常用获取进程占用资源情况手段

    测试环境:Ubuntu14.04 1.  获取进程ID号 ps -aux | grep your_process_name 例如: xxx@xxx:~$ ps -e |grep Midlet|awk ...

  8. win7命令行 端口占用 查询进程号 杀进程

    打开CMD窗口 win+R–>cmd 根据端口号查找进程号 netstat -nao|grep 端口号 根据进程号得到进程名 tasklist |findstr 进程号 杀进程 taskkill ...

  9. linux shell 获取进程pid

    1.通过可执行程序的程序名称 a.运行程序 b.获取进程id号 c.pidof相关知识:http://www.cnblogs.com/yunsicai/p/3675938.html 2.有些程序需要在 ...

随机推荐

  1. mybatis处理查询map列表属性为null的问题,而导致查询map无该key对象

    1.常规处理方法(数据库以mysql为例) IFNULL(m.last_use_time,) ) ) as last_lat if判断是否为null,设置一个默认值. 2.前台jsp页面处理,判断是否 ...

  2. 报名|「OneAPM x DaoCloud」技术公开课:Docker性能监控!

    如今,越来越多的公司开始 Docker 了,「三分之二的公司在尝试了 Docker 后最终使用了它」,也就是说 Docker 的转化率达到了 67%,同时转化时长也控制在 60 天内. 既然 Dock ...

  3. swift循环

    ..< {     println(... {     println( ":"lala"] for (key,value)in dic {     println ...

  4. Java IO(四)

    对象序列化 对象序列化又叫对象的持久化,对象的串行化(或反串行化) 当使用Serializable接口实现序列化操作时,如果一个对象中的某个属性不希望被序列化,则可以使用transient关键字进行声 ...

  5. Yarn上的几个问题整理

    原文链接   http://xiguada.org/yarn_some_question/ ‎   1. NodeManager是如何Kill掉Container的呢? 答,在DefaultConta ...

  6. PHP 反射机制Reflection

    简介 PHP Reflection API是PHP5才有的新功能,它是用来导出或提取出关于类.方法.属性.参数等的详细信息,包括注释. class Reflection { } interface R ...

  7. javamail邮件中插入图片

    转载 http://duanmumu.blog.163.com/blog/static/1911133502012715104016481/ // TODO Auto-generated method ...

  8. iOS 库文件制作

    一.静态库和动态库的介绍 一.什么是库? 库是共享程序代码的方式,一般分为静态库和动态库. 二.静态库与动态库的区别? 静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝. 动态库:链 ...

  9. Android百度地图开发02之添加覆盖物 + 地理编码和反地理编码

    下面来看一下地图上覆盖物的添加,以及地理编码和反地理编码. 添加覆盖物 在地图上添加覆盖物,一般需要以下几个步骤: 1. 定义坐标点,有可能是一个,有可能是多个(比如:多边形覆盖物). 2. 构造Ov ...

  10. 关于strlen

    strlen的实现是通过4个字节4个字节进行枚举,然后通过位运算来判断这4个字节中是否有一个字节含有0,这样的话,效率就提高了4倍. 这个效率提高是假设a&b&c&d与a&am ...