一个小问题请高手指点!!!!!

ly_czy 2002-01-23 10:26:56

一个小程序,判断PC机里是否安装AcroRd32.exe,如安装则启动某一PDF文件,否则
安装AcroRd32.exe的SETUP。在zyl910(910) 网友的指点下用以下代码,但怎样提取安装路径??
????!!!

声明API函数
RegOpenKeyEx
RegQueryValueEx
RegCloseKey
Const HKEY_LOCAL_MACHINE = &H80000002

Private Sub Form_Load()
Dim PathStr As String
If RegGetStr(HKEY_LOCAL_MACHINE, _
"HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths\Acrord32.exe", _
"Path", PathStr) Then
'已安装的代码
' 在此怎样提取安装路径???!如安装路径为"D:\Reader\AcroRd32.exe"
Else

'未安装的代码
End If


End Sub

Public Function RegGetStr(MainKey As Long, SubKey As String, KeyName As String, OutData As String) As Long
Dim hKey As Long
Dim TempStr As String
Dim StrLen As Long
Dim KeyType As Long
Dim Rc As Long

StrLen = 260
TempStr = String$(StrLen, Chr$(0))

Rc = RegOpenKeyEx(MainKey, SubKey, 0, KEY_ALL_ACCESS, hKey)

'Debug.Print "Load1:" & Rc
If Rc = 0 Then
Rc = RegQueryValueEx(hKey, KeyName, 0, KeyType, ByVal TempStr, StrLen)

If KeyType <> REG_SZ Then
RegGetStr = -1
Exit Function

End If

'Debug.Print "Load2: " & Rc
If Rc = 0 Then
OutData = Left$(TempStr, StrLen)

Else
RegGetStr = Rc

End If

RegCloseKey hKey

Else
RegGetStr = Rc

End If

End Function


...全文
50 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ly_czy 2002-01-23
  • 打赏
  • 举报
回复
VB刚入门,最好请给出具体的例子!
zyl910 2002-01-23
  • 打赏
  • 举报
回复
哦!那里还有个错误:
If RegGetStr(HKEY_LOCAL_MACHINE, _
"Software\Microsoft\Windows\CurrentVersion\App Paths\Acrord32.exe", _
"Path", PathStr) Then
zyl910 2002-01-23
  • 打赏
  • 举报
回复
路径是PathStr
ljren_t 2002-01-23
  • 打赏
  • 举报
回复
ShellExecute

VB声明
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
说明
查找与指定文件关联在一起的程序的文件名
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
hwnd Long,指定一个窗口的句柄,有时候,windows程序有必要在创建自己的主窗口前显示一个消息框
lpOperation String,指定字串“open”来打开lpFlie文档,或指定“Print”来打印它
lpFile String,想用关联程序打印或打开一个程序名或文件名
lpParameters String,如lpszFlie是可执行文件,则这个字串包含传递给执行程序的参数
lpDirectory String,想使用的完整路径
nShowCmd Long,定义了如何显示启动程序的常数值。参考ShowWindow函数的nCmdShow参数

743

社区成员

发帖
与我相关
我的任务
社区描述
VB 版八卦、闲侃,联络感情地盘,禁广告帖、作业帖
社区管理员
  • 非技术类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