외부프로그램을 중복실행이 않되도록 체크한 후 호출하여 사용하고 있습니다.
실행중인 외부프로그램을 최소화한 후에 다시 호출할 경우 실행은 되는데,
외부프로그램을 다시 최소화하려고 버튼을 Click해도 최소화가 안되는 군요....
방법 좀 알려주세요....
참고로 아래와 같이 코딩했습니다.
PrevWnd := findwindow(pcName, pcFile);
if PrevWnd = 0 then
begin
WinExec('test1.exe' , SW_HIDE);
end
else
begin
SetForegroundWindow(PrevWnd);
ShowWindow(PrevWnd, SW_RESTORE);
end;
> 외부프로그램을 중복실행이 않되도록 체크한 후 호출하여 사용하고 있습니다.
> 실행중인 외부프로그램을 최소화한 후에 다시 호출할 경우 실행은 되는데,
> 외부프로그램을 다시 최소화하려고 버튼을 Click해도 최소화가 안되는 군요....
>
> 방법 좀 알려주세요....
>
> 참고로 아래와 같이 코딩했습니다.
>
> PrevWnd := findwindow(pcName, pcFile);
> if PrevWnd = 0 then
> begin
> WinExec('test1.exe' , SW_HIDE);
> end
> else
> begin
> SetForegroundWindow(PrevWnd);
> ShowWindow(PrevWnd, SW_RESTORE);
> end;
질문에 대한 답변이 없군요
급한 나머지 아래와 같이 해결하긴 했는데..... 좀 찝찝하군요.
좀더 명쾌한 방법이 있으면 알려주세요!!!!
// test1이라는 호출 당하는 프로그램에 아래와 같이 함수를 선언했습니다.
procedure WMSysCommand(var AMsg: TWMSysCommand); message WM_SYSCOMMAND;
// 최소화 버튼이 눌려졌는지 확인해서
// 강제로 윈도우의 상태에 최소화 상태값을 전달했습니다.
procedure Ttest1.WMSysCommand(var AMsg: TWMSysCommand);
begin
if AMsg.CmdType = SC_MINIMIZE then
begin
WindowState := wsMinimized;
end;
inherited;
end;