首先确认找到的句柄是对的,然后用下面的代码试下:http://bbs.csdn.net/topics/390383307 function BringWindowToTopEx(hWnd: HWND): Boolean; begin if IsIconic(hWnd) then ShowWindow(hWnd, SW_RESTORE); if GetForegroundWindow <> hWnd then SetForegroundWindow(hWnd);//enabled //BringWindowToTop(hWnd);//not enabled //ForceForegroundWindow(hWnd);//enabled {SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE); SetWindowPos(hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE);//enabled} //SwitchToThisWindow(hWnd, True);//enabled Result := GetForegroundWindow = hWnd; end;
function BringWindowToTopMost(hWnd: HWND; bTopMost: Boolean): Boolean; begin if IsIconic(hWnd) then ShowWindow(hWnd, SW_RESTORE); if bTopMost then SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE) else SetWindowPos(hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE); end;
function BringWindowToTopXY(hWnd: HWND; X, Y: Integer; hWndInsertAfter: HWND): Boolean; begin Result := BringWindowToTopEx(hWnd); Result := SetWindowPos(hWnd, hWndInsertAfter, X, Y, 0, 0, SWP_NOSIZE) and Result; end;
启动其他程序可以在以下方式任选一种
CreateProcess
WinExec
WinExecEx
ShellExcute
我试了很多次都没有成功。
function BringWindowToTopEx(hWnd: HWND): Boolean;
begin
if IsIconic(hWnd) then
ShowWindow(hWnd, SW_RESTORE);
if GetForegroundWindow <> hWnd then
SetForegroundWindow(hWnd);//enabled
//BringWindowToTop(hWnd);//not enabled
//ForceForegroundWindow(hWnd);//enabled
{SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE);
SetWindowPos(hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE);//enabled}
//SwitchToThisWindow(hWnd, True);//enabled
Result := GetForegroundWindow = hWnd;
end;
function BringWindowToTopMost(hWnd: HWND; bTopMost: Boolean): Boolean;
begin
if IsIconic(hWnd) then
ShowWindow(hWnd, SW_RESTORE);
if bTopMost then
SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE)
else
SetWindowPos(hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE);
end;
function BringWindowToTopXY(hWnd: HWND; X, Y: Integer;
hWndInsertAfter: HWND): Boolean;
begin
Result := BringWindowToTopEx(hWnd);
Result := SetWindowPos(hWnd, hWndInsertAfter, X, Y, 0, 0, SWP_NOSIZE)
and Result;
end;