使用HTML界面的Delphi开发环境建立

1 SHDocVw_TLB是shdocvw.dll的类型库导入单元,没有的话就改成shdocvw(delphi自带),或者在“Project”菜单下选“Import Type Library”,在弹出的对话框中再选择“Microsoft Internet Controls”,再点“Create Unit”即可。但是把第二个webbrowser改为webbrowser2.但以后其他工程要用就要改回来了.

2 安装EmbeddedWB_D2005_Update12.zip,它包含了IEConst,IEUtil等.

3 安装zoc,在demo中.

4 安装的路径,就是有dcu的路径加入delphi的环境变量 .

附Zoc代码:

unit ZoCWebBrowser;

interface

uses

Variants,

IEConst, IEUtils, Registry, Windows, Messages, SysUtils, Classes, Graphics,

Controls, Forms, Dialogs, EXTCtrls, OleCtrls, SHDocVw_tlb,

ActiveX, shlObj, Wininet, Urlmon, shellapi, MSHTML;

type

//zoc 2003-9-15 IDocHostUIHandler

TShowContextMenuEvent = function(const dwID: DWORD; const ppt: PPOINT;

const pcmdtReserved: IUnknown; const pdispReserved: IDispatch): HRESULT of object;

TGetHostInfoEvent = function(var pInfo: TDOCHOSTUIINFO): HRESULT of object;

TShowUIEvent = function(const dwID: DWORD; const pActiveObject:

IOleInPlaceActiveObject;

const pCommandTarget: IOleCommandTarget; const pFrame: IOleInPlaceFrame;

const pDoc: IOleInPlaceUIWindow): HRESULT of object;

THideUIEvent = function: HRESULT of object;

TUpdateUIEvent = function: HRESULT of object;

TEnableModelessEvent = function(const fEnable: BOOL): HRESULT of object;

TOnDocWindowActivateEvent = function(const fActivate: BOOL): HRESULT of object;

TOnFrameWindowActivateEvent = function(const fActivate: BOOL): HRESULT of object;

TResizeBorderEvent = function(const prcBorder: PRECT;

const pUIWindow: IOleInPlaceUIWindow;

const fRameWindow: BOOL): HRESULT of object;

TTranslateAcceleratorEvent = function(const lpMsg: PMSG; const pguidCmdGroup: PGUID;

const nCmdID: DWORD): HRESULT of object;

TGetOptionKeyPathEvent = function(var pchKey: POLESTR; const dw: DWORD): HRESULT of

object;

TGetDropTargetEvent = function(const pDropTarget: IDropTarget;

out ppDropTarget: IDropTarget): HRESULT of object;

TGetExternalEvent = function(out ppDispatch: IDispatch): HRESULT of object;

TTranslateUrlEvent = function(const dwTranslate: DWORD; const pchURLIn: POLESTR;

var ppchURLOut: POLESTR): HRESULT of object;

TFilterDataObjectEvent = function(const pDO: IDataObject;

out ppDORet: IDataObject): HRESULT of object;

//zoc 2003-9-15 IDocHostUIHandler

//zoc 2003-9-15 IDocHostUIHandler2

TGetOverrideKeyPathEvent = function(pchKey: POLESTR; dw: DWORD): HRESULT of object;

//zoc 2003-9-15 IDocHostUIHandler2

//zoc 2003-9-15 IDocHostShowUI

TShowMessageEvent = function(hwnd: THandle;

lpstrText: POLESTR; lpstrCaption: POLESTR; dwType: longint; lpstrHelpFile: POLESTR;

dwHelpContext: longint; var plResult: LRESULT): HRESULT of object;

TShowHelpEvent = function(hwnd: THandle; pszHelpFile: POLESTR; uCommand: integer;

dwData: longint; ptMouse: TPoint;

var pDispatchObjectHit: IDispatch): HRESULT of object;

//zoc 2003-9-15 IDocHostShowUI

TZoCWebBrowser = class(TWebBrowser2, IDocHostUIHandler, IDocHostUIHandler2,

IDocHostShowUI)

private

//zoc 2003-9-15 IDocHostUIHandler

FOnEnableModeless: TEnableModelessEvent;

FOnFilterDataObject: TFilterDataObjectEvent;

FOnGetDropTarget: TGetDropTargetEvent;

FOnGetExternal: TGetExternalEvent;

FOnGethostinfo: TGetHostInfoEvent;

FOnGetOptionKeyPath: TGetOptionKeyPathEvent;

