分享
 
 
 

VB==快速调用系统对话框(全)

王朝vb·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

(作者:甘冀平2000年12月21日 17:46)

Windows系统给我们提供了许多非常实用的功能,而且都是以对话框的形式展现在用户眼前,比如:查找文件、浏览选择后执行程序,等等 ... 如果我们能在程序中以简练的代码快速调用它们,就可以移花接木般地达到需要的目的。这样,既省却了再次编写繁琐代码的过程,又能让程序快速执行(调用系统内核模块,能不快吗^_^)。以下就列举几个这样的例子:

●快速调用“查找文件对话框”

●快速调用“系统重新启动对话框”

●快速调用“程序运行对话框”

●快速调用“文件属性对话框”

●快速调用“软盘格式化对话框”

●快速调用“网络资源映射对话框”

●快速调用“查找文件对话框”

快速调用“查找文件对话框”

在Windows环境中,如果要查找一个文件,通常情况下采取的步骤是:

1、确定查找文件所在的文件夹范围

2、按热键F3

3、在出现的“查找:所有文件”窗口中,输入各个项目。

是不是有点复杂。在VB程序中,能否通过点击一个按钮,就出现第3步的“查找:所有文件”?答案是肯定的!代码如下:

'声明API函数

Declare Function ShellExecute Lib "shell32.dll" Alias _

"ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation _

As String, ByVal lpFile As String, ByVal lpParameters _

As String, ByVal lpDirectory As String, ByVal nShowCmd _

As Long) As Long

'定义常量参数

Const SW_SHOW = 5

'通用调用查找对话框函数

Public Sub ShowFindDialog(Optional InitialDirectory As String)

ShellExecute 0, "find", _

IIf(InitialDirectory = "", "", InitialDirectory), _

vbNullString, vbNullString, SW_SHOW

End Sub

'调用查找对话框例程

Call ShowFindDialog("C:\Program Files")

调用的代码ShowFindDialog("C:\Program Files"),非常简练。注意:如果括号中的参数不是一个合法的目录名,这一行调用命令将不会产生任何结果。如果参数为空,就等于选择了当前目录。

快速调用“系统重新启动对话框”

我们在安装应用软件时,经常遇到安装结束时要求用户重新启动机器的确认对话框,这时系统将根据用户的选择重新启动,或者暂时退出安装,等待用户手工重新启动机器。其实,在我们的应用程序中,可以用很少的代码就调用出系统本身的重新启动对话框,真的是非常的快捷!代码是:

'声明API函数

Private Declare Function SHRestartSystemMB Lib _

"shell32" Alias "#59" (ByVal hOwner As Long, ByVal _

sExtraPrompt As String, ByVal uFlags As Long) As Long

'定义系统重新启动常量参数

Private Const SystemChangeRestart = 4

'通用系统启动过程

Public Sub SettingsChanged(FormName As Form)

SHRestartSystemMB FormName.hWnd, vbNullString, SystemChangeRestart

End Sub

'调用例程

SettingsChanged Form1

运行一下,看看实际的效果图:

直接使用系统内在的功能,省得自己去绘制表单了,不仅实现的功能可以很严谨,而且样子还很专业呢!

快速调用“程序运行对话框”

一般情况下,当我们需要在VB程序中调用一个外部.exe或者.com程序时,一般要用到shell命令。它提供了一种非常简捷的方式让我们执行一个确定的外部程序。但缺点也显现出了,就是它不提供用户选择执行程序的功能。你也许还记得这样的经历:我们用鼠标点击桌面左小角的“开始”,在选择“运行”,这时,就出现了一个“运行”对话框:

你可以在这里直接输入要执行的程序全路径,或者,点击“浏览”按钮,选择一个程序。

要达到同样的效果,请使用下面的代码:

'声明API函数

'引用了未公开的DLL文件shell32

Private Declare Function SHRunDialog Lib "shell32" _

Alias "#61" (ByVal hOwner As Long, ByVal UnknownP1 _

As Long, ByVal UnknownP2 As Long, ByVal szTitle _

As String, ByVal szPrompt As String, ByVal uFlags _

As Long) As Long

'通用调用运行对话框过程

'参数Title表示对话框的标题,参数Description表示对话框中的描述文字

Public Sub ShowRunDialog(ByRef CallingForm As Form, _

Optional Title As String, _

Optional Description As String)

If Title = "" Then Title = "Run"

If Description = "" Then Description = _

"Type the name of a program to open, " & _

"then click OK when finished."

SHRunDialog CallingForm.hWnd, 0, 0, _

Title, Description, 0

End

'调用例程

Call ShowRunDialog(Me, "Run Dialog", "Choose a program and press OK")

怎么样,输入完以上代码了吗?执行一下看看效果,是不是很满意:

快速调用“文件属性对话框”

为了查看一个文件的大小、创建时间、存取属性(只读、归档、隐藏)等等情况,采取的步骤一般是:

