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

如何获得自己进程的HANDLE值和正确的id值?

楼主nobounded(风)2004-12-01 13:45:37 在 VC/MFC / 进程/线程/DLL 提问

我想在应用程序中获得自己的进程HANDLE   和ID但是HANDLE   总是-1,这是怎么回事?MFC程序。 问题点数:0、回复次数:8Top

1 楼kingzai(stevenzhu)回复于 2004-12-01 13:50:59 得分 0

use   GetWindowThreadProcessId   can   get   handle   id   from   main   hwnd.  
  then   call   OpenProcess   can   get   handle.  
  what   is   your   code?Top

2 楼vcleaner(我没当大哥很久了.......)回复于 2004-12-01 13:51:29 得分 0

你是怎么获得的?Top

3 楼vcleaner(我没当大哥很久了.......)回复于 2004-12-01 13:52:51 得分 0

参考:  
  void   CInstallUserDLLApp::EndProgram(CString   strExeName)  
  {  
  CString   strExeNameToFind   =   strExeName;  
  HANDLE   SnapShot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);  
  if(SnapShot==NULL)  
  {  
  //MessageBox("检测当前进程失败!");  
  return   ;  
  }  
  SHFILEINFO   shSmall;  
  CString   str,strTemp;  
  PROCESSENTRY32   ProcessInfo;//声明进程信息变量  
  ProcessInfo.dwSize=sizeof(ProcessInfo);//设置ProcessInfo的大小  
  //返回系统中第一个进程的信息  
  BOOL   Status=Process32First(SnapShot,&ProcessInfo);  
  int   m_nProcess=0;  
  DWORD   m_ProcessID=0;  
  while(Status)  
  {  
  m_nProcess++;  
  ZeroMemory(&shSmall,sizeof(shSmall));  
  //获取进程文件信息  
  SHGetFileInfo(ProcessInfo.szExeFile,0,&shSmall,  
  sizeof(shSmall),SHGFI_ICON|SHGFI_SMALLICON);  
   
  strTemp=ProcessInfo.szExeFile;  
  strTemp.MakeUpper();  
  strExeNameToFind.MakeUpper();  
  if(strTemp.Find(strExeNameToFind,0)   >=   0)  
  {  
  m_ProcessID=ProcessInfo.th32ProcessID;  
  break;  
  }  
  //获取下一个进程的信息  
  Status=Process32Next(SnapShot,&ProcessInfo);  
  }  
  //   TODO:   Add   extra   validation   here  
  if(m_ProcessID!=0)  
  {  
  HANDLE   hProcess=   OpenProcess(   PROCESS_ALL_ACCESS,   FALSE,   m_ProcessID);  
  if(::TerminateProcess(hProcess,1))  
  {  
  //AfxMessageBox("   The   process   has   been   successfully   killed",MB_OK);  
  ;  
  }  
  }  
  }Top

4 楼ppiy3670()回复于 2004-12-01 13:54:38 得分 0

GetCurrentProcess   得到但前进程的HANDLE。  
   
  GetCurrentProcessId   得到当前进程的ID。Top

5 楼vcleaner(我没当大哥很久了.......)回复于 2004-12-01 13:56:22 得分 0

DWORD   GetWindowThreadProcessId(  
      HWND   hWnd,                           //   handle   to   window  
      LPDWORD   lpdwProcessId     //   address   of   variable   for   process   identifier  
  );  
   
  hWnd   =   (CMainFrame   *)AfxGetMainWnd()->GetSafeHwnd();    
  Top

6 楼nobounded(风)回复于 2004-12-01 14:17:53 得分 0

GetCurrentProcess   返回-1  
   
  GetCurrentProcessId   返回一个值,被验证是不对的。  
   
  我试试你们提供的建议。  
  Top

7 楼DentistryDoctor(不在无聊中无奈,就在沉默中变态)回复于 2004-12-01 14:54:07 得分 0

GetCurrentProcess   返回-1  
   
  GetCurrentProcessId   返回一个值,被验证是不对的。  
   
  不曾碰到过。Top

8 楼DentistryDoctor(不在无聊中无奈,就在沉默中变态)回复于 2004-12-01 14:54:33 得分 0

如果可以,倒可以看看你的工程。Top

相关问题

  • 进程ID的值的转换
  • 如何根据一个进程的名称得到进程的ID和HANDLE啊?
  • win2k中,已知一个进程的id 或 handle , 如何获得它的父进程的id 或handle ?
  • 怎样用进程的ID得到他的handle
  • 当有某进程的ID或此进程某窗口的句柄handle时,如何得到此进程的application的句柄handle?
  • 在本进程中如何得到进程ID,也就是在2000的任务管理器中的那个值
  • 请教:使用API,如何根据进程的HANDLE或ID,获得该进程的线程数量?(不用Tool Help创建快照)
  • 锁/进程ID的疑惑
  • 根据进程HANDLE获取进程对应的文件名?
  • 知道一个进程的ID/HANDLE/FileName,怎么取得它在内存中的映像文件地址?!

关键词

  • 信息
  • processinfo
  • shsmall
  • 进程
  • 值
  • strexenametofind
  • snapshot
  • getcurrentprocessid
  • strtemp
  • 返回

得分解答快速导航

  • 帖主:nobounded

相关链接

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

广告也精彩

反馈

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