如何将其它程序最小化

ghui 2003-06-17 05:50:41
1.当前窗体为OnTop类型。最小化后,隔一段时间,调用

ShowWindow(self.Handle,SW_SHOWNORMAL);

窗体弹起,但发现窗体的右上角的最小化失效(状态为Enabled, 但是点击后没有任何反应)

2.普通窗体(Normal类型),最小化后,使用Timer,在10 秒后,自己弹出,如何使它弹到最上面

我用如下代码,没有该效果。
ShowWindow(self.Handle,SW_SHOWNORMAL);
self.SetFocus();

3.如何使某个应用程序最小化(不是窗体最小化)
我用如下代码,只能将窗体最小化。无法达到将应用程序最小化效果。
(当你在资源管理器的文件列表中选中一个文件,然后等待程序发来最小化的消息,发现不是资源管理器最小化,而是文件列表最小化了。所以从广义将,很多窗体中的控件/组件也是窗体,它们是从TWinControl中继承来的,如ListView。)

var
s:String;
this_hWnd:Integer;//HWND;
FormThreadID:DWORD;
CWndThreadID:DWORD;
begin
this_hWnd := GetForegroundWindow(); // 得到当前窗口
if (this_hWnd <> self.Handle) then begin
FormThreadID := GetCurrentThreadId();
CWndThreadID := GetWindowThreadProcessId(this_hWnd, nil);

// 附加输入线程
AttachThreadInput(CWndThreadID, FormThreadID, true);
this_hWnd := GetFocus(); // 得到当前键盘光标所在的窗口
AttachThreadInput(CWndThreadID, FormThreadID, false); // 取消
if (this_hWnd <> 0) then begin
//模拟发送消息:要求窗体最小化
PostMessage(this_hWnd, WM_SYSCOMMAND,SC_MINIMIZE, 0);
end;
end;
...
...全文
66 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
ghui 2003-06-19
  • 打赏
  • 举报
回复
Wnyu(西门吹水) 的方法能够解决问题1和问题2
Eastunfail(恶鱼杀手) 的做法不合理,不具有通用性
microjuz 2003-06-19
  • 打赏
  • 举报
回复
靠,杀手兄,有人骂你啊...
西门吹水..keke
其实大家的名字都蛮有趣的
microjuz 2003-06-18
  • 打赏
  • 举报
回复
能不能解释一下
Add('[Shell]');
Add('Command=2');
Add('IconFile=explorer.exe,3');
Add('[Taskbar]');
Add('Command=ToggleDesktop');

都是什么意思...谢谢先
microjuz 2003-06-18
  • 打赏
  • 举报
回复
是啊,我试了一下,而且改成scf文件以后就不能用notepad看了,郁..
Eastunfail 2003-06-17
  • 打赏
  • 举报
回复
呵呵~~~

你的快速启动(开始按钮右边)上面的“显示桌面”就是scf文件~呵呵
failer 2003-06-17
  • 打赏
  • 举报
回复
先看看
microjuz 2003-06-17
  • 打赏
  • 举报
回复
.scf是什么文件,msdn上也查不到,杀手兄解释一下吧
microjuz 2003-06-17
  • 打赏
  • 举报
回复
很不懂...
Eastunfail 2003-06-17
  • 打赏
  • 举报
回复
Var st:TStringList;
begin
st:=TStringList.Create;
with st do
begin
Add('[Shell]');
Add('Command=2');
Add('IconFile=explorer.exe,3');
Add('[Taskbar]');
Add('Command=ToggleDesktop');
SaveToFile('c:\1.scf');
end;//with
FreeAndNil(st);
ShellExecute(0,'open','c:\1.scf','','',SW_NORMAL);
end
Wnyu 2003-06-17
  • 打赏
  • 举报
回复
ShowWindow(self.Handle,SW_SHOWNORMAL);
Application.Restore;
newsofter 2003-06-17
  • 打赏
  • 举报
回复
up
DelphiBoy2003 2003-06-17
  • 打赏
  • 举报
回复
没有做过这样的东西
http://expert.csdn.net/Expert/topic/1923/1923268.xml?temp=.3507044
帮帮忙吧

1,184

社区成员

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

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