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

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


...全文
41 4 打赏 收藏 转发到动态 举报
写回复
用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参数

扩展功能: a. 首先满足网友的”口味”, 重新设计了所有旗子, 选择新的旗盘背景, 换了一个更清爽的面. (界面配色并不是件很容易的事情, 这样的棋类游戏长时间容易使眼睛疲劳, 首先要做到选择的色彩 不刺激眼睛,其实大部分色彩都比较刺激眼睛,尤其是纯三基色(红/黄/蓝), 还要使界面做得漂亮). b. 增加”回放” 功能. 当下完旗子时,可以重新回味一下, 刚杀完的一盘旗,可以寻找不足和重新感受 一下胜利的喜悦! 这个功能比较复杂! d. 又看了一下电脑走旗, 感觉确实比较难处理, 没有高人指点写这个算法确实比较难, 应该比以前聪明 了一些, 但是还是比较笨, 打算有空去找个现在的电脑走旗组件替换上, 自己的电脑走旗算法慢慢研 究(当时是因为实在找不到现在的组件, 自己写了个较笨的,如果哪位朋友能够提供组件,在次深表感谢!!!). e. 扩展走旗的步数容量, 有些网友, 对战的都是高手, 产生数组越界, 这次从 200 扩展到了500, 当然 您还可以扩展到更大,因为源代码已经开放). f. 增加图像缓存功能. g. 解决 .net 从framework 1.0到framework 2.0升级出现的程式升级逻辑问题一个小bug. h. 本来我只是想把这个程式放到Blog上, 供爱好c#的网友学习,一起交流一下, 没想到反应那么的强烈! 经常收到网友的反馈邮件, 从下载量看,不到一年仅从我的下载空间(不算网友转载下载次数)就有近 二万五千次. 所以又重新看懂已经基本忘记的代码,修复了bug,并扩展了以上功能. 有可能还会增加一些功能! 另外,在此对给我提交建议和bug的朋友表示感谢!!! (开发语言: C#语言) 来自:http://community.csdn.net/Expert/topic/5237/5237003.xml?temp=.4600031

742

社区成员

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

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