TEmbeddedWB 를 이용해서 웹페이지를 보여주는데 가끔씩 오류가 생겨요...
구동환경은
컴퓨터를 켜게 되면 자동으로 백그라운드에서 돌아가는 프로그램이
브라우저 프로그램을 실행시키고 그 브라우저는 ini 파일에서 홈페이지 주소를 읽어들여
자동으로 그 해당 페이지를 띄우게 되 있습니다.
그런데 잘 되다가 가끔씩 브라우저 화면이 웹페이지를 보여주지 못하고 하얀상태로
고정되 있습니다. 다른 페이지 접속 버튼을 눌러봐도 먹통이구요... 이유가 뭘까요? 고수님들 부탁드려요...
아래는 소스 첨부합니다...
<!--CodeS-->
function EnumWindowsProc(Wnd: HWND):Bool;stdcall;// 열려있는 익스 모두 닫는 함수
var
ClassName : string;
begin
if IsWindowVisible(Wnd) and ((GetWindowLong(Wnd, GWL_HWNDPARENT) = 0) or
(HWND(GetWindowLong(Wnd, GWL_HWNDPARENT)) = GetDesktopWindow)) and
((GetWindowLong(Wnd, GWL_EXSTYLE) and WS_EX_TOOLWINDOW) = 0) then begin
SetLength (ClassName, 100);
GetClassName (Wnd, PChar (ClassName), Length (ClassName));
ClassName := PChar (ClassName);
if ClassName = 'IEFrame' then begin
PostMessage(Wnd,WM_CLOSE,0,0);
// PostMessage(Wnd,WM_QUIT,0,0);
end;
end;
end;
procedure TForm1.WBNewWndProc(var Message: TMessage);
begin
case Message.Msg of
WM_CLOSE : Exit;
end;
WBOrgWndProc(Message);
end;
procedure TForm1.ONWM_SYSCOMMAND(var Msg:TMessage);
begin
if Msg.wParam=SC_CLOSE then
else
Inherited;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
WindowHandle: hWnd;
Rect : TRect;
myini : TInifile;
NSize: Cardinal;
ComputerName: string;
begin
myini := Tinifile.create('.\conf.ini');
url := myini.readstring('Main','url','');
myini.Free;
//컴퓨터명
NSize := MAX_COMPUTERNAME_LENGTH+1;
SetLength(ComputerName,NSize);
if GetComputerName(PChar(ComputerName), NSize) then
sysname := ComputerName;
WBOrgWndProc := WebBrowser1.WindowProc;
WebBrowser1.WindowProc := WBNewWndProc;
if not GetWindowRect(FindWindow('Shell_TrayWnd',nil), Rect) then
Exit;
WindowHandle := FindWindow('Shell_TrayWnd', '');
if WindowHandle <> 0 then
ShowWindow(WindowHandle, SW_HIDE);
ShowWindow(Application.Handle, SW_HIDE);
webbrowser1.Navigate(url);
KeyPreview := true;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
WindowHandle: hWnd;
begin
WindowHandle := FindWindow('Shell_TrayWnd', '');
if WindowHandle <> 0 then
ShowWindow(WindowHandle,SW_SHOW);
end;
procedure TForm1.SpeedButton8Click(Sender: TObject);
var
i : integer;
begin
EnumWindows(@EnumWindowsProc,i);
webbrowser1.Navigate(url);
end;
<!--CodeE-->