如何将其它程序最小化
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;
...