FOnHideUI: THideUIEvent;

FOnOnDocWindowActivate: TOnDocWindowActivateEvent;

FOnOnFrameWindowActivate: TOnFrameWindowActivateEvent;

FOnResizeBorder: TResizeBorderEvent;

FOnShowContextmenu: TShowContextMenuEvent;

FOnShowUI: TShowUIEvent;

FOnTranslateAccelerator: TTranslateAcceleratorEvent;

FOnTranslateUrL: TTranslateUrlEvent;

FOnUpdateUI: TUpdateUIEvent;

//zoc 2003-9-15 IDocHostUIHandler

//zoc 2003-9-15 IDocHostUIHandler2

FOnGetOverrideKeyPath: TGetOverrideKeypathEvent;

//zoc 2003-9-15 IDocHostUIHandler2

//zoc 2003-9-15 IDocHostShowUI

FOnShowMessage: TShowMessageEvent;

FOnShowHelp: TShowHelpEvent;

//zoc 2003-9-15 IDocHostShowUI

FUserInterfaceValue: Cardinal;

FHelpFile: string;

protected

{ Protected declarations }

//zoc 2003-9-15 IDocHostUIHandler

function ShowContextMenu(const dwID: DWORD; const ppt: PPOINT;

const pcmdtReserved: IUnknown; const pdispReserved: IDispatch): HRESULT; stdcall;

function GetHostInfo(var pInfo: TDOCHOSTUIINFO): HRESULT; stdcall;

function ShowUI(const dwID: DWORD; const pActiveObject: IOleInPlaceActiveObject;

const pCommandTarget: IOleCommandTarget; const pFrame: IOleInPlaceFrame;

const pDoc: IOleInPlaceUIWindow): HRESULT; stdcall;

function HideUI: HRESULT; stdcall;

function UpdateUI: HRESULT; stdcall;

function EnableModeless(const fEnable: BOOL): HRESULT; stdcall;

function OnDocWindowActivate(const fActivate: BOOL): HRESULT; stdcall;

function OnFrameWindowActivate(const fActivate: BOOL): HRESULT; stdcall;

function ResizeBorder(const prcBorder: PRECT;

const pUIWindow: IOleInPlaceUIWindow;

const FrameWindow: BOOL): HRESULT; stdcall;

function TranslateAccelerator(const lpMsg: PMSG; const pguidCmdGroup: PGUID;

const nCmdID: DWORD): HRESULT; stdcall;

function GetOptionKeyPath(var pchKey: POLESTR; const dw: DWORD): HRESULT; stdcall;

function GetDropTarget(const pDropTarget: IDropTarget;

out ppDropTarget: IDropTarget): HRESULT; stdcall;

function GetExternal(out ppDispatch: IDispatch): HRESULT; stdcall;

function TranslateUrl(const dwTranslate: DWORD; const pchURLIn: POLESTR;

var ppchURLOut: POLESTR): HRESULT; stdcall;

function FilterDataObject(const pDO: IDataObject;

out ppDORet: IDataObject): HRESULT; stdcall;

//zoc 2003-9-15 IDocHostUIHandler

//zoc 2003-9-15 IDocHostUIHandler2

function GetOverrideKeyPath(pchKey: POLESTR; dw: DWORD): HRESULT; stdcall;

//zoc 2003-9-15 IDocHostUIHandler2

//zoc 2003-9-15 IDocHostShowUI

function ShowMessage(hwnd: THandle;

lpstrText: POLESTR; lpstrCaption: POLESTR; dwType: longint; lpstrHelpFile: POLESTR;

dwHelpContext: longint; var plResult: LRESULT): HRESULT; stdcall;

function ShowHelp(hwnd: THandle; pszHelpFile: POLESTR; uCommand: integer;

dwData: longint; ptMouse: TPoint;

var pDispatchObjectHit: IDispatch): HRESULT; stdcall;

//zoc 2003-9-15 IDocHostShowUI

public

{ Public declarations }

published

{ Published declarations }

property HelpFile: string read FHelpFile write FHelpFile;

//zoc 2003-9-15 IDocHostUIHandler

property OnShowContextMenu: TShowContextMenuEvent read FOnShowContextmenu write

FOnShowContextmenu;

property OnGetHostInfo: TGetHostInfoEvent read FOnGethostinfo write fongethostinfo;

property OnShowUI: TShowUIEvent read FOnShowUI write FOnShowUI;

property OnHideUI: THideUIEvent read FOnHideUI write FOnHideUI;

