НЭТ БИЛЭТ
 
Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР
Репутация: 14 Всего: 41
|
Вот. Наконец таки добрался. В глубь по интерфейсам... Перехват навигации. Пока без описания. unit1.pas| Код | unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,Unit_Obj, OleCtrls, SHDocVw, StdCtrls,shellapi;
type TForm1 = class(TForm) WebBrowser1: TWebBrowser; WebBrowser2: TWebBrowser; Button1: TButton; Edit1: TEdit; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure WebBrowser1NewWindow2(Sender: TObject; var ppDisp: IDispatch; var Cancel: WordBool); private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure cbp(s:widestring); var param:string; begin param:=s; shellexecute(0,nil,pchar(application.ExeName),pchar(param),nil,0); end;
procedure TForm1.FormCreate(Sender: TObject); begin CallbackProc:=cbp; if ParamCount>0 then WebBrowser1.Navigate(ParamStr(1)); end;
procedure TForm1.Button1Click(Sender: TObject); begin WebBrowser1.Navigate(edit1.Text); end;
procedure TForm1.WebBrowser1NewWindow2(Sender: TObject; var ppDisp: IDispatch; var Cancel: WordBool); begin ppDisp:=TMyIC.Create(WebBrowser2.DefaultDispatch); end;
end.
|
Unit_Obj.pas| Код | unit Unit_Obj;
interface
uses Unit_Interfaces,windows,urlmon,sysutils;
type TCallbackProc=procedure(url:widestring);
TMyIC=class(TInterfacedObject,IDispatch) private FDisp:IDispatch; public constructor Create(Disp:IDispatch); protected function GetTypeInfoCount(out Count:integer):Hresult;stdcall; function GetTypeInfo(Index:Integer;LocaleId:Integer;out TypeInfo):Hresult;stdcall; function GetIDsOfNames(const IID:TGUID;Names:pointer;NameCount,LocaleID:integer;DispIDs:pointer):Hresult;stdcall; function Invoke(DispID:Integer;const IID:TGUID;LocaleID:Integer;Flags:Word;var Params;VarResult,ExcepInfo,ArgErr:pointer):Hresult;stdcall; function QueryInterface(const IID:TGUID;out Obj):Hresult;stdcall; end;
var CallbackProc:TCallbackProc=nil;
implementation
type
TTargetFramePriv = class (TInterfacedObject,ITargetFramePriv) private FTargetFramePriv:ITargetFramePriv; public constructor create(TargetFramePriv:ITargetFramePriv); protected function FindFrameDownwards(pszTargetName:LPCWSTR;dwFlags:DWORD;out ppunkTargetFrame:IUnknown ):HRESULT;stdcall; function FindFrameInContext(pszTargetName:LPCWSTR;punkContextFrame: IUnknown;dwFlags:DWORD;out ppunkTargetFrame:IUnknown):HRESULT;stdcall; function OnChildFrameActivate(pUnkChildFrame:IUnknown):HRESULT;stdcall; function OnChildFrameDeactivate(pUnkChildFrame:IUnknown):HRESULT;stdcall; function NavigateHack(grfHLNF:DWORD;pbc:cardinal{LPBC};pibsc: IBindStatusCallback;pszTargetName:LPCWSTR;pszUrl:LPCWSTR;pszLocation:LPCWSTR):HRESULT;stdcall; function FindBrowserByIndex(dwID:DWORD;out ppunkBrowser: IUnknown):HRESULT;stdcall; function QueryInterface(const IID:TGUID;out Obj):Hresult;stdcall; end;
TTargetFramePriv2 = class(TTargetFramePriv,ITargetFramePriv2) public constructor Create(TargetFramePriv2:ITargetFramePriv2); protected function AggregatedNavigation2(grfHLNF:DWORD;pbc:cardinal{LPBC;};pibsc:IBindStatusCallback;pszTargetName:LPCWSTR;pUri:IUri;pszLocation:LPCWSTR):HRESULT;stdcall; end;
TUri_Property_Type=(PropertyNo,PropertyDWORD,PropertyStr);
TUri_Property=record Property_Type : TUri_Property_Type; case TUri_Property_Type of PropertyDWORD: (vdw:dword); PropertyStr: (vws:pwidechar); end;
TPropertyTable = array [Uri_PROPERTY] of TUri_Property;
TUri=class(TInterfacedObject,IUri) private FPropertyTable:TPropertyTable; FPropertyFlags:cardinal; public constructor create(PropertyTable:TPropertyTable); protected function GetPropertyBSTR(uriProp:Uri_PROPERTY;var pbstrProperty:BSTR;dwFlags:DWORD):HRESULT;stdcall; function GetPropertyLength(uriProp:Uri_PROPERTY;var pcchProperty:DWORD;dwFlags:DWORD):HRESULT;stdcall; function GetPropertyDWORD(uriProp:Uri_PROPERTY;var pdwProperty:DWORD;dwFlags:DWORD):HRESULT;stdcall; function HasProperty(uriProp:Uri_PROPERTY;var pfHasProperty:BOOL):HRESULT;stdcall; function GetAbsoluteUri(var pbstrAbsoluteUri:BSTR):HRESULT;stdcall; function GetAuthority(var pbstrAuthority:BSTR):HRESULT;stdcall; function GetDisplayUri(var pbstrDisplayString:BSTR):HRESULT;stdcall; function GetDomain(var pbstrDomain:BSTR):HRESULT;stdcall; function GetExtension(var pbstrExtension:BSTR):HRESULT;stdcall; function GetFragment(var pbstrFragment:BSTR):HRESULT;stdcall; function GetHost(var pbstrHost:BSTR):HRESULT;stdcall; function GetPassword(var pbstrPassword:BSTR):HRESULT;stdcall; function GetPath(var pbstrPath:BSTR):HRESULT;stdcall; function GetPathAndQuery(var pbstrPathAndQuery:BSTR):HRESULT;stdcall; function GetQuery(var pbstrQuery:BSTR):HRESULT;stdcall; function GetRawUri(var pbstrRawUri:BSTR):HRESULT;stdcall; function GetSchemeName(var pbstrSchemeName:BSTR):HRESULT;stdcall; function GetUserInfo(var pbstrUserInfo:BSTR):HRESULT;stdcall; function GetUserName(var pbstrUserName:BSTR):HRESULT;stdcall; function GetHostType(var pdwHostType:DWORD):HRESULT;stdcall; function GetPort(var pdwPort:DWORD):HRESULT;stdcall; function GetScheme(var pdwScheme:DWORD):HRESULT;stdcall; function GetZone(var pdwZone:DWORD):HRESULT;stdcall; function GetProperties(pdwFlags:LPDWORD):HRESULT;stdcall; function IsEqual(pUri:IUri;var pfEqual:BOOL):HRESULT;stdcall; end;
{ TMyIC } constructor TMyIC.Create(Disp:IDispatch); begin FDisp:=Disp; end;
function TMyIC.GetTypeInfoCount(out Count:integer):Hresult;stdcall; begin result:=FDisp.GetTypeInfoCount(Count); end;
function TMyIC.GetTypeInfo(Index:Integer;LocaleId:Integer;out TypeInfo):Hresult;stdcall; begin result:=FDisp.GetTypeInfo(Index,LocaleId,TypeInfo); end;
function TMyIC.GetIDsOfNames(const IID:TGUID;Names:pointer;NameCount,LocaleID:integer;DispIDs:pointer):Hresult;stdcall; begin result:=FDisp.GetIDsOfNames(IID,Names,NameCount,LocaleID,DispIDs); end;
function TMyIC.Invoke(DispID:Integer;const IID:TGUID;LocaleID:Integer;Flags:Word;var Params;VarResult,ExcepInfo,ArgErr:pointer):Hresult;stdcall; begin result:=FDisp.Invoke(DispID,IID,LocaleID,Flags,Params,VarResult,ExcepInfo,ArgErr); end;
function TMyIC.QueryInterface(const IID:TGUID;out Obj):Hresult;stdcall; begin result:=FDisp.QueryInterface(IID,Obj); if result<>0 then exit; if IsEqualGUID(IID,IID_TargetFramePriv)then ITargetFramePriv(obj):=TTargetFramePriv.create(ITargetFramePriv(obj))as ITargetFramePriv else if IsEqualGUID(IID,IID_TargetFramePriv2)then ITargetFramePriv2(obj):=TTargetFramePriv2.create(ITargetFramePriv2(obj))as ITargetFramePriv2; end;
{ TTargetFramePriv }
constructor TTargetFramePriv.create(TargetFramePriv: ITargetFramePriv); begin FTargetFramePriv:=TargetFramePriv; end;
function TTargetFramePriv.FindBrowserByIndex(dwID: DWORD; out ppunkBrowser: IInterface): HRESULT; begin result:=FTargetFramePriv.FindBrowserByIndex(dwID,ppunkBrowser); end;
function TTargetFramePriv.FindFrameDownwards(pszTargetName: LPCWSTR; dwFlags: DWORD; out ppunkTargetFrame: IInterface): HRESULT; begin result:=FTargetFramePriv.FindFrameDownwards(pszTargetName,dwFlags,ppunkTargetFrame); end;
function TTargetFramePriv.FindFrameInContext(pszTargetName: LPCWSTR; punkContextFrame: IInterface; dwFlags: DWORD; out ppunkTargetFrame: IInterface): HRESULT; begin result:=FTargetFramePriv.FindFrameInContext(pszTargetName,punkContextFrame,dwFlags,ppunkTargetFrame); end;
function TTargetFramePriv.NavigateHack(grfHLNF: DWORD; pbc: cardinal; pibsc: IBindStatusCallback; pszTargetName, pszUrl, pszLocation: LPCWSTR): HRESULT; var i:IInterface; begin if (pbc<>0) and (pibsc<>nil) then begin if Assigned(CallbackProc) then CallbackProc(pszUrl); pszUrl:='about:blank'; end; result:=FTargetFramePriv.NavigateHack(grfHLNF,pbc,pibsc,pszTargetName,pszUrl,pszLocation); end;
function TTargetFramePriv.OnChildFrameActivate( pUnkChildFrame: IInterface): HRESULT; begin result:=FTargetFramePriv.OnChildFrameActivate(pUnkChildFrame); end;
function TTargetFramePriv.OnChildFrameDeactivate( pUnkChildFrame: IInterface): HRESULT; begin result:=FTargetFramePriv.OnChildFrameDeactivate(pUnkChildFrame); end;
function TTargetFramePriv.QueryInterface(const IID: TGUID; out Obj): Hresult; begin result:=FTargetFramePriv.QueryInterface(IID,Obj); end;
const PropertyTable:TPropertyTable= ( (Property_Type:PropertyStr; vws:'about:blank'), //Uri_PROPERTY_ABSOLUTE_URI (Property_Type:PropertyNo; vdw:0), //Uri_PROPERTY_AUTHORITY (Property_Type:PropertyStr; vws:'about:blank'), //Uri_PROPERTY_DISPLAY_URI (Property_Type:PropertyNo; vdw:0), //Uri_PROPERTY_DOMAIN (Property_Type:PropertyNo; vdw:0), //Uri_PROPERTY_EXTENSION (Property_Type:PropertyNo; vdw:0), //Uri_PROPERTY_FRAGMENT (Property_Type:PropertyNo; vdw:0), //Uri_PROPERTY_HOST (Property_Type:PropertyNo; vdw:0), //Uri_PROPERTY_PASSWORD (Property_Type:PropertyStr; vws:'blank'), //Uri_PROPERTY_PATH (Property_Type:PropertyStr; vws:'blank'), //Uri_PROPERTY_PATH_AND_QUERY (Property_Type:PropertyNo; vdw:0), //Uri_PROPERTY_QUERY (Property_Type:PropertyStr; vws:'about:blank'), //Uri_PROPERTY_RAW_URI (Property_Type:PropertyStr; vws:'about'), //Uri_PROPERTY_SCHEME_NAME (Property_Type:PropertyNo; vdw:0), //Uri_PROPERTY_USER_INFO (Property_Type:PropertyNo; vdw:0), //Uri_PROPERTY_USER_NAME (Property_Type:PropertyDWORD;vdw:DWORD(Uri_HOST_UNKNOWN)),//Uri_PROPERTY_HOST_TYPE (Property_Type:PropertyNo; vdw:0), //Uri_PROPERTY_PORT (Property_Type:PropertyDWORD;vdw:DWORD(URL_SCHEME_ABOUT)),//Uri_PROPERTY_SCHEME (Property_Type:PropertyNo; vdw:0) //Uri_PROPERTY_ZONE );
{ TTargetFramePriv2 }
function TTargetFramePriv2.AggregatedNavigation2(grfHLNF: DWORD; pbc: cardinal; pibsc: IBindStatusCallback; pszTargetName: LPCWSTR; pUri: IUri; pszLocation: LPCWSTR): HRESULT; var url:WideString; begin if Assigned(CallbackProc) and (0=pUri.GetAbsoluteUri(url))then CallbackProc(url); pUri:=TUri.Create(PropertyTable) as IUri; result:=ITargetFramePriv2(FTargetFramePriv).AggregatedNavigation2(grfHLNF,pbc,pibsc,pszTargetName,pUri,pszLocation); end;
constructor TTargetFramePriv2.Create(TargetFramePriv2: ITargetFramePriv2); begin FTargetFramePriv:=ITargetFramePriv(TargetFramePriv2); end;
{ TUri }
constructor TUri.Create(PropertyTable:TPropertyTable); var i:Uri_PROPERTY; fr:dword; begin FPropertyTable:=PropertyTable; FPropertyFlags:=0; for i:=Uri_PROPERTY_ABSOLUTE_URI to Uri_PROPERTY_ZONE do if FPropertyTable[i].Property_Type<>PropertyNo then FPropertyFlags:=FPropertyFlags or(1 shl DWORD(i)); end;
function TUri.GetAbsoluteUri(var pbstrAbsoluteUri: BSTR): HRESULT; begin result:= GetPropertyBSTR(Uri_PROPERTY_ABSOLUTE_URI,pbstrAbsoluteUri,0); end;
function TUri.GetAuthority(var pbstrAuthority: BSTR): HRESULT; begin result:= GetPropertyBSTR(Uri_PROPERTY_AUTHORITY,pbstrAuthority,0); end;
function TUri.GetDisplayUri(var pbstrDisplayString: BSTR): HRESULT; begin result:= GetPropertyBSTR(Uri_PROPERTY_DISPLAY_URI,pbstrDisplayString,0); end;
function TUri.GetDomain(var pbstrDomain: BSTR): HRESULT; begin result:= GetPropertyBSTR(Uri_PROPERTY_DOMAIN,pbstrDomain,0); end;
function TUri.GetExtension(var pbstrExtension: BSTR): HRESULT; begin result:= GetPropertyBSTR(Uri_PROPERTY_EXTENSION,pbstrExtension,0); end;
function TUri.GetFragment(var pbstrFragment: BSTR): HRESULT; begin result:= GetPropertyBSTR(Uri_PROPERTY_FRAGMENT,pbstrFragment,0); end;
function TUri.GetHost(var pbstrHost: BSTR): HRESULT; begin result:= GetPropertyBSTR(Uri_PROPERTY_HOST,pbstrHost,0); end;
function TUri.GetHostType(var pdwHostType: DWORD): HRESULT; begin result:= GetPropertyDWORD(Uri_PROPERTY_HOST_TYPE,pdwHostType,0); end;
function TUri.GetPassword(var pbstrPassword: BSTR): HRESULT; begin Result:=GetPropertyBSTR(Uri_PROPERTY_PASSWORD,pbstrPassword,0); end;
function TUri.GetPath(var pbstrPath: BSTR): HRESULT; begin Result:=GetPropertyBSTR(Uri_PROPERTY_PATH,pbstrPath,0); end;
function TUri.GetPathAndQuery(var pbstrPathAndQuery: BSTR): HRESULT; begin Result:=GetPropertyBSTR(Uri_PROPERTY_PATH_AND_QUERY,pbstrPathAndQuery,0); end;
function TUri.GetPort(var pdwPort: DWORD): HRESULT; begin Result:=GetPropertyDWORD(Uri_PROPERTY_PORT,pdwPort,0); end;
function TUri.GetProperties(pdwFlags: LPDWORD): HRESULT; begin if pdwFlags=nil then result:=S_FALSE else begin pdwFlags^:=FPropertyFlags; result:=0; end; end;
function TUri.GetPropertyBSTR(uriProp: Uri_PROPERTY; var pbstrProperty: BSTR; dwFlags: DWORD): HRESULT; begin if (dword(uriProp)>18) or (FPropertyTable[uriProp].Property_Type=PropertyNo) then result:=S_FALSE else if FPropertyTable[uriProp].Property_Type<>PropertyStr then Result:=E_INVALIDARG else begin pbstrProperty:=FPropertyTable[uriProp].vws; result:=S_OK; end; end;
function TUri.GetPropertyDWORD(uriProp: Uri_PROPERTY; var pdwProperty: DWORD; dwFlags: DWORD): HRESULT; begin if (dword(uriProp)>18) or (FPropertyTable[uriProp].Property_Type=PropertyNo) then result:=S_FALSE else if FPropertyTable[uriProp].Property_Type<>PropertyDWORD then Result:=E_INVALIDARG else begin pdwProperty:=FPropertyTable[uriProp].vdw; result:=S_OK; end; end;
function TUri.GetPropertyLength(uriProp: Uri_PROPERTY; var pcchProperty: DWORD; dwFlags: DWORD): HRESULT; begin if (dword(uriProp)>18) or (FPropertyTable[uriProp].Property_Type=PropertyNo) then result:=S_FALSE else if FPropertyTable[uriProp].Property_Type<>PropertyStr then Result:=E_INVALIDARG else begin pcchProperty:=length(FPropertyTable[uriProp].vws); result:=S_OK; end; end;
function TUri.GetQuery(var pbstrQuery: BSTR): HRESULT; begin Result:=GetPropertyBSTR(Uri_PROPERTY_QUERY,pbstrQuery,0); end;
function TUri.GetRawUri(var pbstrRawUri: BSTR): HRESULT; begin Result:=GetPropertyBSTR(Uri_PROPERTY_RAW_URI,pbstrRawUri,0); end;
function TUri.GetScheme(var pdwScheme: DWORD): HRESULT; begin Result:=GetPropertyDWORD(Uri_PROPERTY_SCHEME,pdwScheme,0); end;
function TUri.GetSchemeName(var pbstrSchemeName: BSTR): HRESULT; begin Result:=GetPropertyBSTR(Uri_PROPERTY_SCHEME_NAME,pbstrSchemeName,0); end;
function TUri.GetUserInfo(var pbstrUserInfo: BSTR): HRESULT; begin Result:=GetPropertyBSTR(Uri_PROPERTY_USER_INFO,pbstrUserInfo,0); end;
function TUri.GetUserName(var pbstrUserName: BSTR): HRESULT; begin Result:=GetPropertyBSTR(Uri_PROPERTY_USER_NAME,pbstrUserName,0); end;
function TUri.GetZone(var pdwZone: DWORD): HRESULT; begin Result:=GetPropertyDWORD(Uri_PROPERTY_ZONE,pdwZone,0); end;
function TUri.HasProperty(uriProp: Uri_PROPERTY; var pfHasProperty: BOOL): HRESULT; begin result:=S_OK; pfHasProperty:=(dword(uriProp)<18) and (FPropertyTable[uriProp].Property_Type<>PropertyNo); end;
function TUri.IsEqual(pUri: IUri; var pfEqual: BOOL): HRESULT; begin result:=0; pfEqual:=false; // Для правильной работы IsEqual необходимо разкомментировать последующий код, // но, если pUri, также, является интерфейсом от TUri, получим stack overflow !!! { if pUri=nil then pfEqual:=false else try if 0<>pUri.IsEqual(self as iuri,pfEqual)then pfEqual:=false; except pfEqual:=false; end; } end;
end.
|
Unit_Interfaces.pas| Код | unit Unit_Interfaces;
interface uses windows,urlmon;
const IID_Uri = '{a39ee748-6a27-4817-a6f2-13914bef5890}'; IID_TargetFramePriv:TGUID = '{9216E421-2BF5-11D0-82B4-00A0C90C29C5}'; IID_TargetFramePriv2:TGUID = '{b2c867e6-69d6-46f2-a611-ded9a4bd7fef}';
type BSTR=WideString;
Uri_PROPERTY =( Uri_PROPERTY_ABSOLUTE_URI = 0, Uri_PROPERTY_STRING_START = Uri_PROPERTY_ABSOLUTE_URI, Uri_PROPERTY_AUTHORITY = 1, Uri_PROPERTY_DISPLAY_URI = 2, Uri_PROPERTY_DOMAIN = 3, Uri_PROPERTY_EXTENSION = 4, Uri_PROPERTY_FRAGMENT = 5, Uri_PROPERTY_HOST = 6, Uri_PROPERTY_PASSWORD = 7, Uri_PROPERTY_PATH = 8, Uri_PROPERTY_PATH_AND_QUERY = 9, Uri_PROPERTY_QUERY = 10, Uri_PROPERTY_RAW_URI = 11, Uri_PROPERTY_SCHEME_NAME = 12, Uri_PROPERTY_USER_INFO = 13, Uri_PROPERTY_USER_NAME = 14, Uri_PROPERTY_STRING_LAST = Uri_PROPERTY_USER_NAME, Uri_PROPERTY_HOST_TYPE = 15, Uri_PROPERTY_DWORD_START = Uri_PROPERTY_HOST_TYPE, Uri_PROPERTY_PORT = 16, Uri_PROPERTY_SCHEME = 17, Uri_PROPERTY_ZONE = 18, Uri_PROPERTY_DWORD_LAST = Uri_PROPERTY_ZONE );
Uri_HOST_TYPE =( Uri_HOST_UNKNOWN = 0, Uri_HOST_DNS = 1, Uri_HOST_IPV4 = 2, Uri_HOST_IPV6 = 3, Uri_HOST_IDN = 4 );
TURL_SCHEME = ( URL_SCHEME_INVALID = -1, URL_SCHEME_UNKNOWN = 0, URL_SCHEME_FTP, URL_SCHEME_HTTP, URL_SCHEME_GOPHER, URL_SCHEME_MAILTO, URL_SCHEME_NEWS, URL_SCHEME_NNTP, URL_SCHEME_TELNET, URL_SCHEME_WAIS, URL_SCHEME_FILE, URL_SCHEME_MK, URL_SCHEME_HTTPS, URL_SCHEME_SHELL, URL_SCHEME_SNEWS, URL_SCHEME_LOCAL, URL_SCHEME_JAVASCRIPT, URL_SCHEME_VBSCRIPT, URL_SCHEME_ABOUT, URL_SCHEME_RES, URL_SCHEME_MSSHELLROOTED, URL_SCHEME_MSSHELLIDLIST, URL_SCHEME_MSHELP, URL_SCHEME_MSSHELLDEVICE, URL_SCHEME_WILDCARD, URL_SCHEME_SEARCH_MS, URL_SCHEME_SEARCH, URL_SCHEME_KNOWNFOLDER, URL_SCHEME_MAXVALUE);
IUri = interface(IUnknown) ['{a39ee748-6a27-4817-a6f2-13914bef5890}'] function GetPropertyBSTR(uriProp:Uri_PROPERTY;var pbstrProperty:BSTR;dwFlags:DWORD):HRESULT;stdcall; function GetPropertyLength(uriProp:Uri_PROPERTY;var pcchProperty:DWORD;dwFlags:DWORD):HRESULT;stdcall; function GetPropertyDWORD(uriProp:Uri_PROPERTY;var pdwProperty:DWORD;dwFlags:DWORD):HRESULT;stdcall; function HasProperty(uriProp:Uri_PROPERTY;var pfHasProperty:BOOL):HRESULT;stdcall; function GetAbsoluteUri(var pbstrAbsoluteUri:BSTR):HRESULT;stdcall; function GetAuthority(var pbstrAuthority:BSTR):HRESULT;stdcall; function GetDisplayUri(var pbstrDisplayString:BSTR):HRESULT;stdcall; function GetDomain(var pbstrDomain:BSTR):HRESULT;stdcall; function GetExtension(var pbstrExtension:BSTR):HRESULT;stdcall; function GetFragment(var pbstrFragment:BSTR):HRESULT;stdcall; function GetHost(var pbstrHost:BSTR):HRESULT;stdcall; function GetPassword(var pbstrPassword:BSTR):HRESULT;stdcall; function GetPath(var pbstrPath:BSTR):HRESULT;stdcall; function GetPathAndQuery(var pbstrPathAndQuery:BSTR):HRESULT;stdcall; function GetQuery(var pbstrQuery:BSTR):HRESULT;stdcall; function GetRawUri(var pbstrRawUri:BSTR):HRESULT;stdcall; function GetSchemeName(var pbstrSchemeName:BSTR):HRESULT;stdcall; function GetUserInfo(var pbstrUserInfo:BSTR):HRESULT;stdcall; function GetUserName(var pbstrUserName:BSTR):HRESULT;stdcall; function GetHostType(var pdwHostType:DWORD):HRESULT;stdcall; function GetPort(var pdwPort:DWORD):HRESULT;stdcall; function GetScheme(var pdwScheme:DWORD):HRESULT;stdcall; function GetZone(var pdwZone:DWORD):HRESULT;stdcall; function GetProperties(pdwFlags:LPDWORD):HRESULT;stdcall; function IsEqual(pUri:IUri;var pfEqual:BOOL):HRESULT;stdcall; end;
ITargetFramePriv = interface(IUnknown) ['{9216e421-2bf5-11d0-82b4-00a0c90c29c5}'] function FindFrameDownwards(pszTargetName:LPCWSTR;dwFlags:DWORD;out ppunkTargetFrame:IUnknown ):HRESULT;stdcall; function FindFrameInContext(pszTargetName:LPCWSTR;punkContextFrame: IUnknown;dwFlags:DWORD;out ppunkTargetFrame:IUnknown):HRESULT;stdcall; function OnChildFrameActivate(pUnkChildFrame:IUnknown):HRESULT;stdcall; function OnChildFrameDeactivate(pUnkChildFrame:IUnknown):HRESULT;stdcall; function NavigateHack(grfHLNF:DWORD;pbc:cardinal{LPBC;};pibsc: IBindStatusCallback;pszTargetName:LPCWSTR;pszUrl:LPCWSTR;pszLocation:LPCWSTR):HRESULT;stdcall; function FindBrowserByIndex(dwID:DWORD;out ppunkBrowser: IUnknown):HRESULT;stdcall; end;
ITargetFramePriv2 = interface(ITargetFramePriv) ['{b2c867e6-69d6-46f2-a611-ded9a4bd7fef}'] function AggregatedNavigation2(grfHLNF:DWORD;pbc:cardinal{LPBC;};pibsc:IBindStatusCallback;pszTargetName:LPCWSTR;pUri:IUri;pszLocation:LPCWSTR):HRESULT;stdcall; end;
implementation
end.
|
--------------------
умную мысль держи при себе, а дурной - поделись с другими
|