在mfc程序中激活另一个已存在的程序

在主程序上添加了调用另一个辅助工具程序的按钮,每按一次都会打开一个新的辅助工具程序实例,这样看起立很别扭。舒服一些的作法应该是:在已经打开一个程序实例的情况下,激活这个实例;在没有已打开实例的情况下,创建一个新实例。创建新实例很简单,就不多说了。这里说一下激活已存在的程序实例的方法。

//回调函数,被传送给EnumWIndows做参数

BOOL CALLBACK EnumWindowProc(HWND hWnd, LPARAM lParam)
{
 DWORD dwPID;
 GetWindowThreadProcessId(hWnd, &dwPID);

 //进程ID相符
 if(lParam == dwPID)
 {
  HWND hSubWnd = ::GetLastActivePopup(hWnd);
  ::ShowWindow(hWnd, SW_SHOW);
  ::SetForegroundWindow(hSubWnd);

  return FALSE;
 }
 else
 {
  return TRUE;
 }
}

 

//调用该函数激活另一个程序实例,参数为另一个程序的进程ID,这个进程ID在创建进程时获得。

BOOL ActivateProcess(DWORD dwProcessID)
{
 return EnumWindows(EnumWindowProc, (LPARAM)dwProcessID);
}

 

在创建子进程时,注意保留其进程ID,当需要激活该进程时,调用ActivateProcess函数,将进程ID做参数传递过去,就可以激活该子进程了。效果就是子进程的窗口啪的一下跳到了最前面,很无聊吧?

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值