:: MVP ::
|
|
:: RSS ::
|
|
|
Как обновить содержимое TWebBrowser?
uses
MSHTML;
function WB_DocumentLoaded(WB: TWebBrowser ): Boolean;
var
iDoc: IHtmlDocument2;
begin
Result := False;
if Assigned(WB) then
begin
if WB.Document <> nil then
begin
WB.ControlInterface.Document.QueryInterface(IHtmlDocument2, iDoc);
Result := Assigned(iDoc);
end;
end;
end;
procedure WB_Refresh(WB: TWebBrowser);
const
REFRESH_COMPLETELY = 3;
var
KeyState: TKeyBoardState;
RefreshLevel: OleVariant;
begin
if WB_DocumentLoaded(WB) then
begin
GetKeyboardState(KeyState);
try
if not ((KeyState[vk_Control] and 128) <> 0) then
WB.Refresh
else
RefreshLevel := REFRESH_COMPLETELY;
WB.DefaultInterface.Refresh2(RefreshLevel);
except
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
WB_Refresh(WebBrowser1);
end;
|
Как проверить, находится ли TWebBrowser (и IE) в режиме автономной работы или нет?
function IsGlobalOffline: Boolean;
var
dwState: DWORD;
dwSize: DWORD;
begin
dwState := 0;
dwSize := SizeOf(dwState);
Result := False;
if (InternetQueryOption(nil, INTERNET_OPTION_CONNECTED_STATE, @dwState, dwSize)) then
if ((dwState and INTERNET_STATE_DISCONNECTED_BY_USER) <> 0) then
Result := True;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
case isGlobalOffline of
True: ShowMessage('Режим автономной работы включен');
False: ShowMessage('Режим автономной работы выключен');
end;
end;
// Подобного результата можно добиться отредактировав реестр по адресу
// HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\GlobalUserOffline
|
Как в TWebBrowser показать окно предварительного просмотра перед печатью?
uses
MSHTML;
function WB_DocumentLoaded(WB: TWebBrowser): Boolean;
var
iDoc: IHtmlDocument2;
begin
Result := False;
if Assigned(WB) then
begin
if WB.Document <> nil then
begin
WB.ControlInterface.Document.QueryInterface(IHtmlDocument2, iDoc);
Result := Assigned(iDoc);
end;
end;
end;
procedure WB_ShowPrintPreview(WB: TWebBrowser);
var
vaIn, vaOut: OleVariant;
begin
if WB_DocumentLoaded(WB) then
try
WB.ControlInterface.ExecWB(OLECMDID_PRINTPREVIEW, OLECMDEXECOPT_DONTPROMPTUSER, vaIn, vaOut);
except
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
WB_ShowPrintPreview(WebBrowser1);
end;
|
Как в TWebBrowser показать диалог "Параметры страницы"?
uses
MSHTML;
function WB_DocumentLoaded(WB: TWebBrowser ): Boolean;
var
iDoc: IHtmlDocument2;
begin
Result := False;
if Assigned(WB) then
begin
if WB.Document <> nil then
begin
WB.ControlInterface.Document.QueryInterface(IHtmlDocument2, iDoc);
Result := Assigned(iDoc);
end;
end;
end;
procedure WB_ShowPageSetup(WB: TWebBrowser);
var
vaIn, vaOut: OleVariant;
begin
if WB_DocumentLoaded(WB) then
try
WB.ControlInterface.ExecWB(OLECMDID_PAGESETUP, OLECMDEXECOPT_PROMPTUSER, vaIn, vaOut);
except
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
WB_ShowPageSetup(WebBrowser1);
end;
|
Как в TWebBrowser показать диалог поиска?
uses
ActiveX, MSHTML;
procedure InvokeCMD(WB: TWebbrowser; InvokeIE: Boolean; Value1, Value2: Integer; var vaIn, vaOut: OleVariant);
const
CGID_WebBrowser: TGUID = '{ED016940-BD5B-11cf-BA4E-00C04FD70816}';
var
CmdTarget: IOleCommandTarget;
PtrGUID: PGUID;
begin
New(PtrGUID);
if InvokeIE then
PtrGUID^ := CGID_WebBrowser
else
PtrGuid := PGUID(nil);
if WB.Document <> nil then
try
WB.Document.QueryInterface(IOleCommandTarget, CmdTarget);
if CmdTarget <> nil then
try
CmdTarget.Exec(PtrGuid, Value1, Value2, vaIn, vaOut);
finally
CmdTarget._Release;
end;
except
end;
Dispose(PtrGUID);
end;
procedure WB_ShowFindDialog(WB: TWebBrowser);
const
HTMLID_FIND = 1;
var
vaIn, vaOut: OleVariant;
begin
InvokeCMD(WB, True, HTMLID_FIND, 0, vaIn, vaOut);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
WB_ShowFindDialog(WebBrowser1);
end;
|
Как в TWebBrowser показать исходный код страницы?
uses
ActiveX, MSHTML;
procedure InvokeCMD(WB: TWebBrowser; InvokeIE: Boolean; Value1, Value2: Integer; var vaIn, vaOut: OleVariant);
const
CGID_WebBrowser: TGUID = '{ED016940-BD5B-11cf-BA4E-00C04FD70816}';
var
CmdTarget: IOleCommandTarget;
PtrGUID: PGUID;
begin
New(PtrGUID);
if InvokeIE then
PtrGUID^ := CGID_WebBrowser
else
PtrGuid := PGUID(nil);
if WB.Document <> nil then
try
WB.Document.QueryInterface(IOleCommandTarget, CmdTarget);
if CmdTarget <> nil then
try
CmdTarget.Exec(PtrGuid, Value1, Value2, vaIn, vaOut);
finally
CmdTarget._Release;
end;
except
end;
Dispose(PtrGUID);
end;
procedure WB_ShowSourceCode(WB: TWebbrowser);
const
HTMLID_VIEWSOURCE = 2;
var
vaIn, vaOut: OleVariant;
begin
InvokeCMD(WB, True, HTMLID_VIEWSOURCE, 0, vaIn, vaOut);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
WB_ShowSourceCode(WebBrowser1);
end;
|
Как установить значение ZOOM'а текста для TWebBrowser?
uses
ActiveX, MSHTML;
type
TWBFontSize = 0..4;
function WB_DocumentLoaded(WB: TWebBrowser): Boolean;
var
iDoc: IHtmlDocument2;
begin
Result := False;
if Assigned(WB) then
begin
if WB.Document <> nil then
begin
WB.ControlInterface.Document.QueryInterface(IHtmlDocument2, iDoc);
Result := Assigned(iDoc);
end;
end;
end;
procedure WB_SetZoom(WB: TWebBrowser; Size: TWBFontSize);
var
v: OleVariant;
begin
if WB_DocumentLoaded(WB) then
begin
// if (WB.QueryStatusWB(OLECMDID_ZOOM) and OLECMDF_SUPPORTED) = 0 then
// Exit;
v := Size;
WB.ExecWB(OLECMDID_ZOOM, OLECMDEXECOPT_DODEFAULT {OLECMDEXECOPT_PROMPTUSER}, v);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
WB_SetZoom(WebBrowser1, 2);
// 0: Самый мелкий
// 1: Мелкий
// 2: Средний
// 3: Крупный
// 4: Самый крупный
end;
|
Как получить значение ZOOM'а текста для TWebBrowser?
uses
ActiveX, MSHTML, MSHTML;
type
TWBFontSize = 0..4;
procedure InvokeCMD(WB: TWebbrowser; InvokeIE: Boolean; Value1, Value2: Integer; var vaIn, vaOut: OleVariant);
const
CGID_WebBrowser: TGUID = '{ED016940-BD5B-11cf-BA4E-00C04FD70816}';
var
CmdTarget: IOleCommandTarget;
PtrGUID: PGUID;
begin
New( PtrGUID );
if InvokeIE then
PtrGUID^ := CGID_WebBrowser
else
PtrGuid := PGUID(nil);
if WB.Document <> nil then
try
WB.Document.QueryInterface(IOleCommandTarget, CmdTarget);
if CmdTarget <> nil then
try
CmdTarget.Exec(PtrGuid, Value1, Value2, vaIn, vaOut);
finally
CmdTarget._Release;
end;
except
end;
Dispose(PtrGUID);
end;
function WB_DocumentLoaded(WB: TWebBrowser): Boolean;
var
iDoc: IHtmlDocument2;
begin
Result := False;
if Assigned(WB) then
begin
if WB.Document <> nil then
begin
WB.ControlInterface.Document.QueryInterface(IHtmlDocument2, iDoc);
Result := Assigned(iDoc);
end;
end;
end;
function WB_GetZoom(WB: TWebBrowser): TWBFontSize;
var
vaIn, vaOut: Olevariant;
begin
Result := 0;
if WB_DocumentLoaded(WB) then
begin
// if (WB.QueryStatusWB(OLECMDID_ZOOM) and OLECMDF_SUPPORTED) = 0 then
// Exit;
// vaIn := Null;
InvokeCmd(WB, False, OLECMDID_ZOOM, OLECMDEXECOPT_DONTPROMPTUSER, vaIn, vaOut);
// или проще
// WB.ExecWB(OLECMDID_ZOOM, OLECMDEXECOPT_DONTPROMPTUSER, Null, vaOut);
Result := vaOut;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
case WB_GetZoom(WebBrowser1) of
0: ShowMessage('Самый мелкий');
1: ShowMessage('Мелкий');
2: ShowMessage('Средний');
3: ShowMessage('Крупный');
4: ShowMessage('Самый крупный');
end;
end;
|
Как получить cookie из TWebBrowser?
// Способ первый
uses
MSHTML;
function WB_DocumentLoaded(WB: TWebBrowser): Boolean;
var
iDoc: IHtmlDocument2;
begin
Result := False;
if Assigned(WB) then
begin
if WB.Document <> nil then
begin
WB.ControlInterface.Document.QueryInterface(IHtmlDocument2, iDoc);
Result := Assigned(iDoc);
end;
end;
end;
function WB_GetCookie(WB: TWebBrowser): string;
var
document: IHTMLDocument2;
begin
Result := '';
if WB_DocumentLoaded(WB) then
begin
document := WB.Document as IHTMLDocument2;
if Assigned(document) then
Result := document.cookie;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(WB_GetCookie(WebBrowser1));
end;
// Способ второй
WebBrowser1.OleObject.Document.cookie
|
При использовании материала - ссылка на сайт обязательна
|
|