首先复习怎样调用外部程序:
Delphi 运行外部程序是使用
Windows.WinExec 或
ShellAPI.ShellExecute, 譬如:
WinExec('notepad.exe', SW_NORMAL); {打开记事本}
WinExec('regedit.exe', SW_NORMAL); {打开注册表编辑器}
DLL 文件与 EXE 文件的主要区别就是 EXE 可以直接运行, 而 DLL 不可以;
但在 Win32 系统下, 我们可以使用系统文件 rundll32.exe 调用 DLL 中的功能;
譬如下面一句程序可以打开控制面板窗口:
WinExec('rundll32.exe shell32.dll,Control_RunDLL', SW_NORMAL);
//可以简化一下(省略后缀):
WinExec('rundll32 shell32,Control_RunDLL', SW_NORMAL);
//SW_NORMAL 是窗口打开状态选项的常量, 它的值是 1, 为了代码简洁, 可以再简化:
WinExec('rundll32 shell32,Control_RunDLL', 1);
本例效果图:
代码文件:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Button8: TButton;
Button9: TButton;
Button10: TButton;
Button11: TButton;
Button12: TButton;
Button13: TButton;
Button14: TButton;
Button15: TButton;
Button16: TButton;
Button17: TButton;
Button18: TButton;
Button19: TButton;
Button20: TButton;
Button21: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure Button10Click(Sender: TObject);
procedure Button11Click(Sender: TObject);
procedure Button12Click(Sender: TObject);
procedure Button13Click(Sender: TObject);
procedure Button14Click(Sender: TObject);
procedure Button15Click(Sender: TObject);
procedure Button16Click(Sender: TObject);
procedure Button17Click(Sender: TObject);
procedure Button18Click(Sender: TObject);
procedure Button19Click(Sender: TObject);
procedure Button20Click(Sender: TObject);
procedure Button21Click(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
WinExec('rundll32 shell32,Control_RunDLL', 1); {控制面板}
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
WinExec('rundll32 shell32,Control_RunDLL access.cpl', 1); {辅助功能选项}
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
WinExec('rundll32 shell32,Control_RunDLL appwiz.cpl', 1); {添加或删除程序}
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
WinExec('rundll32 shell32,Control_RunDLL desk.cpl', 1); {显示 属性}
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
WinExec('rundll32 shell32,Control_RunDLL firewall.cpl', 1); {Windows 防火墙}
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
WinExec('rundll32 shell32,Control_RunDLL hdwwiz.cpl', 1); {添加硬件向导}
end;
procedure TForm1.Button7Click(Sender: TObject);
begin
WinExec('rundll32 shell32,Control_RunDLL inetcpl.cpl', 1); {Internet 属性}
end;
procedure TForm1.Button8Click(Sender: TObject);
begin
WinExec('rundll32 shell32,Control_RunDLL intl.cpl', 1); {区域和语言选项}
end;
procedure TForm1.Button9Click(Sender: TObject);
begin
WinExec('rundll32 shell32,Control_RunDLL irprops.cpl', 1); {无线链接}
end;
procedure TForm1.Button10Click(Sender: TObject);
begin
WinExec('rundll32 shell32,Control_RunDLL joy.cpl', 1); {游戏控制器}
end;
procedure TForm1.Button11Click(Sender: TObject);
begin
WinExec('rundll32 shell32,Control_RunDLL main.cpl', 1); {鼠标 属性}
end;
procedure TForm1.Button12Click(Sender: TObject);
begin
WinExec('rundll32 shell32,Control_RunDLL mmsys.cpl', 1); {声音和音频设备 属性}
end;
procedure TForm1.Button13Click(Sender: TObject);
begin
WinExec('rundll32 shell32,Control_RunDLL ncpa.cpl', 1); {网络连接}
end;
procedure TForm1.Button14Click(Sender: TObject);
begin
WinExec('rundll32 shell32,Control_RunDLL netsetup.cpl', 1); {网络安装向导}
end;
procedure TForm1.Button15Click(Sender: TObject);
begin
WinExec('rundll32 shell32,Control_RunDLL nusrmgr.cpl', 1); {用户帐号}
end;
procedure TForm1.Button16Click(Sender: TObject);
begin
WinExec('rundll32 shell32,Control_RunDLL odbccp32.cpl', 1); {ODBC 数据源管理器}
end;
procedure TForm1.Button17Click(Sender: TObject);
begin
WinExec('rundll32 shell32,Control_RunDLL powercfg.cpl', 1); {电源选项 属性}
end;
procedure TForm1.Button18Click(Sender: TObject);
begin
WinExec('rundll32 shell32,Control_RunDLL sysdm.cpl', 1); {系统属性}
end;
procedure TForm1.Button19Click(Sender: TObject);
begin
WinExec('rundll32 shell32,Control_RunDLL telephon.cpl', 1); {电话和调制解调器选项}
end;
procedure TForm1.Button20Click(Sender: TObject);
begin
WinExec('rundll32 shell32,Control_RunDLL wscui.cpl', 1); {Windows 安全中心}
end;
procedure TForm1.Button21Click(Sender: TObject);
begin
WinExec('rundll32 shell32,Control_RunDLL wuaucpl.cpl', 1); {自动更新}
end;
end.
窗体文件:
object Form1: TForm1
Left = 0
Top = 0
Caption = 'Form1'
ClientHeight = 227
ClientWidth = 430
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
Position = poDesktopCenter
PixelsPerInch = 96
TextHeight = 13
object Button1: TButton
Left = 8
Top = 8
Width = 132
Height = 25
Caption = #25511#21046#38754#26495#31383#21475
TabOrder = 0
OnClick = Button1Click
end
object Button2: TButton
Left = 8
Top = 39
Width = 132
Height = 25
Caption = #36741#21161#21151#33021#36873#39033
TabOrder = 1
OnClick = Button2Click
end
object Button3: TButton
Left = 8
Top = 70
Width = 132
Height = 25
Caption = #28155#21152#25110#21024#38500#31243#24207
TabOrder = 2
OnClick = Button3Click
end
object Button4: TButton
Left = 8
Top = 101
Width = 132
Height = 25
Caption = #26174#31034' '#23646#24615
TabOrder = 3
OnClick = Button4Click
end
object Button5: TButton
Left = 8
Top = 132
Width = 132
Height = 25
Caption = 'Windows '#38450#28779#22681
TabOrder = 4
OnClick = Button5Click
end
object Button6: TButton
Left = 8
Top = 163
Width = 132
Height = 25
Caption = #28155#21152#30828#20214#21521#23548
TabOrder = 5
OnClick = Button6Click
end
object Button7: TButton
Left = 8
Top = 194
Width = 132
Height = 25
Caption = 'Internet '#23646#24615
TabOrder = 6
OnClick = Button7Click
end
object Button8: TButton
Left = 150
Top = 8
Width = 132
Height = 25
Caption = #21306#22495#21644#35821#35328#36873#39033
TabOrder = 7
OnClick = Button8Click
end
object Button9: TButton
Left = 150
Top = 39
Width = 132
Height = 25
Caption = #26080#32447#38142#25509
TabOrder = 8
OnClick = Button9Click
end
object Button10: TButton
Left = 150
Top = 70
Width = 132
Height = 25
Caption = #28216#25103#25511#21046#22120
TabOrder = 9
OnClick = Button10Click
end
object Button11: TButton
Left = 150
Top = 101
Width = 132
Height = 25
Caption = #40736#26631' '#23646#24615
TabOrder = 10
OnClick = Button11Click
end
object Button12: TButton
Left = 150
Top = 132
Width = 132
Height = 25
Caption = #22768#38899#21644#38899#39057#35774#22791' '#23646#24615
TabOrder = 11
OnClick = Button12Click
end
object Button13: TButton
Left = 150
Top = 163
Width = 132
Height = 25
Caption = #32593#32476#36830#25509
TabOrder = 12
OnClick = Button13Click
end
object Button14: TButton
Left = 150
Top = 194
Width = 132
Height = 25
Caption = #32593#32476#23433#35013#21521#23548
TabOrder = 13
OnClick = Button14Click
end
object Button15: TButton
Left = 291
Top = 8
Width = 132
Height = 25
Caption = #29992#25143#24080#21495
TabOrder = 14
OnClick = Button15Click
end
object Button16: TButton
Left = 291
Top = 39
Width = 132
Height = 25
Caption = 'ODBC '#25968#25454#28304#31649#29702#22120
TabOrder = 15
OnClick = Button16Click
end
object Button17: TButton
Left = 291
Top = 70
Width = 132
Height = 25
Caption = #30005#28304#36873#39033' '#23646#24615
TabOrder = 16
OnClick = Button17Click
end
object Button18: TButton
Left = 291
Top = 101
Width = 132
Height = 25
Caption = #31995#32479#23646#24615
TabOrder = 17
OnClick = Button18Click
end
object Button19: TButton
Left = 291
Top = 132
Width = 132
Height = 25
Caption = #30005#35805#21644#35843#21046#35299#35843#22120#36873#39033
TabOrder = 18
OnClick = Button19Click
end
object Button20: TButton
Left = 291
Top = 163
Width = 132
Height = 25
Caption = 'Windows '#23433#20840#20013#24515
TabOrder = 19
OnClick = Button20Click
end
object Button21: TButton
Left = 291
Top = 194
Width = 132
Height = 25
Caption = #33258#21160#26356#26032
TabOrder = 20
OnClick = Button21Click
end
end