取代BringWindowToTop的一种解决办法

最近希望通过程序控制另外一个程序置于其他窗口的顶层,但是,又不是那种一直处于顶层的窗口,开始使用BringWindowToTop函数,结果不起作用,后来采用了SetWindowPos,来实现

            //读取当前的主框架的style
            DWORD dwStyle=::GetWindowLong(hWnd,GWL_EXSTYLE);
           
            ::SetWindowPos(hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOSIZE|SWP_NOMOVE);
           
            //如果主框架原来已经被设置为topmost,则此处不重设,否则进行重设    2008-06-30 yych
            if(!((dwStyle&WS_EX_TOPMOST)==WS_EX_TOPMOST ))
            {
                //保证主框架前置,然后再恢复到正常状态    2008-03-26 yych
                SetWindowPos(hWnd,HWND_NOTOPMOST,0,0,0,0,SWP_NOSIZE|SWP_NOMOVE);
               
            }

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在VB6中,通过`BringWindowToTop`函数将程序窗口调至前台,然后使用`keybd_event`函数模拟按下Enter键进行发送操作。出现接收不到Enter信号的情况可能是由于以下原因之一: 1. 窗口焦点问题:使用`BringWindowToTop`函数将窗口调至前台时,可能会发生焦点切换的问题。如果目标窗口没有正确获取焦点,那么发送的按键消息可能不会被正确接收。你可以尝试在调用`BringWindowToTop`后,使用`SetForegroundWindow`函数将目标窗口设置为活动窗口,以确保它正确获取焦点。 2. 延迟问题:在发送按键消息之前,可能需要适当的延迟一段时间,以确保窗口完全展示在前台并准备好接收按键消息。你可以尝试在调用`BringWindowToTop`后,添加一个适当的延迟(使用`Sleep`函数)来等待窗口准备好接收按键消息。 3. 键盘事件不可靠:`keybd_event`函数是通过模拟键盘事件来发送按键消息的。然而,这种方式并不是完全可靠的,因为它依赖于系统的键盘事件处理机制。有时候可能会出现丢失按键消息的情况,特别是在高负载或系统资源紧张的情况下。你可以尝试使用其他方式发送按键消息,如使用`SendMessage`函数发送`WM_KEYDOWN`和`WM_KEYUP`消息。 请注意,以上是一些可能导致接收不到Enter信号的一般情况,具体问题可能还受到其他因素的影响。如果问题仍然存在,建议进行更详细的调试和排查,例如检查窗口的状态、使用其他方式发送按键消息等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值