二级VF:关联扩展名到自定义的VFP程序
来源:优易学  2011-8-24 18:42:21   【优易学:中国教育考试门户网】   资料下载   IT书店

  有时, 开发者可能需要关联某些文件扩展名到自定义的 Visual FoxPro 应用程序. 它在要求对指定类型的文件执行某种操作时是有用的. 例如, 开发者可能想运行 .ZZ0 文件并编辑 .ZZ1 文件. 以下示例演示如何在 Visual FoxPro 中用 API 调用来完成该任务.
  注意: 使用该示例中的代码时,需要 Visual FoxPro 6.0 和 Visual Studio 6.0 Service Pack 3 (VFP6_SP3) . 这是因为在自定义的 Visual FoxPro 应用程序中编译程序的能力只在 VFP6_SP3 才能实现.
  设置关联
  在 Windows 桌面创建一个新的名为 RUNTEST.TXT 的文本文件,其内容如下:
  MESSAGEBOX("你好!",48,"通过 API 关联")
  将该文件的扩展名由 .TXT 改为 .ZZ0. 当被提示文件可能变为不可用时选择确认.
  在桌面复制一个 RUNTEST.ZZ0 并命名为 MODITEST.ZZ1.
  注意: 这些文件的图标将变为 Windows 标志,如果双击它们将产生一个 "打开方式…"对话框. 如果出现以上情况, 说明文件扩展名没有与机器上的任何程序关联. 如果没有出现 "打开方式…"对话框, 则有一个已安装的应用程序与该扩展名关联. 如果是这样,切莫运行本应用程序! 若运行可能会破坏你的电脑上的文件关联.
  打开 Visual FoxPro 并复制以下代码到一个新的程序文件中:
  LOCAL nResult,nDisplay, cKeyName, cKeyValue, nKeyLen
  #DEFINE SECURITY_ACCESS_MASK 983103 && SAM value KEY_ALL_ACCESS
  #DEFINE SHCNE_ASSOCCHANGED 0x08000000
  #DEFINE HKEY_CLASSES_ROOT -2147483648
  #DEFINE SHCNF_IDLIST 0x0000
  DECLARE RegCreateKeyEx IN ADVAPI32.DLL;
  INTEGER,STRING,INTEGER,STRING,INTEGER,INTEGER,INTEGER,INTEGER @, INTEGER @
  DECLARE RegSetValueEx IN ADVAPI32.DLL;
  INTEGER,STRING,INTEGER,INTEGER,STRING,INTEGER
  DECLARE RegCloseKey IN ADVAPI32.DLL INTEGER nHKey
  DECLARE SHChangeNotify IN Shell32.DLL INTEGER, INTEGER, STRING, STRING
  * 创建一个叫 aaApp 的根入口
  nResult=0
  nDisplay=0
  cKeyName = "aaAPP"
  cKeyValue = "My Application"
  nKeyLen = LEN(cKeyValue)
  RegCreateKeyEx(HKEY_CLASSES_ROOT,cKeyName ,0,"REG_SZ", ;
  0,SECURITY_ACCESS_MASK,0,@nResult,@nDisplay)
  RegSetValueEx(nResult,"",0,1,cKeyValue ,nKeyLen)
  RegCloseKey(@nResult)
  * 创建一个叫做 .ZZ0 的与 aaApp 关联的根入口
  nResult= 0
  nDisplay = 0
  cKeyName = ".ZZ0"
  cKeyValue = "aaApp"
  nKeyLen = LEN(cKeyValue)
  RegCreateKeyEx(HKEY_CLASSES_ROOT,cKeyName,0,"REG_SZ",;
  0,SECURITY_ACCESS_MASK,0,@nResult,@nDisplay)
  RegSetValueEx(nResult,"",0,1,cKeyValue,nKeyLen)
  RegCloseKey(@nResult)
  * 创建一个叫做 .ZZ1 的与 aaApp 关联的根入口
  nResult= 0
  nDisplay = 0
  cKeyName = ".ZZ1"
  cKeyValue = "aaApp"
  nKeyLen = LEN(cKeyValue)
  RegCreateKeyEx(HKEY_CLASSES_ROOT,cKeyName,0,"REG_SZ",;
  0,SECURITY_ACCESS_MASK,0,@nResult,@nDisplay)
  RegSetValueEx(nResult,"",0,1,cKeyValue,nKeyLen)
  RegCloseKey(@nResult)
  * 为与 aaApp 关联的文件设置命令行
  * 路径需要修改.
  nResult= 0
  nDisplay = 0
  cKeyName = "aaApp\shell\open\command"
  *
  * 修改该路径以反映你的目录结构
  *
  cKeyValue = "C:\WINDOWS\Desktop\testexe.exe %1"
  *
  *
  *

[1] [2] 下一页

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训