CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

怎么获得进程的句柄

楼主muziling(木子岭)2004-12-03 17:50:21 在 VC/MFC / 基础类 提问

比如进程里有flashget.exe进程,怎么获得他的句柄,  
  可不可以详细点回答,我很菜的。谢谢 问题点数:20、回复次数:18Top

1 楼danyueer(淡月儿:从此以后,各人得各人的眼泪罢了)回复于 2004-12-03 17:52:36 得分 5

OpenProcessTop

2 楼danyueer(淡月儿:从此以后,各人得各人的眼泪罢了)回复于 2004-12-03 17:55:39 得分 0

调用序列:  
   
  1   CreateToolhelp32Snapshot创建快照  
  2   Process32First和Process32Next,轮询找到你的目标进程,获取其ID  
  3   用OpenProcess打开,获得进程句柄  
   
  具体函数用法可以参考MSDN,此处从略。Top

3 楼oyljerry(【勇敢的心】→ ㊣提拉米苏√㊣)回复于 2004-12-03 18:41:21 得分 0

月儿mm都讲了  
  OpenProcessTop

4 楼muziling(木子岭)回复于 2004-12-03 18:50:30 得分 0

OpenProcess里有个PID参数,但是这个参数在每次重启的时候有可能会不同啊Top

5 楼songtitan(雨霖)回复于 2004-12-03 18:58:32 得分 15

DWORD   GetFlashget()  
  {  
  HANDLE   m_handle=::CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);  
  PROCESSENTRY32*   Info   =   new   PROCESSENTRY32;  
  Info->dwSize   =   sizeof(PROCESSENTRY32);  
  if(::Process32First(m_handle,Info))  
  {  
  while(::Process32Next(m_handle,Info)!=FALSE)  
  {  
  CString   ss;  
  ss=Info->szExeFile;  
  ss.MakeLower();  
  if(ss.Find("flashget")   !=   -1)  
  {  
  return   Info->th32ProcessID;  
  }  
  }  
  ::CloseHandle(m_handle);  
  if(Info)  
  {  
  delete   Info;  
  }  
  }  
  return   -1;  
  }Top

6 楼koko1998(高价购买火车票)回复于 2004-12-03 19:34:11 得分 0

gzTop

7 楼muziling(木子岭)回复于 2004-12-03 19:43:15 得分 0

D:\Utilities\UtilitiesDlg.cpp(178)   :   error   C2039:   'CreateToolhelp32Snapshot'   :   is   not   a   member   of   '`global   namespace''  
  D:\Utilities\UtilitiesDlg.cpp(178)   :   error   C2065:   'CreateToolhelp32Snapshot'   :   undeclared   identifier  
   
  晕,编译的时候出这样的问题Top

8 楼songtitan(雨霖)回复于 2004-12-03 20:14:37 得分 0

你#include   "stdafx.h"了吗?Top

9 楼muziling(木子岭)回复于 2004-12-03 20:29:19 得分 0

我建的是MFC   EXE工程,默认已经包含了Top

10 楼songtitan(雨霖)回复于 2004-12-03 20:35:09 得分 0

哦,是MFC咯,那再加上这个就可以了:(经过测试,绝对可以:))  
  #include   "tlhelp32.h"Top

11 楼muziling(木子岭)回复于 2004-12-03 20:45:03 得分 0

真的,可以了,谢谢了  
  HANDLE和HWND怎么转,现在要对flashget操作,比如最大化。  
  提示“cannot   convert   parameter   1   from   'void   *'   to   'struct   HWND__   *'”  
  是不是(HWND)m_handle就可以了?Top

12 楼songtitan(雨霖)回复于 2004-12-03 20:48:03 得分 0

哦,对了,你是获得句柄,那还要这样获得:  
  HANDLE   hFlashget=HANDLE   OpenProcess(PROCESS_ALL_ACCESS,FALSE,Info->th32ProcessID);  
  //Info->th32ProcessID就是上面代码获得的进程ID  
   
  :)Top

13 楼songtitan(雨霖)回复于 2004-12-03 20:56:12 得分 0

你要获得窗口句柄的话,用这个啊  
  HWND   hWnd=   FindWindow(NULL,"flashget");  
  至于通过进程句柄怎么来拿窗口句柄,我还没想到有什么方法可以.....Top

14 楼muziling(木子岭)回复于 2004-12-03 21:13:04 得分 0

FindWindow(NULL,"flashget");这里的FLASHGET就是指我们在进程里看到的进程名吗,不过好像不是  
  吧。Top

15 楼songtitan(雨霖)回复于 2004-12-03 21:17:52 得分 0

不是进程名,是窗口名!  
  详细的参考MSDNTop

16 楼muziling(木子岭)回复于 2004-12-03 21:20:31 得分 0

HWND   hWnd=   FindWindow(NULL,"flashget")  
  好像要HWND   hWnd=   ::FindWindow(NULL,"flashget")编译才通得过。  
  我通过::SendMessage(hWnd,   SC_MAXIMIZE,   0,   0);没办法让他最大化??  
  Top

17 楼muziling(木子岭)回复于 2004-12-03 21:23:40 得分 0

有些比如游戏,一运行就最大化,看不到他的窗口名,这时候怎么办Top

18 楼songtitan(雨霖)回复于 2004-12-03 21:29:26 得分 0

用SPY++看他Top

相关问题

  • vb中怎么获得一个句柄的进程或线程
  • 获得句柄怎么做?
  • 模糊查找进程,获得Excel进程句柄.获得标题不定进程的句柄?
  • 请问如何通过进程ID获得进程句柄?
  • 请问怎么根据进程句柄得到进程名
  • 怎么样从进程句柄得到它对应的窗口的句柄????
  • 怎么获得 TreeViewItem 的父句柄
  • 怎么获得TDatabase的Handle(句柄)?
  • 怎么获得该控件的句柄?
  • 请教:如何获得正在运行的进程的句柄

关键词

  • null
  • 句柄
  • 进程
  • flashget
  • th32processid
  • createtoolhelp
  • 获得
  • findwindow
  • hwnd
  • processentry

得分解答快速导航

  • 帖主:muziling
  • danyueer
  • songtitan

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo