怎样激活程序窗口?

housisong 2003-02-25 07:58:25
程序在后台运行,被热键触发以后,我需要弹出自己的窗口并获取当前系统输入
我已经实现热键触发,但就是不能很好的弹出来
设置窗口到前台的API函数只能使标题闪烁;
把窗口设为TOP顶层窗口这样又不太好;
我现在先调用“刷新桌面”最小化所有窗口,然后Restore自己的窗口,但这样感觉不好。
另外怎样激活其他程序到前台(已知进程ID)?

...全文
191 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
Feather Duster 2003-04-07
  • 打赏
  • 举报
回复
都不行,可惜阿。
//procedure SwitchToThisWindow(hWnd:HWND;bRestore:Boolean);stdcall;external 'user32.dll';

//SwitchToThisWindow(self.handle,false);
//yourform.show;
qiume 2003-02-26
  • 打赏
  • 举报
回复
I am learning
fancier 2003-02-26
  • 打赏
  • 举报
回复
关注!
hch_45 2003-02-26
  • 打赏
  • 举报
回复
PostMessage(YOUR_RESTORE_FORM_Handle, CM_RESTORE, 0, 0);

用这个吧
naughtyboy 2003-02-26
  • 打赏
  • 举报
回复
如果只是将窗口唤到最前面
SetWindowpos(h,HWND_TOP,100,100,0,0,sw_shownormal);
naughtyboy 2003-02-26
  • 打赏
  • 举报
回复
楼上说得有些错误,应该将第二个参数改为HWND_TOPMOST
SetWindowpos(h,HWND_TOPMOST,100,100,0,0,sw_shownormal);
不知道楼主要得是不是这样的结果

delphi_xizhousheng 2003-02-26
  • 打赏
  • 举报
回复
不好意思。是:SetWindowPos(Handle,WM_TOPMOST,width,height,0,0,SWP_SHOWWINDOW );
delphi_xizhousheng 2003-02-25
  • 打赏
  • 举报
回复
最简单,保管好用:SetWindowPos(Handle,width,height,0,0,WM_MOSTTOP);
binbin 2003-02-25
  • 打赏
  • 举报
回复
几种方法:
1.让窗口alwayTop一下.
2.AttachInput到当前活动进程,再SetActiveWindow
housisong 2003-02-25
  • 打赏
  • 举报
回复
简单说就像是“金山游侠”的热键激活一样
我实现了热键呼叫(98,2000,XP的DrectX游戏模式下都可以),但在弹出自己的窗口时遇到了问题,系统不让切换键盘输入焦点
sysu 2003-02-25
  • 打赏
  • 举报
回复
试试:
ShowWindow(Application.Handle, SW_Show);
SetForegroundWindow(Application.Handle);
Form1.Visible := True;
boby 2003-02-25
  • 打赏
  • 举报
回复
当程序在后台时 form.visible = false 激活时 form.visible=true 不行吗,还是我没理解你的意思
housisong 2003-02-25
  • 打赏
  • 举报
回复
SendMessage(Form1->Handle,WM_ACTIVATE ,0 ,1);也不成功
housisong 2003-02-25
  • 打赏
  • 举报
回复
SetForegroundWindow只能使其任务栏图标闪烁
housisong 2003-02-25
  • 打赏
  • 举报
回复
SetActiveWindow 不行
BringToFront 不行
ShowWindow 好像也不行

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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