property OnUpdateUI: TUpdateUIEvent read FOnUpdateUI write FOnUpdateUI;

property OnEnableModeless: TEnableModelessEvent read FOnEnableModeless write

FOnEnableModeless;

property OnOnDocWindowActivate: TOnDocWindowActivateEvent read FOnOnDocWindowActivate

write FOnOnDocWindowActivate;

property OnOnFrameWindowActivate: TOnFrameWindowActivateEvent read

FOnOnFrameWindowActivate write FOnOnFrameWindowActivate;

property OnResizeBorder: TResizeBorderEvent read FOnResizeBorder write

FOnResizeBorder;

property OnTranslateAccelerator: TTranslateAcceleratorEvent read

FOnTranslateAccelerator write FOnTranslateAccelerator;

property OnGetOptionKeyPath: TGetOptionKeyPathEvent read FOnGetOptionKeyPath write

FOnGetOptionKeyPath;

property OnGetDropTarget: TGetDropTargetEvent read FOnGetDropTarget write

FOnGetDropTarget;

property OnGetExternal: TGetExternalEvent read FOnGetExternal write FOnGetExternal;

property OnTranslateUrl: TTranslateUrlEvent read FOnTranslateUrL write

FOnTranslateUrL;

property OnFilterDataObject: TFilterDataObjectEvent read FOnFilterDataObject write

FOnFilterDataObject;

//zoc 2003-9-15 IDocHostUIHandler

//zoc 2003-9-15 IDocHostUIHandler2

property OnGetOverrideKeyPath: TGetOVerrideKeypathEvent read FOnGetOverrideKeyPath write FOnGetOverrideKeyPath;

//zoc 2003-9-15 IDocHostUIHandler2

//zoc 2003-9-15 IDocHostShowUI

property OnShowMessage: TShowMessageEvent read FOnShowMessage write FOnShowMessage;

property OnShowHelp: TShowHelpEvent read FOnShowHelp write FOnShowHelp;

//zoc 2003-9-15 IDocHostShowUI

end;

procedure Register;

implementation

var

Saved8087CW: Word;

//zoc 2003-9-15 IDocHostUIHandler

function TZoCWebBrowser.ShowContextMenu(const dwID: DWORD; const ppt: PPOINT;

const pcmdtReserved: IUnknown; const pdispReserved: IDispatch): HRESULT;

begin

if Assigned(FOnShowContextmenu) then

RESULT := FOnSHowContextmenu(dwID, ppt,

pcmdtreserved, pdispreserved)

else

RESULT := S_FALSE;

end;

function TZoCWebBrowser.GetHostInfo(var pInfo: TDOCHOSTUIINFO): HRESULT;

begin

pInfo.cbSize := SizeOf(pInfo);

pInfo.dwFlags := FUserInterfaceValue;

pInfo.dwDoubleClick := DOCHOSTUIDBLCLK_DEFAULT;

if Assigned(FOnGetHostInfo) then

Result := FOnGetHostInfo(pInfo)

else

Result := S_OK;

end;

function TZoCWebBrowser.ShowUI(const dwID: DWORD;

const pActiveObject: IOleInPlaceActiveObject;

const pCommandTarget: IOleCommandTarget; const pFrame: IOleInPlaceFrame;

const pDoc: IOleInPlaceUIWindow): HRESULT;

begin

if Assigned(FOnShowUI) then

Result := FOnShowUI(dwID, pActiveObject, pCommandTarget, pFrame, pDoc)

else

Result := S_FALSE;

end;

function TZoCWebBrowser.HideUI: HRESULT;

begin

if Assigned(FOnHideUI) then

Result := FOnHideUI

else

Result := S_FALSE;

end;

function TZoCWebBrowser.UpdateUI: HRESULT;

begin

if Assigned(FOnUpdateUI) then

Result := FOnUpdateUI

else

Result := S_FALSE;

end;

function TZoCWebBrowser.EnableModeless(const fEnable: BOOL): HRESULT;

begin

if Assigned(FOnEnableModeless) then

Result := FOnEnableModeless(fEnable)

else

Result := S_FALSE;

end;

function TZoCWebBrowser.OnDocWindowActivate(const fActivate: BOOL): HRESULT;

begin

if Assigned(FOnOnDocWindowActivate) then

Result := FOnOnDocWindowActivate(fActivate)

else

Result := S_FALSE;

end;

function TZoCWebBrowser.OnFrameWindowActivate(const fActivate: BOOL): HRESULT;

