按时间自动关闭的弹出对话框
2010-07-02 13:07
281 查看
本人所知道两种可以按时间自动关闭的SHOWMESSAGE弹出对话框的方法,现和大家共享一下
1,利用TIMER控件计算时间,FINDWINDOW查找窗体关闭的方法
2,用WINDOWS隐藏API,显示有时间控制功能的SHOWMESSAGE
第一种方法:
1 procedure TForm1.Button1Click(Sender: TObject);
2 begin
3 Timer1.Enabled := True;
4 ShowMessage('hello world');
5 end;
6
7 procedure TForm1.Timer1Timer(Sender: TObject);
8 var
9 Handle : THandle;
10 begin
11 Handle := FindWindow('TMessageForm', PChar(Application.Title)); //注意FINDWINDOW的第一个参数
12 if Handle > 0 then
13 begin
14 SendMessage(Handle, WM_CLOSE, 0, 0);
15 end;
16 Self.SetFocus;
17 (Sender as TTimer).Enabled := False; //倒计时时间为TIMER控件的Interval属性
18 end;
19
20 这种方法比较灵活,也可以使用在MessageBox或者自定义的窗体,只需要知道FINDWINDOW的两个参数就可以了
第2种方法
1 function MessageTimeOut(aCaption, aText : String; Interval : Integer):Boolean;
2 type
3 TMsgBoxTimeOut=function(hWnd:HWND;lpText:PChar;lpCaption:PChar;uType:UINT;wLanguageId:WORD;dwMilliseconds:DWORD):Integer;Stdcall;
4 var
5 LibHandle : THandle;
6 MsgForm : TMsgBoxTimeOut;
7 begin
8 Result := False;
9 LibHandle := LoadLibrary('user32.dll');
10 try
11 @MsgForm := GetProcAddress(LibHandle, 'MessageBoxTimeoutA');
12 if not (@MsgForm = nil) then
13 begin
14 Result := True;
15 MsgForm(Application.Handle, PChar(aText), PChar(aCaption), MB_OK, 0, Interval);//参数1是句柄,参数2是标题,参数3是显示的文字内容
16 end; //参数4是按钮类型,参数5直接带0,参数6就是结束时间单位是毫秒
17 finally
18 FreeLibrary(LibHandle);
19 end;
20 end;
21
22 procedure TForm1.Button2Click(Sender: TObject);
23 begin
24 MessageTimeOut('OK', 'hello world', 2000);
25 end;
26 这种方法需要调用user32.dll
27
1,利用TIMER控件计算时间,FINDWINDOW查找窗体关闭的方法
2,用WINDOWS隐藏API,显示有时间控制功能的SHOWMESSAGE
第一种方法:
1 procedure TForm1.Button1Click(Sender: TObject);
2 begin
3 Timer1.Enabled := True;
4 ShowMessage('hello world');
5 end;
6
7 procedure TForm1.Timer1Timer(Sender: TObject);
8 var
9 Handle : THandle;
10 begin
11 Handle := FindWindow('TMessageForm', PChar(Application.Title)); //注意FINDWINDOW的第一个参数
12 if Handle > 0 then
13 begin
14 SendMessage(Handle, WM_CLOSE, 0, 0);
15 end;
16 Self.SetFocus;
17 (Sender as TTimer).Enabled := False; //倒计时时间为TIMER控件的Interval属性
18 end;
19
20 这种方法比较灵活,也可以使用在MessageBox或者自定义的窗体,只需要知道FINDWINDOW的两个参数就可以了
第2种方法
1 function MessageTimeOut(aCaption, aText : String; Interval : Integer):Boolean;
2 type
3 TMsgBoxTimeOut=function(hWnd:HWND;lpText:PChar;lpCaption:PChar;uType:UINT;wLanguageId:WORD;dwMilliseconds:DWORD):Integer;Stdcall;
4 var
5 LibHandle : THandle;
6 MsgForm : TMsgBoxTimeOut;
7 begin
8 Result := False;
9 LibHandle := LoadLibrary('user32.dll');
10 try
11 @MsgForm := GetProcAddress(LibHandle, 'MessageBoxTimeoutA');
12 if not (@MsgForm = nil) then
13 begin
14 Result := True;
15 MsgForm(Application.Handle, PChar(aText), PChar(aCaption), MB_OK, 0, Interval);//参数1是句柄,参数2是标题,参数3是显示的文字内容
16 end; //参数4是按钮类型,参数5直接带0,参数6就是结束时间单位是毫秒
17 finally
18 FreeLibrary(LibHandle);
19 end;
20 end;
21
22 procedure TForm1.Button2Click(Sender: TObject);
23 begin
24 MessageTimeOut('OK', 'hello world', 2000);
25 end;
26 这种方法需要调用user32.dll
27
相关文章推荐
- JS怎样捕获浏览器关闭时间弹出自定义对话框
- 如何在关闭窗口的时候,不让浏览器自动弹出确认关闭对话框
- VC 定时自动关闭MessageBox弹出对话框 (2010-12-15 15:28:06)转载▼
- VC自动关闭弹出的MessageBox对话框的总结
- VC 定时自动关闭MessageBox弹出对话框
- 选择时间对话框,在点击对话框外面的时候对话框不会自动关闭
- javaFX 可控制自动关闭时间的弹出提示窗口
- webbrowse 自动关闭弹出对话框
- 〖原创〗如何实现程序自动关闭powerbuilder弹出的消息窗口?
- qt 对话框关闭以及自动释放内存
- js关闭不弹出对话框
- NoAds 2006.07.28(可以自动关闭网页浏览时弹出的广告小视窗)zkacb汉化版
- 关闭eclipse自动弹出console的功能
- MFC 关闭所有弹出模态对话框,并创建新的对话框(切换/跳转窗口)
- js弹出提示信息并自动关闭
- 为弹出窗口设置n秒后自动关闭
- 关于Foundation 对话框组件关闭后,页面自动滚动的解决办法
- JS关闭窗口而不弹出提示 如何让有滚动条的层自动滚动到最下
- 关闭eclipse的console自动弹出功能
- EXTJS 弹出很炫的提示框,在规定时间自动消失