目录 综合报道 软件世界 硬件周刊 大众网络 OA专刊 游戏广场 评测与市场
当前位置:电脑报电子版 > 1999 年 > 30 期 > 软件世界 > VB编程俱乐部

《 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版主 庞一鸣)
下载本期推荐软件页 首

《电脑报》版权所有,电脑报网站编辑部设计制作发布