MFC关闭进程和更改已知标题窗口的标题

//关闭一个进程 int KillProcess(LPCSTR pszClassName, LPCSTR pszWindowTitle) {  HANDLE hProcessHandle;  DWORD nProcessID;  HWND TheWindow;

 TheWindow = ::FindWindowA(NULL, pszWindowTitle);  ::GetWindowThreadProcessId(TheWindow, &nProcessID);  hProcessHandle = ::OpenProcess(PROCESS_TERMINATE, FALSE, nProcessID);

 return ::TerminateProcess(hProcessHandle, 4); }

 
void C多开Dlg::OnBnClickedButton1()
{
 // TODO: Add your control notification handler code here
 KillProcess(NULL, "某进程窗口标题");
 HWND h = ::FindWindow(NULL, "某窗口标题");
 if (h)
 {
  UpdateData(true);
  if (m_ChangeGameCaption.GetBuffer() != NULL)
  {
   ::SetWindowText(h, m_ChangeGameCaption);
  }
 }
}

1一般游戏为Laucher和client组成,Laucher设置了互斥Mutex无法多开,可以通过TerminateProcess关闭它。对于检测同名窗口防止多开,可以更改窗口标题。

2还可以通过遍历内核对象查找属于某进程的Mutex并关闭对应的句柄(CloseHandle)达到多开的目的。

3对于建立锁文件防多开的情况,一是找到锁文件做修改,二是拷贝游戏到另一个目录。

4调试程序到防多开的关键代码,跳过检测代码也可以实现。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值