内容比较长, 请各位大侠听我慢慢描述我有第一个程序, 是一个ocx, 上面有个 class(TActiveForm, IxyForm)这个窗体上是空空的这个窗体启动的时候 执行了下面一段代码 ShellExecute(0,'open',PChar(szPath),PChar(szParameters),PChar(szWorkDir),SW_SHOW);szPath 是 第二个程序的文件名
szWorkDir 是 第二个程序的工作路径
szParameters 是参数,  其实就是 self.hanlde   自身的句柄//================================================================这个时候第二个程序启动,  第二个程序是一个普通的无窗口程序
::SetWindowLong( (HWND)getHWND(),GWL_STYLE,WS_CHILD|WS_CLIPSIBLINGS|WS_CLIPCHILDREN );
if( NULL == ::SetParent((HWND)getHWND(),g_hwndActiveX) )
{
return false;
}
第二个程序启动起来以后, 使用 SetParent 把自己 劫持到了  ocx上,  这样我的程序 就变成了一个网页程序
//================================================================现在是这样子的,  网页启动的时候  加载 ocx , ocx 启动 exe,   exe 启动好了以后, 按键盘是可以正常使用的,比如按F1会放一个技能
 
但是只要随便点击 exe 的任何地方, 再按键盘,  就变成浏览器响应, 按F1 就弹出了浏览器的帮助.
百度了一下  : 发现了同样的一个问题:http://topic.csdn.net/u/20090214/13/32e25ce3-f0cd-4ae7-8d7e-701d0a66dedd.html  不过没答案//=================================================================
在线等.   有满意答案另给200分

解决方案 »

  1.   

    尝试做了下,直接在ocx上设置按键,木问题。调用其他程序不设置父窗体,也木问题,问题是……你怎么获得ocx窗体句柄的……
      

  2.   

    既然SetParent自己到了ocx上,这时候有点像人质了,还能做“大哥”吗?你提供的连接不是没答案,是楼主无良,得到一楼回复就跑了,没见他的结贴率是0的吗?
      

  3.   


    ocx 是我自己的程序啊.... 我自己的  我自己的..self.handle  ...
      

  4.   

    我是这样想的, 第一次启动的时候,   按键是正常滴.. 但是如果用鼠标点了一下 第二个exe程序以后..这个时候的焦点应该是在 exe上面才对可是实际上, 焦点在浏览器上.我想的两个解决方案是1 强制 setforce 给 exe的句柄2 接收到消息  马上从 ocx 发给 exe
    可是遇到的问题是,这个时候的按键,被浏览器吃掉了... 比如按 F5,   直接就刷新了可以参考一下  惊天战神.. 我要做的就是这样的效果.
      

  5.   

    经过测试,
    SetWindowLong(Form2.Handle, GWL_STYLE,WS_POPUP);
    通过……
      

  6.   

    一开始就怀疑跟WS_CHILD有关测试了下,确实这个问题i。