我想在程序运行时判断一下系统有无与PDF文件相关联的程序,如果有就打开PDF文件,没有就出现提示。我是用下面的方法打开PDF文件的:
'*************************************************************
'为调用API函数代开PDF文件而作的声明
'**************************************************************
Public 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-----------------------------------------------------------------------------
Private Sub cmd_full_Click()
            '打开文件
         ShellExecute 0, "open", strPath, vbNullString, vbNullString, 3
        
   End Sub
------------------------------------------------------------------
但是这样的话,如果系统没有与PDF相关联的程序系统就会没有任何的反应。不知道该怎么办,求教高手

解决方案 »

  1.   

    从注册表中查找有关pdf的文件关联键,如果存在这个键,则标志着有关联的程序。
      

  2.   

    我发现很多的机器上都有.pdf的键,但是如果没有相应的程序键值是空,我用
    Declare Function RegQueryValue Lib "advapi32.dll" Alias "RegQueryValueA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal lpValue As String, lpcbValue As Long) As Long 
    去判断,结果都是6,为什么?
      

  3.   

    在注册表
    HKEY_CLASSES_ROOT
    目录下如果有".PDF"项就有关联了
      

  4.   

    HKEY_CLASSES_ROOT\.pdf\OpenWithList下的程序项就是默认的程序
      

  5.   

    一般是
    HKEY_CLASSES_ROOT\.pdf\OpenWithList\AcroRd32.exe
      

  6.   


    HKEY_CLASSES_ROOT\.pdf 的默认值就是相关联的程序,但是我在VB中怎么取得
    HKEY_CLASSES_ROOT\.pdf的默认值呢?
      

  7.   

    HKEY_CLASSES_ROOT\.pdf 的默认值就是相关联的程序,但是我在VB中怎么取得
    HKEY_CLASSES_ROOT\.pdf的默认值呢?
      

  8.   

    s=getregvalue (HKEY_CLASSES_ROOT,".pdf","",reg_sz)getregvalue=获取注册表的过程