关联扩展名到自定义的VFP程序

来源:计算机等级考试    发布时间:2012-08-28    计算机等级考试视频    评论

  有时, 开发者可能需要关联某些文件扩展名到自定义的 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"
  *
  *
  *

上一页12下一页

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答