我有一个使用TEmbeddedWb自动执行数据报废任务的应用程序。
当我的应用导航到某些网站时会显示消息/弹出框,这会使流程变慢。
我想阻止TWebbrowser可以显示的任何消息框。
我已经将'silent'属性设置为true,并且还将onshowmessage方法设置如下,但仍然显示消息框。任何提示?
function TForm1.webShowMessage(Sender: TObject; HWND: Cardinal; lpstrText,
lpstrCaption: PWideChar; dwType: Integer; lpstrHelpFile: PWideChar; dwHelpContext: Integer;
var plResult: Integer): HRESULT;
begin
plresult := S_OK;
end;
答案 0 :(得分:0)
我可以通过对TEmbeddedWb源进行一些更改来实现这些任务,特别是在函数下面:
procedure TEmbeddedWB.HandleDialogBoxes(var AMsg: Messages.TMessage);
这是改变:
DlgClss := GetWinClass(PopHandle);
WinClss := GetWinClass(Windows.GetParent(PopHandle));
DlgCaption := GetWinText(PopHandle);
if (DlgClss = 'Internet Explorer_TridentDlgFrame') or ((DlgClss = '#32770'))
// comment here to make all windows be evaluated
{and (WinClss <> 'TApplication') and
(FindControl(Windows.GetParent(PopHandle)) = nil))}
then
begin
if (WinClss = 'TApplication') or (FindControl(Windows.GetParent(PopHandle)) <> nil) then
begin
if pos('web browser',lowercase(DlgCaption)) = 0 then
exit;
end;