如何将一个程序激活到屏幕最前端显示?

acinonyx 2007-09-29 01:34:35
或是新启动一个程序到屏幕最顶端显示?而不理会当前焦点在哪、正进行任何种类的操作?
谢谢大家!
...全文
709 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
acinonyx 2007-10-09
  • 打赏
  • 举报
回复
To weiym : 这个方法我也用过的,如果手动去控制还可以用用,但是如果让程序自动控制还是不行
acinonyx 2007-10-09
  • 打赏
  • 举报
回复
To awperpvip :主要是在控制其它的程序,不是在自身窗口实现控制,所以你这方法行不通也。。。
akspark 2007-09-30
  • 打赏
  • 举报
回复
新手做个记号
weiym 2007-09-30
  • 打赏
  • 举报
回复
以前看到的,LZ可以试下


● 10. 如何激活指定的窗口事件 ●
我们知道,Windows 9x/2000中SetForegroundWindow函数当用户正在操作其他窗口时是不能强制某个窗口为前景窗口的,而是激活窗口并调用FlashWindowEx函数来通知用户。但是很多实际情况要求将激活窗口的同时将创建这个窗口的线程置为前景状态。碰到这种情况我们可以使用USER32.DLL中的几个未公开API函数。
void SwitchToThisWindow (
HWND hWnd, // 被激活的窗口句柄
BOOL bRestore // 如果被极小化,则恢复窗口
);
必须动态加载这个函数。
typedef void (WINAPI *PROCSWITCHTOTHISWINDOW) (HWND, BOOL);
PROCSWITCHTOTHISWINDOW SwitchToThisWindow;
HMODULE hUser32 = GetModuleHandle("user32");
SwitchToThisWindow = ( PROCSWITCHTOTHISWINDOW)
GetProcAddress(hUser32, "SwitchToThisWindow");
接下来只要用任何现存窗口的句柄调用这个函数即可,第二个参数指定如果窗口极小化,是否恢复其原状态。
SwitchToThisWindow(hWnd, TRUE);
//===========================================================================
soft78 2007-09-30
  • 打赏
  • 举报
回复
SetWindowPos()函数,第一个参数写HWND_TOPMOST
awperpvip 2007-09-30
  • 打赏
  • 举报
回复
这也只是抢时间差的问题,如果我一直不停地在那点鼠标,程序里延时也是无效的啊。
//在SetTimer定时器里SetWindowPos(htop,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE ¦SWP_NOSIZE);
非常好啊,我估计用连点器也抢不了焦点
wangk 2007-09-30
  • 打赏
  • 举报
回复
AttachThreadInput() + SetFocus() 自己.
menapoleon 2007-09-30
  • 打赏
  • 举报
回复
bringwindowtotop()
acinonyx 2007-09-30
  • 打赏
  • 举报
回复
怎么没人来解答了呢?
acinonyx 2007-09-29
  • 打赏
  • 举报
回复
这也只是抢时间差的问题,如果我一直不停地在那点鼠标,程序里延时也是无效的啊。
awperpvip 2007-09-29
  • 打赏
  • 举报
回复
Timer里\\做一个延时SetWindowPos(htop,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE ¦SWP_NOSIZE);
acinonyx 2007-09-29
  • 打赏
  • 举报
回复
我现在用了这几个函数,
SetWindowPos(htop,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE |SWP_NOSIZE);
ShowWindow(htop, SW_SHOW);
SetForegroundWindow(htop);
SetActiveWindow(htop);
SetFocus(htop);
如果鼠标键盘没有任何操作,则可达到预想效果,但若我鼠标不停地点击当前窗口,则无法达到预期效果。
有什么办法可以实现不管怎么点当前窗口,该弹出的还是会弹出呢?
awperpvip 2007-09-29
  • 打赏
  • 举报
回复
SetWindowPos
HWND_TOPMOST \\置顶
acinonyx 2007-09-29
  • 打赏
  • 举报
回复
忘了说一下,运行环境是在win xp、win 2003下。主程序运行后去控制其他程序的显示。
当焦点在其他程序的窗口时,SetForegroundWindow()只会像msn有新消息一下闪一闪,并不会弹出到最前端
guo_wei 2007-09-29
  • 打赏
  • 举报
回复
如果需要永远在最前,用SetWindowPos()函数,第一个参数写HWND_TOPMOST
guo_wei 2007-09-29
  • 打赏
  • 举报
回复
调用程序窗口的SetForegroundWindow()

2,641

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