我需要在申请前面填写表格。但是,常用方法不起作用。
已尝试的方法
//method #1
PostMessage(HD, WM_USER, 0, 0);
SetWindowPos(HD, HWND_BOTTOM, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE);
//method #2
dwThreadID := GetWindowThreadProcessId(HD, nil);
dwCurrentThreadID := GetCurrentThreadId;
AttachThreadInput(dwCurrentThreadID, dwThreadID, true);
BringWindowToTop(Aff.handle);
ShowWindow(Aff.handle, SW_SHOW);
评论
有问题的应用程序仅适用于全屏模式。
我不想要完整的代码,只需要前进的方法。
请原谅我的英语不好,谢谢你的时间。
答案 0 :(得分:0)
您正在将表单设置为底部。最重要的是:
SetWindowPos(handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
另一种方法,如果你真的想强制外部应用程序到后台,你需要得到它的处理。例如,如果此类应用程序名为calc:
hCalc := FindWindow('calc', nil);
SendMessage(hCalc , WM_SYSCOMMAND, SC_MINIMIZE, 0); // you can also minimize the application
SetWindowPos(hCalc , HWND_BOTTOM, 0, 0, 0, 0, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
答案 1 :(得分:0)
你可以试试这个:
function ForceForegroundWindow(AHandle: THandle): Boolean;
var
Input: TInput;
begin
Result := True;
ZeroMemory(@Input, SizeOf(Input));
SendInput(1, Input, SizeOf(Input));
SetForegroundWindow(AHandle);
end;
的Sertac Akyuz的信用