WebBrower如何动态设定CharSet?(200分)

  • 主题发起人 主题发起人 eyangyj
  • 开始时间 开始时间
E

eyangyj

Unregistered / Unconfirmed
GUEST, unregistred user!
我用D5编写一个演示系统,要求包括简体、繁体和英文,同时屏蔽掉原有的菜单,
最后和页面一起作到光盘中,根据主机的环境来设定CharSet,现在问题是系统的环境
检测出来后,如何设定WebBrowser字符集,并让它生效?
 
其实不用修改CharSet也可以的, 只要在HTML写明就行了:
代码:
<meta http-equiv="Content-Type" content="text/html
charset=big5">

<html>
<head>
   <meta http-equiv="Content-Type" content="text/html
charset=big5">
</head>
<body>

<center>
<hr WIDTH="100%">&amp;nbsp
<a href="AAAT1001.HTM" TARGET="MAIN_VIEW">穝??禣じン/?ㄣ
(2001/11/22钵笆1)</a>
<p>&amp;nbsp
<a href="AAAT1002.HTM" TARGET="MAIN_VIEW">?场?禣じン/?ㄣ</a>
<p>&amp;nbsp
<a href="AAAT1011.HTM" TARGET="MAIN_VIEW">?禣 OCX じン (2000/2/7钵笆1)</a>
</center>

</body>
</html>
也就是说你预先做好简体、繁体和英文三个版本,然后根据系统来决定显示哪个版本。

不要IE的菜单也是在HTML中加一句:
代码:
<head>
<SCRIPT>document.write("<body oncontextmenu=/"return false/">");</SCRIPT>
</head>
 
屏蔽原来菜单:
//来自于Torry's Delphi Page;
disable the Context Menu in a TWebbrowser?
var
HookID: THandle


function MouseProc(nCode: Integer
wParam, lParam: Longint): Longint
stdcall

var
szClassName: array[0..255] of Char

const
ie_name = 'Internet Explorer_Server'

begin
case nCode < 0 of
True:
Result := CallNextHookEx(HookID, nCode, wParam, lParam)
else
case wParam of
WM_RBUTTONDOWN,
WM_RBUTTONUP:
begin
GetClassName(PMOUSEHOOKSTRUCT(lParam)^.HWND, szClassName, SizeOf(szClassName))

if lstrcmp(@szClassName[0], @ie_name[1]) = 0 then
Result := HC_SKIP
else
Result := CallNextHookEx(HookID, nCode, wParam, lParam)

end
else
Result := CallNextHookEx(HookID, nCode, wParam, lParam)

end

end

end


procedure TForm1.FormCreate(Sender: TObject)

begin
HookID := SetWindowsHookEx(WH_MOUSE, MouseProc, 0, GetCurrentThreadId())

end


procedure TForm1.FormDestroy(Sender: TObject)

begin
if HookID <> 0 then
UnHookWindowsHookEx(HookID)

end


procedure TForm1.Button1Click(Sender: TObject)

begin
Webbrowser1.Navigate('http://www.google.com')

end

设定字符集:
var
Doc:IHTMLDocument2;
begin
Doc:=wbrowser.document as IHtmlDocument2;
Doc.Set_charset(widestring('big5'));
end;
Twebbroswer的显示字体有所变化,可是还是不正常
用webbrowser.oleobject.document.chat_set('big5')
webbrowser.refresh
试一下
 
Kingron:
执行到Doc.Set_charset(widestring('big5'));时出现异常EAccessException,不能继续执行
 
出现AV错误,是因为你的WebBrowser控件没有浏览一个网页,你可以在网页Navigate完成之后,
才设定字符集即可。
 
我浏览www.sina.com.cn,无论在什么地方设置WebBrowser.OLEObject.XXX都出现错误
将WebBrowser.OLEObject.XXX行全部注释掉显示不出现错误,只是不是预定的效果
 
我的代码怎么没有错误?
uses mshtml;

procedure TForm1.FormCreate(Sender: TObject);
begin
WebBrowser1.Navigate('www.sina.com.cn');
end;

procedure TForm1.Button1Click(Sender: TObject);
var
Doc:IHTMLDocument2;
begin
Doc:=webbrowser1.document as IHtmlDocument2;
Doc.Set_charset(widestring('big5'));
end;
自己摸索把。
 
我觉得好像是这句
Doc:=webbrowser1.document as IHtmlDocument2;
出的问题,我已包含了mshtml,还要包含什么
 
后退
顶部