Q&A

  • [질문]TembeddedWB 브라우저를 이용하는데 화면에 아무것도 나오질 않아요..
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-->
0  COMMENTS