1、定位文件

2、用鼠标右键单击文件

3、在出现的菜单中选择“属性”

这时,就出现了文件属性对话框。比如,对于c:\autoexec.bat实施上面的操作后,图示如下:

这时,我们就能对它的各种属性值进行修改。

在VB开发中,为了实现上面的功能,要应用到ShellExecuteEX函数,具体如下:

'声明结构变量

Private Type SHELLEXECUTEINFO

cbSize As Long

fMask As Long

hwnd As Long

lpVerb As String

lpFile As String

lpParameters As String

lpDirectory As String

nShow As Long

hInstApp As Long

lpIDList As Long

lpClass As String

hkeyClass As Long

dwHotKey As Long

hIcon As Long

hProcess As Long

End Type

'定义常量参数

Const SEE_MASK_INVOKEIDLIST = &HC

Const SEE_MASK_NOCLOSEPROCESS = &H40

Const SEE_MASK_FLAG_NO_UI = &H400

'引用API函数

Private Declare Function ShellExecuteEX Lib "shell32.dll" Alias _

"ShellExecuteEx" (SEI As SHELLEXECUTEINFO) As Long

'通用调用文件属性对话框过程

'第一个参数为欲操作的文件全路径,第二个参数为窗口句柄

Public Sub ShowProps(FileName As String, OwnerhWnd As Long)

Dim SEI As SHELLEXECUTEINFO

Dim r As Long

With SEI

.cbSize = Len(SEI)

.fMask = SEE_MASK_NOCLOSEPROCESS Or _

SEE_MASK_INVOKEIDLIST Or SEE_MASK_FLAG_NO_UI

.hwnd = OwnerhWnd

.lpVerb = "properties"

.lpFile = FileName

.lpParameters = vbNullChar

.lpDirectory = vbNullChar

.nShow = 0

.hInstApp = 0

.lpIDList = 0

End With

r = ShellExecuteEX(SEI)

End Sub

Use

'例程:调用c:\autoexec.bat的属性对话框

Call ShowProps("c:\autoexec.bat", Me.hwnd)

快速调用“软盘格式化对话框”

我们都已经熟悉了在Windows中格式化软盘的过程,操作步骤一般是:

1、打开“我的电脑”

2、用鼠标右键点击图标“3.5英寸软盘A”

3、在出现的菜单中,选择“格式化”

接着,就出现了下图所示的对话框:

在这个窗口中,再依次选择你对软盘格式化的要求参数。

在VB开发中,通过简捷的代码就能快速地调用这个系统对话框,并且,通过设置不同的调用参数,能够直接选择对话框出现的形式。下面就详细介绍:

'声明API函数

'第2个参数表示调用对话框的具体形式

Private Declare Function GetWindowsDirectory Lib "kernel32" _

Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, _

ByVal nSize As Long) As Long

'调用通用软盘格式化对话框

Private Sub cmdFormat(ByVal mystyle As Integer)

Dim rtn As String

Dim Buffer As String

Dim WinPath As String

Buffer = String$(255, 0)

rtn = GetWindowsDirectory(Buffer, Len(Buffer))

WinPath = Left(Trim(Buffer), rtn)

rtn = Shell(WinPath + "\rundll32.exe shell32.dll,SHFormatDrive", mystyle)

End Sub

'调用例程

Private Sub Command2_Click()

Call cmdFormat(1)

End Sub

请注意:上面调用例程中有一个参数,这里是1。根据你的要求不同,可以设置不同数值从而得到初始页面不同的格式化对话框。以下做一个对照:

参数为1的情况:Call cmdFormat(1)

参数为2的情况:Call cmdFormat(2)

参数为4的情况:Call cmdFormat(4)

快速调用“网络资源映射对话框”

在局域网上,我们经常将服务器上的一个共享目录映射为本地一个盘符,从而能否方便快速地访问网络资源。在VB中,可以用很少的代码就调出映射对话框,请看下面的代码:

'声明API函数

Private Declare Function WNetConnectionDialog Lib "mpr.dll" _

(ByVal hWnd As Long, ByVal dwType As Long) As Long

'网络资源映射对话框

Private Sub ShowMapDrives(hWnd As Long)

WNetConnectionDialog hWnd, 1

End Sub

'调用例程

Private Sub Command2_Click()

Call ShowMapDrives(Me.hWnd)

End Sub

运行程序,下面就是最终的结果:

我们注意到,在上面的代码中,如果将“WNetConnectionDialog hWnd, 1”一行中的1修改为2,执行后将出现打印端口映射对话框:

没有想到吧!竟然能如此方便的获取网络资源!

总结

以上列举了几个调用系统对话框的例子,大家可以看到,全部都使用到了windows的API函数。的确,要善于发现并应用API海洋中的浪花,有了她们,我们的程序开发就不会枯燥,新奇的感觉将不断地涌现!

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有