delphi做个小程序,就是软件框体内打开网页(无其他操作,只是打开网页而已),但是网页每30分钟会出现一个js弹窗要点击确认,关于这个弹窗如何实现自动点击自动确认呢。。求代码。谢谢。
解决方案 »
- 怎么在程序里打开阿里旺旺呢?ShellExecute会跳出IE
- 请朋友帮帮忙,这段C代码如何改成DELPHI的?谢谢!
- 请教如何制作带箭头的splitter,实现显示隐藏,如:DreamWeaver的各个面板的伸缩
- 求助动态生成TADOStoredProc
- 现在做一个程序,要将原有手工填写的表格做成电子版的,并且在输入的地方嵌入EDIT或COMBOX?用什么方法实现啊?急急急!!
- DELPHI数据的分配
- 送分问题:access violation ......write address of 00000000???
- 很难吗
- 想做一段公用程序计算任何三个数想乘,是做成组件好还是函数好?
- 小弟想编写一个学校的人事档案管理系统,谁有类似的代码呀?你要多少分,给多少
- 高难道算法,把html里的table导出道excel,要支持快行快列
- 【求助】delphi 7 使用infopower
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OleCtrls, SHDocVw, ActiveX;
type
IDocHostShowUI = interface(IUnknown)
['{c4d244b0-d43e-11cf-893b-00aa00bdce1a}']
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;
end;
TWebBrowser = class(SHDocVw.TWebBrowser,IDocHostShowUI)
protected
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;
end;
type
TForm1 = class(TForm)
WebBrowser1: TWebBrowser;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TWebBrowser }
function TWebBrowser.ShowHelp(hwnd: THandle; pszHelpfile: POLESTR; uCommand,
dwData: Integer; ptMouse: TPoint; var pDispatchObjectHit: IDispatch): HRESULT;
begin
Result := S_FALSE;
end;
function TWebBrowser.ShowMessage(hwnd: THandle; lpstrText,
lpstrCaption: POLESTR; dwType: Integer; lpstrHelpfile: POLESTR;
dwHelpContext: Integer; var plResult: LRESULT): HRESULT;
begin
plResult := MessageBoxW(hwnd,PWChar(lpstrText),'Title',64);
Result := S_OK;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
WebBrowser1.Navigate('E:/alert.htm');
end;
end.
var
hChild : hwnd;
arr: array[0..511] of Char;
str: string;
begin
Result := True; if GetParent(H) = HMainForm then
begin //可以在这里进一步判断类名,以免关掉其他弹出窗口
EnumChildWindows(H,@CallBackSubProc, HMainForm); hChild := FindWindowEx(H, 0, PChar('Static'), '');
if hChild > 0 then
begin
//hChild := FindWindowEx(H, 0, PChar('Button'), PChar('确定'));
ZeroMemory(@arr,512);
GetWindowText(hChild,arr,512);
//SendMessage(hChild, BM_Click, 0, 0);
str := strPas(arr);
if Trim(str)='' then
begin
hChild := FindWindowEx(H, hChild, PChar('Static'), '');
if hChild > 0 then
begin
ZeroMemory(@arr,512);
GetWindowText(hChild,arr,512);
str := strPas(arr);
frmMain.Memo1.Lines.Add(str);
end;
end; //if Pos('该等级招贤馆容纳武将己达上限',str)>0 then
// frmMain.Timer4.Enabled := False;
if not frmMain.CloseAllMsgBox then
frmMain.Timer2.Enabled := False;
end;
hChild := FindWindowEx(H, 0, PChar('Button'), PChar('确定'));
if hChild > 0 then
begin
//hChild := FindWindowEx(H, 0, PChar('Button'), PChar('确定')); SendMessage(hChild, BM_Click, 0, 0);
if not frmMain.CloseAllMsgBox then
frmMain.Timer2.Enabled := False; end;
hChild := FindWindowEx(H, 0, PChar('Button'), PChar('OK'));
if hChild > 0 then
begin
//hChild := FindWindowEx(H, 0, PChar('Button'), PChar('确定')); SendMessage(hChild, BM_Click, 0, 0);
if not frmMain.CloseAllMsgBox then
frmMain.Timer2.Enabled := False; end;
end;
end;procedure TfrmMain.CloseSuccessInfo; //关闭操作成功的信息
//var
//h: THandle;
//cc: array[0..255] of Char;
begin
EnumWindows(@CallBackProc, Self.Handle);
//Memo1.Lines.Add(StrPas(cc));
end;这个放定时器里
//仅仅适合32位程序
procedure TForm1.FormCreate(Sender: TObject);
var
P : Pointer;
Buf : array [0..7] of Byte;
n : SIZE_T; //低版本的Delphi 定义为 LongWord
begin
P := GetProcAddress(GetModuleHandle('user32.dll'), 'SoftModalMessageBox');
Buf[0] := $B8;
Pinteger(@Buf[1])^ := ID_YES; //设置所有MessageBox的返回值,也可以是ID_NO,ID_OK等,
Buf[5] := $C2;
Buf[6] := $04;
Buf[7] := $00;
WriteProcessMemory(GetCurrentProcess(), P , @Buf, Length(Buf), n);
Application.MessageBox('不会弹出提示框了','AAA', MB_YESNO or MB_ICONWARNING);
end;