| VB问题全功略(23) [查找本页请按Ctrl+F] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 111、您认识 VB 的扩展名吗? 112、完全模拟【开始】中的【运行...】功能 113、模拟【网路上的芳邻】及【我的电脑】中的【连线 / 中断网路磁盘】 114、自制 Round 函数 (取小数点几位) 115、如何找出 Windows 目录的正确路径? 我不知道您已经使用 VB 多久时间了,但是今天当您面对一堆乱七八糟的文件时,您能由扩展名来判断那一个文件是属於 VB 的文件吗?恐怕不是每一个人都可以? 您知道以下这些扩展名都是 VB 指定给【设计阶段文件】的扩展名吗?
请您现在按下【开始】中的【运行...】,看看【运行...】问话框中的说明,是不是如下: 请输入程序、资料夹、文件或 Internet 资源的名称,Windows 会自动开启。 如果说您我也可以做到这种功能,只要是可开启的、可执行的,通通可以做到,您相信吗?不要怀疑!不但可以做到,而且更让您惊讶的,是程序竟然这么短,只要一行就可以了! 您一定认为要用 API,喔!不是!先别乱猜,这次不用声明 API!直接来看一个例子: 在 Form 中放一个 TextBox,名称为 Text1 Private Sub Command1_Click() 而其中的 Text1 可以输入程序、资料夹、文件或 Internet 资源的名称,也可以输入快捷方式 (shortcut file),都可以正确执行! 113、模拟【网路上的芳邻】及【我的电脑】中的【连线 / 中断网路磁盘】 在【网路上的芳邻】及【我的电脑】中都有提供【连线网路磁盘】及【中断网路磁盘】的功能,在 VB 的程序中我们一样可以轻易做到。 '请在声明区中加入以下声明及模组: Declare Function WNetAddConnection Lib "mpr.dll" Alias "WNetAddConnectionA" (ByVal lpszNetPath As String, ByVal lpszPassword As String, ByVal lpszLocalName As String) As Long Declare Function WNetCancelConnection Lib "mpr.dll" Alias
"WNetCancelConnectionA" _ Function AddConnection(MyShareName As String, MyPWD As String, UseLetter As
String) As Integer AddConnection1_Err:
CancelConnection_Err: 呼叫的方法如下: 连线网路磁盘:传回值 = AddConnection(<共享的路径>, <密码>, <磁盘代号>) 中断网路磁盘:传回值 = CancelConnection(<磁盘代号>, <强迫中断?>) 呼叫实例: 连线网路磁盘:X = AddConnection("\\IO\io_c", "", "H:") 中断网路磁盘:X = CancelConnection("H:", True) 注:这个范例实际执行,连线时,NT 及 Novell 之速度相若,但是,在中断时,Novell 之速度明显较慢! 注:以上的方式乃是由程序中直接指定,另外的一个方法是显示问话框由使用者自行设定,这个方法我们在以后将再说明! 这一个问题,有网友反应在某些情形下,会造成误差 ( 连 VB6.0 提供的 Round 函数都会造成误差 ),我针对多种情形实际测试,结果很令人惊讶,让人怀疑如何做才会百分之百完全正确,根据测试结果,我原本想拿掉这个单元,但後来我重新写了一个比较笨,但是在有限小数位数内仍然会正确的式子,可是这个功能只支援小数点,不再支援整数以上的 Round 功能,如下: '传入的参数和之前相同,第一个是要判断的数字,第二个是要取小数几位。 Public Function round(num As Double, pos As Integer) As Double 有时候我们在程序中必须用到 Windows 的目录,以存取 Windows 目录下的文件,照理说,这应该是最简单的功能,前提是每个人在 Setup Windows 必须采用 Windows 的预设目录名称,也就是 C:\Windows,但是常常不是这样,有时候由於要使新旧版本共存,或者其他原因,有人会将 Windows 目录改成 c:\win95、c:\win98、Windows95 或 Windows98...... 若是程序中必须用到 Windows 目录,要找到正确的路径,做法如下: '在声明区中加入以下声明: Const MAX_PATH = 260 Private Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long Public Function GetWinPath() '在程序中使用方法如下: Private Sub Command1_Click() |
|
[木瓜软件工作室] 整理 |