如何最大化已激活的窗体 我用delphi开发一个小程序,通过双击树节点调用某个exe应用程序,有时桌面窗体比较多,如,窗体A,B,C,但此时最前端的窗体是C,请教当我在此双击树节点,想调用A窗体,如果A不是最前端的,请教怎么让A窗体返回到最前端? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1。让C最小化SendMessage(C.Handle,WM_SYSCOMMAND,SC_MINIMIZE,0); 2。让A在最前BringWindowToTop(A.Handle);SetForeGroundWindow(A.Handle);SetWindowPos(A.Handle,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE+SWP_NOSIZE); 上面三个功能一样,你选择一个自己合适的即可,另外如果A窗体是最小化的用SendMessage(A.Handle,WM_SYSCOMMAND,SC_RESTORE,0); 恢复窗口 伴水大牛的代码,一直在用function ForceForegroundWindow( // 将窗体设置为最前端,并获得焦点 mHandle: THandle // 窗体句柄): Boolean; // 返回设置是否成功var vHandle: THandle; vResult: Longword;begin if IsIconic(mHandle) then SendMessageTimeOut(mHandle, WM_SYSCOMMAND, SC_RESTORE, 0, SMTO_NORMAL, 1000, vResult) else //2006-10-13 ZswangY37 No.1 begin vHandle := GetWindow(mHandle, GW_OWNER); if IsIconic(vHandle) then SendMessageTimeOut(vHandle, WM_SYSCOMMAND, SC_RESTORE, 0, SMTO_NORMAL, 1000, vResult); end; vHandle := GetForegroundWindow; AttachThreadInput(GetWindowThreadProcessId(vHandle, nil), GetCurrentThreadId, True); Result := SetForegroundWindow(mHandle); AttachThreadInput(GetWindowThreadProcessId(vHandle, nil), GetCurrentThreadId, False);end; { ForceForegroundWindow } 监控程序弹出的对话框 有显示 日期+时间的控件吗? 关于ADO的Requery刷新数据的问题,后台用Sql直接操作数据,ADO控件总是无法及时显示,需要多次刷新. delphi调试时出现的异常在哪里查!或者找帮助! 在线等待-100分 我不想让Listbox得焦点时有虚线框!怎么办呢? 消息问题 进来看一下,这段代码啊出错在那里 我想把excel导入oracle,怎么弄呢! char code_buff [30];如何转换为delphi ? 有知道关于控件事件的吗? 串口发送和接收字符串编程 Delphi c++ builder
SendMessage(C.Handle,WM_SYSCOMMAND,SC_MINIMIZE,0);
2。让A在最前
BringWindowToTop(A.Handle);
SetForeGroundWindow(A.Handle);
SetWindowPos(A.Handle,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE+SWP_NOSIZE);
上面三个功能一样,你选择一个自己合适的即可,另外如果A窗体是最小化的用
SendMessage(A.Handle,WM_SYSCOMMAND,SC_RESTORE,0); 恢复窗口
mHandle: THandle // 窗体句柄
): Boolean; // 返回设置是否成功
var
vHandle: THandle;
vResult: Longword;
begin
if IsIconic(mHandle) then
SendMessageTimeOut(mHandle, WM_SYSCOMMAND, SC_RESTORE, 0, SMTO_NORMAL,
1000, vResult)
else //2006-10-13 ZswangY37 No.1
begin
vHandle := GetWindow(mHandle, GW_OWNER);
if IsIconic(vHandle) then
SendMessageTimeOut(vHandle, WM_SYSCOMMAND, SC_RESTORE, 0, SMTO_NORMAL,
1000, vResult);
end;
vHandle := GetForegroundWindow;
AttachThreadInput(GetWindowThreadProcessId(vHandle, nil),
GetCurrentThreadId, True);
Result := SetForegroundWindow(mHandle);
AttachThreadInput(GetWindowThreadProcessId(vHandle, nil),
GetCurrentThreadId, False);
end; { ForceForegroundWindow }