CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  进程/线程/DLL

如何在已知进程名称和id的情况下激活该进程对应的窗口?

楼主teddythebear(流氓熊)2004-11-01 19:44:31 在 VC/MFC / 进程/线程/DLL 提问

我用下面这段代码,取到了进程"3SConf.exe"的进程ID:  
   
  DWORD   dwProc[1024],   dwLen   =   0;  
  EnumProcesses(dwProc,   sizeof(dwProc),   &dwLen);  
  for   (DWORD   i   =   1;   i   <   dwLen   /   sizeof(DWORD);   i++)  
  {  
  HANDLE     hProc;  
  TCHAR       szProcessName   [256]   =   {0};  
  HMODULE   ahMod[10];  
  DWORD       dwNeeded;  
   
  hProc   =   OpenProcess   (PROCESS_ALL_ACCESS,FALSE,dwProc[i]);  
  if   (hProc)  
  {  
  if   (EnumProcessModules   (hProc,   ahMod,   sizeof(ahMod),   &dwNeeded))  
  {  
  if   (GetModuleBaseName(hProc,   ahMod[0],   szProcessName,   sizeof(szProcessName))){  
  if   (strcmp(szProcessName,_T("3SConf.exe"))==0)   {  
  EnumWindows(EnumWindowsProc,0);                          
  }  
  TRACE("Proc:   %ld   :%s\n",   dwProc[i],   szProcessName);  
  }  
  }  
  CloseHandle   (hProc);  
  }  
  }  
   
  其中EnumWindows(EnumWindowsProc,dwProc[i])是自己写的回调函数:  
   
  BOOL   CALLBACK   _stdcall   EnumWindowsProc(HWND   hWnd,LPARAM   lParam)  
  {  
   
        DWORD     ProcID     =     0;      
        GetWindowThreadProcessId(hWnd,&ProcID);      
        if(ProcID   ==   lParam)  
        {        
                HWND     pWnd   =   hWnd;  
                while(GetParent(pWnd)!=NULL)  
  pWnd     =     GetParent(pWnd);          
                SetActiveWindow(pWnd);  
        }      
        return   TRUE;  
  }  
   
  执行结果,能够在遍历到3SConf.exe的进程的时候进入回调函数,也能执行到SetActiveWindow这句话,可是并没有激活3SConf.exe的窗口,请问应该怎么写才对?  
   
  谢谢!  
  问题点数:50、回复次数:4Top

1 楼kingzai(stevenzhu)回复于 2004-11-01 19:53:55 得分 45

SetForegroundWindow  
  BringWindowToTop试一下  
  Top

2 楼ttzzgg_80713_()回复于 2004-11-01 20:11:10 得分 0

窗口调为前台不容易成功。我作个记号。你用楼上的试一下Top

3 楼oyljerry(【勇敢的心】→ ㊣提拉米苏√㊣)回复于 2004-11-01 21:59:06 得分 0

ShowWindow()Top

4 楼cx0928(阳光)回复于 2004-11-04 10:59:26 得分 5

BringWindowToTopTop

相关问题

  • 如何得到当前激活进程的ID?
  • 如何激活进程?
  • 如何根据一个进程的名称得到进程的ID和HANDLE啊?
  • 关于进程间激活的问题!
  • 请问如何通过任务管理器中的进程名称得到进程ID,急,坐等
  • 如何取得系统中所有的进程的名称或者id?
  • 怎样实现热键激活后台进程??
  • 如何激活一个已存在的进程?
  • 如何设置(或修改)当前进程的进程名称?
  • 使用ps命令,如何使用系统命令根据进程名称获取进程和子进程的ID?除了ps,还有其它系统命令的办法吗?谢谢。

关键词

  • 进程
  • dwproc
  • dwlen
  • dword

得分解答快速导航

  • 帖主:teddythebear
  • kingzai
  • cx0928

相关链接

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

广告也精彩

反馈

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