程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Delphi實現無窮無盡關不掉的對話框-真整人

Delphi實現無窮無盡關不掉的對話框-真整人

編輯:Delphi

Delphi實現無窮無盡關不掉的對話框,整人程序啊。例如,當你訪問某一種網頁時,他會彈出無數的對話框,讓你一個勁地點下去,一直進行到幾十次,弄得你沒有脾氣。這究竟是什麼原因呢?通過下面的例子,我們便會對這個問題有一個全面的了解。我們用Delphi 來編寫一個這樣效果的可執行性程序。運行它後,會彈出一個又一個的對話框,直到最後一個對話框出現為止。這期間你無法關閉該程序,因為它屏蔽了“Ctrl+Alt+Delete”組合鍵。程序運行界面:

Delphi實現無窮無盡關不掉的對話框

設計思想:本程序主要是在窗體的OnCreate 事件中,添加一系列對話框函數,並在每個對話框中給出設計的各種信息。同時調用相關的Windows API 函數來實現屏蔽系統的“Ctrl+Alt+Delete”組合鍵。

設計步驟:這個關不盡的對話框窗口首先通過一系列對話框函數實現生成對話框功能。InputBox(),ShowMessage(),InputQuery(),MessageDlg(),MessageDlgPos()等函數都可以實現產生對話框的功能。還需要調用Windows API 函數中的“系統”ParametersInfo 來實現屏蔽和恢復系統的功能鍵。

1.新建工程
(1)啟動Delphi 6.0 程序。選擇“文件”菜單下的“新建”命令,從彈出的子菜單中選擇Application 選項,則出現新建工程的Form1 窗口。
(2)選擇“文件”菜單下的“工程另存為”命令,彈出Save Unit1 As 對話框。在“保存在”列表框中選擇需要存放該窗口文件所在的目錄名;在“文件名”編輯框中填寫文件名,這裡填寫“Unit1”,點擊“保存”按鈕,保存上面的選項。
(3)執行上一步後,將彈出“工程另存為”對話框。在“保存在”列表框中選擇需要存放該工程的目錄名,最好和第(2)步選取相同的目錄;在“文件名”編輯框中填寫保存處理該工程的源代碼的文件名,這裡填寫“Project1”,點擊“保存”按鈕,保存上面的選項。
2.修改窗口
(1)激活Form1 窗口,在“屬性”中設置該窗體的Caption 屬性為“教你整人”,Color 屬性設置為“clBtnFace”。
(2)在構件選項板上選擇“標准”頁上的Label 選項,將鼠標移到窗口中點擊,生產Label 控件,用鼠標調整其合適的大小和在窗體上的位置。
(3)選擇“標准”頁上的Button 選項,在窗體中添加一個按鈕,調整其合適的大小。在“屬性”中將其Caption 屬性分別設置為“退出”。

代碼分析:

(1)首先在程序啟動時屏蔽系統的功能鍵。

var
temp:integer;
begin
SystemParametersInfo( SPI_SCREENSAVERRUNNING, 1, @temp, 0);
end;

(2)然後通過各種對話框函數,使產生主窗體之前生成一系列對話框。這些對話框函數應該添加在窗體的OnCreate 事件中。

procedure TForm1.FormCreate(Sender: TObject);
var
result:boolean;
New String:string;
dir:string;
SELDIRHELP:integer;
begin
InputBox(’輸入你的IP 地址’, ’提示: ’,’輸入你的IP 地址’);
showmessage(’你的計算機已被我控制,趕快關機!’);
showmessage(’如果你不想關機,你必須按照我的要求來做!’);
showmessage(’准備好了嗎?准備好了,我們就開始了!’);
InputQuery(’Input Box’, ’趕快輸入你的姓名: ’, “新建”String);
MessageDlg(’你的用戶名無效!!!’, mtInFormation,[mbOk], 0);
showmessage(’你必須填寫你的真實資料!’);
InputQuery(’Input Box’, ’趕快輸入你的姓名: ’, “新建”String);
InputQuery(’Input Box’, ’趕快輸入你的姓名: ’, “新建”String);
MessageDlgPos(’確認這是你的用戶名嗎?’,mtConfirmation, mbYesNoCancel, 0,
200, 200);
InputBox(’輸入你的操作系統名稱’, ’提示: ’,’輸入你的操作系統名稱’);
MessageDlg(’你必須輸入你的真實操作系統名稱!!!’, mtInFormation,[mbOk],
0);
MessageDlgPos(’確認這是你的操作系統名稱嗎?’,mtConfirmation, mbYesNo_
Cancel, 0, 200, 200);
showmessage(’下一步一定要找出你的系統文件位置’);
Dir := ’C:\Windows’;
SELDIRHELP:=1000;
SelectDirectory(Dir, [sdAllowCreate, sdPerFormCreate, sdPrompt],SELDIRHELP);
Label1.Caption:=’不要輕易向別人洩漏你的IP 哦!’; //產生最後一個窗體時
為Label1 賦值並設置其顏色
Label1.Font.Size:=18;
Label1.Font.Color:=clred;
end;

