VB 版 (精华区)
发信人: bloom (├┝┞┟┠┡┢┣), 信区: VB
标 题: 软件世界 > VB编程俱乐部 fzx
发信站: 哈工大紫丁香 (2000年07月28日16:53:58 星期五), 站内信件
发信人: fzx (八月的梦游者), 信区: Internet
标 题: 软件世界 > VB编程俱乐部
发信站: 紫 丁 香 (Sat Aug 7 06:35:19 1999), 转信
《 VB编程俱乐部 》
大家好!《VB编程俱乐部》又与你们见面了。非常感谢朋友们对《VB编程俱乐部》
的支持,从朋友们的来信中发现,支持我们的朋友中不仅有许多中学生、大学生,还
有许多现役军人,看来我们的栏目已经深入到各个领域。为了使这个栏目能进一步与
朋友们交流,请大家在提交问题或解答问题时,用
VBForums@126.com 或 VBForums@bigfoot.com邮件地址,同时也可以通过访问网站
http://VBForums.yeah.net 在BBS板上讨论。如果需要订阅VBForums,请向 sub-
vbforums@e-lists.lawton.com.cn 发送一封空白信即可。
问题1:请问用什么样的方法能使删除后的文件放到"回收站"里?
答:下面的回答是Prisoner 摘自Microsoft Knowledge Base中的一个例子,可
以使删除后的文件放到回收站里。
1)首先建立一个新模块;在模块中增加如下声明:
Type SHFILEOPSTRUCT
hWnd As Long
wFunc As Long
pFrom As String
pTo As String
fFlags As Integer
fAborted As Boolean
hNameMaps As Long
sProgress As String
End Type
Public Const FO_DELETE = &H3
Public Const FOF_ALLOWUNDO = &H40
Declare Function SHFileOperation Lib ″shell32.dll″ Alias ″
SHFileOperationA″ (lpFileOp As SHFILEOPSTRUCT) As Long
2)建立一个名为 ShellDelete 的函数,用于删除文件:
Public Function ShellDelete(ParamArray vntFileName() As Variant)
Dim I As Integer
Dim sFileNames As String
Dim SHFileOp As SHFILEOPSTRUCT
For I = LBound(vntFileName) To UBound(vntFileName)
sFileNames = sFileNames & vntFileName(I) & vbNullChar
Next I
sFileNames = sFileNames & vbNullChar
With SHFileOp
.wFunc = FO_DELETE
.pFrom = sFileNames
.fFlags = FOF_ALLOWUNDO
End With
ShellDelete = SHFileOperation(SHFileOp)
End Function
3)下面就是用于删除文件并送到"回收站"的代码,你可以根据情况进行修改,
使它符合你的需要:
Private Sub Command1_Click()
Dim FileToKill As String
FileToKill = ″c:\test*.txt″
ShellDelete FileToKill
MsgBox ″File(s) deleted″
End Sub
问题2:我有一含有密码的数据库(mdb),使用以下语句可在VB中打开:Set testdb
=Opendatabase(″File.mdb″,false,false,″;PWD=YourPassword″), 我想将结
果传给datagrid控件中,不知如何去做或在data控件中如何打开含有密码的数据库。
答:打开的方法如下:
Dta.DatabaseName = App.Path & ″\″ & PubDBName
Dta.Connect = ″;pwd=″ & PubDBPassword
Dta.RecordSource = ″Polo_Browse″
Dta.Refresh
(本题答案由Taylor提供)
问题3:一般用鼠标单击窗口右上角的"X"时,程序立刻退出,但有的程序在退
出时会弹出一个确认窗口供确认,请问这是如何实现的?
答:可以利用Form的Form_QueryUnLoad事件在用户单击""时进行确认:
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Cancel = True
Select Case MsgBox(″真的关闭吗?″, vbOKCancel,″请您回答″)
Case vbOK
Cancel = False
Case Else
Cancel = True
End Select
End Sub
问题4:我用VB写了一个应用软件,想将其做成电子注册版。但是,我对怎样获
得电脑中的某一个区别于其它电脑的唯一参数(如:CPU串号/硬盘IDE参数等)的方
法不了解,请指点。
答:下 面 的 这 个 例 子 是 使 用 GetVolumeInformation获 得 磁 盘 的 序
列 号 :
Private Declare Function GetVolumeInformation Lib ″kernel32″ Alias ″
GetVolumeInformationA″ (ByVal lpRootPathName As String, ByVal
lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long,
lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long,
lpFileSystemFlags As Long, ByVal
lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long
Function GetSerialNumber(strDrive As String) As Long
Dim SerialNum As Long
Dim Res As Long
Dim Temp1 As String
Dim Temp2 As String
Temp1 = String$(255, Chr$(0))
Temp2 = String$(255, Chr$(0))
Res = GetVolumeInformation(strDrive, Temp1,Len(Temp1), SerialNum, 0, 0,
Temp2, Len(Temp2))
GetSerialNumber = SerialNum
End Function
调 用 时 使 用 GetSerialNumber(″C:\″)就 可 以 。
(本题答案由askpro提供)
(VB版主 庞一鸣)
下载本期推荐软件
--
※ 来源:.紫 丁 香 bbs.hit.edu.cn.[FROM: heart.hit.edu.cn]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.130毫秒