begin

if Assigned(FOnOnFrameWindowActivate) then

Result := FOnOnFrameWindowActivate(fActivate)

else

Result := S_FALSE;

end;

function TZoCWebBrowser.ResizeBorder(const prcBorder: PRECT;

const pUIWindow: IOleInPlaceUIWindow; const fRameWindow: BOOL): HRESULT;

begin

if Assigned(FOnResizeBorder) then

Result := FOnResizeBorder(prcBorder, pUIWindow, fRameWindow)

else

Result := S_FALSE;

end;

function TZoCWebBrowser.TranslateAccelerator(const lpMsg: PMSG;

const pguidCmdGroup: PGUID; const nCmdID: DWORD): HRESULT;

begin

if Assigned(FOnTranslateAccelerator) then

Result := FOnTranslateAccelerator(lpMsg, pguidCmdGroup, nCmdID)

else

Result := S_FALSE;

end;

function TZoCWebBrowser.GetOptionKeyPath(var pchKey: POLESTR; const dw: DWORD): HRESULT;

begin

if Assigned(FOnGetOptionKeyPath) then

Result := FOnGetOptionKeyPath(pchKey, dw)

else

Result := S_FALSE;

end;

function TZoCWebBrowser.GetDropTarget(const pDropTarget: IDropTarget;

out ppDropTarget: IDropTarget): HRESULT;

begin

if Assigned(FOnGetDropTarget) then

Result := FOnGetDropTarget(pDropTarget, ppDropTarget)

else

Result := S_OK;

end;

function TZoCWebBrowser.GetExternal(out ppDispatch: IDispatch): HRESULT;

begin

if Assigned(FOnGetExternal) then

Result := FOnGetExternal(ppDispatch)

else

Result := S_FALSE;

end;

function TZoCWebBrowser.TranslateUrl(const dwTranslate: DWORD;

const pchURLIn: POLESTR; var ppchURLOut: POLESTR): HRESULT;

begin

if Assigned(FOnTranslateUrl) then

Result := FOnTranslateUrl(dwTranslate, pchUrlIn, ppchUrlOut)

else

Result := S_FALSE;

end;

function TZoCWebBrowser.FilterDataObject(const pDO: IDataObject;

out ppDORet: IDataObject): HRESULT;

begin

if Assigned(FOnFilterDataObject) then

Result := FOnFilterDataObject(pDO, ppDORet)

else

Result := S_FALSE;

end;

//zoc 2003-9-15 IDocHostUIHandler

//zoc 2003-9-15 IDocHostUIHandler2

function TZoCWebBrowser.GetOverrideKeyPath(pchKey: POLESTR;

dw: DWORD): HRESULT;

begin

if Assigned(FOnGetOverrideKeyPath) then RESULT := FOnGetOverrideKeyPath(pchkey, dw) else

Result := S_OK;

end;

//zoc 2003-9-15 IDocHostUIHandler2

//zoc 2003-9-15 IDocHostShowUI

function TZoCWebBrowser.ShowMessage(hwnd: THandle; lpstrText: POLESTR;

lpstrCaption: POLESTR; dwType: longint; lpstrHelpFile: POLESTR;

dwHelpContext: longint; var plResult: LRESULT): HRESULT;

begin

if Assigned(FOnShowMessage) then

Result := FOnShowMessage(hwnd, lpstrText, lpStrCaption, dwType, lpStrHelpFile, dwHelpContext, plResult) else

Result := S_FALSE;

end;

function TZoCWebBrowser.ShowHelp(hwnd: THandle; pszHelpFile: POLESTR;

uCommand: integer; dwData: longint; ptMouse: TPoint;

var pDispatchObjectHit: IDispatch): HRESULT;

begin

Result := S_OK;

if Assigned(FOnShowHelp) then

Result := FOnShowHelp(hwnd, pszHelpFile, uCommand, dwData, ptMouse, pDispatchObjectHit) else

if FHelpFile <> '' then HtmlHelp(hwnd, Pchar(FHelpFile), ucommand, dwData) else

Result := S_FALSE;

end;

//zoc 2003-9-15 IDocHostShowUI

procedure Register;

begin

RegisterComponents('EoC', [TZoCWebBrowser]);

end;

initialization

Saved8087CW := Default8087CW;

{$IFDEF VER120}

bMsgHandler := False;

{$ENDIF}

OleInitialize(nil);

finalization

Set8087CW(Saved8087CW);

try

OleUninitialize;

except end;

end.