Q&A

  • ShowWindow에 관하여....
외부프로그램을 중복실행이 않되도록 체크한 후 호출하여 사용하고 있습니다.

실행중인 외부프로그램을 최소화한 후에 다시 호출할 경우 실행은 되는데,

외부프로그램을 다시 최소화하려고 버튼을 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;

1  COMMENTS
  • Profile
    한정섭 2000.09.25 20:17
    한정섭 wrote:

    > 외부프로그램을 중복실행이 않되도록 체크한 후 호출하여 사용하고 있습니다.

    > 실행중인 외부프로그램을 최소화한 후에 다시 호출할 경우 실행은 되는데,

    > 외부프로그램을 다시 최소화하려고 버튼을 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;