센터2개



Inno Setup 인터넷 익스플로러 체크 및 종료 함수 델파이

Inno Setup 으로 설치를 하다 보면 인터넷 익스플로러(IE)를 종료해야할 경우가 생긴다.

IE를 종료하지 않고는 현재 로드되어 있는 각종 ActiveX 등 때문에 설치가 원활히 진행되지 않는다.

설치는 되더라도 정상 동작이 되지 않는 경우도 발생된다.

이런 문제를 막기 위해 설치시 IE의 활성화를 체크하고 종료하는 함수가 필요하다.

※ IE 활성화 체크 함수
//-----------------------------------------------------------------------------
// IE 동작 여부 확인
//-----------------------------------------------------------------------------
function IECloseCheck(ClassName: string): Boolean;
var
 hWnd:Integer;
begin
 hWnd := FindWindowByClassName(ClassName);
 if hWnd > 0 then begin
  MsgBox(DONT_CLOSE_BROWSER, mbInformation, MB_OK);
  Result := False;
 end else begin
  //MsgBox('설치고고', mbInformation, MB_OK);
  Result := True;
 end;
end;

※ IE 종료 함수
//-----------------------------------------------------------------------------
// IE 종료 함수
//-----------------------------------------------------------------------------
function IEClose(ClassName: string): Boolean;
var
  hWnd, prevhWnd, i: Integer;
  //hwndClose,hwndButton: Integer;
begin
 prevhWnd := 0;
    hWnd := FindWindowByClassName(ClassName);
 while (hWnd > 0) do begin
  PostMessage(hWnd, 16, 0, 0);
  prevhWnd := hWnd;
  hWnd := FindWindowByClassName(ClassName);
  if (prevhWnd = hWnd) then begin
   for i := 1 to 10 do begin
    hWnd := FindWindowByClassName(ClassName);
    if (prevhWnd = hWnd) then
     Sleep(100);
   end
   if (prevhWnd = hWnd) then
    hWnd := 0;
  end
 end
 Result := IECloseCheck(ClassName);
end;


적용할 경우 아래와 같이 하면 된다.

if MsgBox(IE_CLOSE_MSG, mbConfirmation, MB_YESNO) = IDYES then
begin
  Result := IEClose('IEFrame'); // 다음페이지로
end
else
begin
  Result := False; // 현재페이지
end;

메세지 박스를 뜨워서 IE 종료 여부를 묻고 종료시 해당 창을 종료하고 IE 체크함수로 다음 페이지 이동 여부를 묻는다.

종료되지 않았을 경우 반복 하도록 처리.

E6.0이나 IE7.0이상인 경우 하나의 탭만 활성화 된 겨우 종료 확인 메세지를 띄워 바로 종료할 수 있다.

다만, IE8.0 이상인 경우에는 탭 별로 종료가 다르기 때문에 종료시 탭 종료 확인을 해주어야 한다.

찾다보니 이 방법 이외에도 종료하는 방법이 여러가지 더 있을수도 있을거 같긴한데..

난 여기까지.



덧글

댓글 입력 영역


우측광고

리얼클릭_사이드