2011년 3월 15일 화요일

IE 띄우기

일단 아래와 같이 하면 IE가 뜬다.


usesComObj;


procedureTForm1.Button1Click(Sender: TObject);
var IE: OleVariant;
begin
try
IE:=CreateOleObject('Internetexplorer.Application');

// 위치, 크기
IE.Left:=0;
IE.Top :=0;
IE.Width :=500;
IE.Height:=400;

// IE 윈도우 상태
IE.Toolbar :=False;
IE.Statusbar:=False;
IE.Menubar :=False;

// 띄우기
IE.Visible:=True;
SetForegroundWindow(IE.HWND);
IE.Navigate('http://www.naver.com');
finally
IE:=Unassigned;
end;
end;







IE를 띄우는데 먼저 띄운 IE가 있다면 그 IE를 최상위로 올리고,
만약 먼저 띄운 IE가 꺼지고 없다면 새로 띄우려면 아래처럼 하면 됨.


uses ComObj;

const NOT_EXISTS = 0;
EXISTS =1;

var
IE_HWND: HWND;

// 윈도우를 모조리 뒤져서 먼저 띄운 IE가 있는지 체크
functionEnumWindowsProc(hwnd: HWND; varlParam: DWORD): Boolean; stdcall;
begin
// 먼저 띄운 IE가 아니라면 없다고 하고 계속 뒤짐 if hwnd<>IE_HWND then begin lParam:=NOT_EXISTS;
Result:=True;
end
// 먼저 띄운 IE가 있다면 있다고 하고 뒤지기 중지
else begin
lParam:=EXISTS;
Result:=False;
end;
end;


procedureTForm1.Button1Click(Sender: TObject);
var
IE : OleVariant;
IE_Exists: DWORD;

begin
// IE를 띄운적이 있으면 ifIE_HWND<>0then begin
// 그 IE가 아직 떠있는지 검사해서 EnumWindows(@EnumWindowsProc, DWORD(@IE_Exists));
// 떠있다면 최상위로 올려줌 ifIE_Exists=EXISTS then begin
SetForegroundWindow(IE_HWND);
Exit;
end;
end;

try
IE:=CreateOleObject('Internetexplorer.Application');

// 위치, 크기 IE.Left:=0;
IE.Top :=0;
IE.Width :=500;
IE.Height:=400;

// IE 윈도우 상태
IE.Toolbar :=False;
IE.Statusbar:=False;
IE.Menubar :=False;

// 띄우기
IE.Visible:=True;
SetForegroundWindow(IE.HWND);
// 띄우는 IE의 핸들을 저장
IE_HWND:=IE.HWND;
IE.Navigate('http://www.naver.com');
finally
IE:=Unassigned;
end;
end;

댓글 1개:

  1. ie7에서 상대바를 false 로 하면 로컬에서는 작동이 되는데
    개발서버에서 실행을 하면 상태바가 나타나는 이유는 무었이고
    상태바를 안나타나게 하려면 어떻게 해야 하나요?

    답글삭제