我写了个dll  注入了目标游戏进程
hook热键 来呼出窗口
   HINSTANCE hInstance = (HINSTANCE)::GetModuleHandle("dll.dll");
   ::DialogBoxA(hInstance, MAKEINTRESOURCE(IDD_DIALOG1),NULL, DialogProc);
呼出窗口后游戏就被切换出来了为什么呢   此时 跳出来后 此进程有两个窗口一个是游戏的  一个是我呼出来的然后我改了下 将窗口设为游戏窗口的子窗口HWND title; //游戏窗口句柄 
title =::FindWindowA("AlienShooter2 Reloaded",name);
HINSTANCE hInstance = (HINSTANCE)::GetModuleHandle("dll.dll");
::DialogBoxA(hInstance, MAKEINTRESOURCE(IDD_DIALOG1),title, DialogProc);
这样呼出后同样会被切换出来  为什么呢..
我该怎么做才不会被切换出来呀...

解决方案 »

  1.   

    楼上的兄弟  我在问题中说了
    HWND title; //游戏窗口句柄  
    title =::FindWindowA("AlienShooter2 Reloaded",name);
    HINSTANCE hInstance = (HINSTANCE)::GetModuleHandle("dll.dll");
    ::DialogBoxA(hInstance, MAKEINTRESOURCE(IDD_DIALOG1),title, DialogProc);
    这样呼出后同样会被切换出来 为什么呢..窗口已经是游戏窗口的子窗口了的呀
    应该是游戏窗口失去焦点后就会被跳出来
    我试过把窗口改成 子级Child  没有被切换出来..但也看不到窗口..应该是被游戏刷新了的.
    不知道有什么办法把窗口刷出来呢..还有.即使刷出了..这个消息.又应该如何处理呀
      

  2.   

    DialogBoxA 无效的话试一下 CreateDialogParamW ,然后在窗口消息回调函数中响应 WM_INITDIALOG 消息,设置窗口式样,用 SetWindowsLongW 设置,多试验几种式样,比如 WS_OVERLAPPED ,CreateDialogParamW 的父窗口可以设置成 NULL 试一下,多试几重不同的值