(3)當最後一個窗體生成後,點擊其中的“退出”按鈕,可以實現輸出信息、關閉窗口和取消系統功能鍵的屏蔽。

procedure TForm1.Button1Click(Sender: TObject);
var
temp:integer;
begin
showmessage(’這麼輕易就走了?’);
close;
SystemParametersInfo( SPI_SCREENSAVERRUNNING, 0, @temp, 0);
end;

下面來看完整的程序代碼(Delphi無窮無盡關不掉的對話框):

vIEw source print? 01 unit Unit1; 02 interface 03 uses 04 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, 05 StdCtrls,FileCtrl; 06 type 07 TForm1 = class(TForm) 08 Label1: TLabel; 09 Button1: TButton; 10 procedure FormCreate(Sender: TObject); 11 procedure Button1Click(Sender: TObject); 12 private 13 { Private declarations } 14 public 15 { Public declarations } 16 end; 17 var 18 Form1: TForm1; 19 implementation 20 {$R *.DFM} 21 procedure TForm1.FormCreate(Sender: TObject); 22 var 23 result:boolean; 24 NewString:string; 25 dir:string; 26 SELDIRHELP:integer; 27 temp:integer; 28 begin 29 SystemParametersInfo( SPI_SCREENSAVERRUNNING, 1, @temp, 0); 30 InputBox(’輸入你的IP 地址’, ’提示: ’,’輸入你的IP 地址’); 31 showmessage(’你的計算機已被我控制,趕快關機!’); 32 showmessage(’如果你不想關機,你必須按照我的要求來做!’); 33 showmessage(’准備好了嗎?准備好了,我們就開始了!’); 34 InputQuery(’Input Box’, ’趕快輸入你的姓名: ’, “新建”String); 35 MessageDlg(’你的用戶名無效!!!’, mtInFormation,[mbOk], 0); 36 showmessage(’你必須填寫你的真實資料!’); 37 InputQuery(’Input Box’, ’趕快輸入你的姓名: ’, “新建”String); 38 InputQuery(’Input Box’, ’趕快輸入你的姓名: ’, “新建”String); 39 MessageDlgPos(’確認這是你的用戶名嗎?’,mtConfirmation, mbYesNoCancel, 0, 40 200200); 41 InputBox(’輸入你的操作系統名稱’, ’提示: ’,’輸入你的操作系統名稱’); 42 MessageDlg(’你必須輸入你的真實操作系統名稱!!!’, mtInFormation,[mbOk], 43 0); 44 MessageDlgPos(’確認這是你的操作系統名稱嗎?’,mtConfirmation, mbYesNo_ 45 Cancel, 0200200); 46 showmessage(’下一步一定要找出你的系統文件位置’); 47 Dir := ’C:\Windows’; 48 SELDIRHELP:=1000; 49 SelectDirectory(Dir, [sdAllowCreate, sdPerFormCreate, sdPrompt],SELDIRHELP); 50 Label1.Caption:=’不要輕易向別人洩漏你的IP 哦!’; 51 Label1.Font.Size:=18; 52 Label1.Font.Color:=clred; 53 end; 54 procedure TForm1.Button1Click(Sender: TObject); 55 var 56 temp:integer; 57 begin 58 showmessage(’這麼輕易就走了?’); 59 close; 60 SystemParametersInfo( SPI_SCREENSAVERRUNNING, 0, @temp, 0); 61 end; 62 end.
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved