SetParent的作用就是俘虏一个窗口作为自己的子窗口,我想让自己的程序可以在别的程序中弹出来(就象很多外挂那样)我用了SetParent这个API,发现它在一般的窗口中都工作得很好。但是不幸的是遇到全屏窗口他就无法正常工作了,虽然程序能在全屏程序中弹出但是当你点一下这个窗口,正在进行的全屏游戏(或者其他)就会立刻最小化,这是我不希望看到的结果。理想的情况是,我可以在保持游戏进行不被最小化的时候操作我自己的外挂窗口。
大家又什么好的办法吗?不一定要用SetParent,很多外挂都做到这了一点而且工作得很稳定。

解决方案 »

  1.   

    SetParent中的子窗口和父窗口必须是同一个应用程序的:
    The new parent window and the child window must belong to the same application. 你可以覆盖窗口的CreateParams方法:
    procedure CreateParams(var Params: TCreateParams); override;
    实现:
      inherited CreateParams(Params);  
      Params.WndParent := 父窗口句柄;————————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    ————————————————————————————————————
      

  2.   

    谢谢你的回复,你说的8对.SetParent可以把其它进程的窗口作为自己的子窗口的.不过我遇到的问题是,目标窗口是一个全屏的.
    这个问题我已经解决了,用DLL注射的方法。把一个DLL用SetWindowHookEx把他压入另一个进程的领空,然后……想干什么就干什么拉。已经成为目标进程的一部分了。