AfxMessageBox("该文件没有关联程序执行操作。请在控制面板的文件夹选项中创建关联程序。");

111222 2002-05-11 02:33:09


我修改.gif文件的关联程序,遂将
HKEY_CLASSES_ROOT\giffile\shell\open\command

的键值改成了我的执行程序的路径:

"d:\TouchGif\TouchGif.exe %1"

之后我打开*.gif文件却打不开TouchGif程序,连InitInstance都没调用,可见关联根本没有效果。


之后我用windows的“打开方式”修改关联,结果打开gif时候弹出对话框说:

该文件没有关联程序执行操作。请在控制面板的文件夹选项中创建关联程序。

随即打开失败。

-----------------------------

我的程序是个SDI程序,没有Document支持。所以,使用
EnableShellOpen();
RegisterShellFileTypes(TRUE);
不行。

——————————————————————

我如何让关联有效?用我的程序打开GIF????
...全文
1480 24 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
码农猿圈圈 2002-05-17
  • 打赏
  • 举报
回复
上例中的 "*" 指的是所有具有 Shell 子键的父键
码农猿圈圈 2002-05-16
  • 打赏
  • 举报
回复
不是你的键值太长,而是中间有空格,对于此键来说是不合法的.奇怪的是,没有看哪篇文章提到过...

to jiangsheng:
哦, sorry, 我没说清楚, 是你指出的那篇文章中提到的DDE指令, 比如 [FileOpen("%1")]
码农猿圈圈 2002-05-16
  • 打赏
  • 举报
回复
哦,又有问题,应该是这样:
[HKEY_CLASSES_ROOT\*\shell]@= "youapp"

我试了一下,似乎只能为字母……
码农猿圈圈 2002-05-16
  • 打赏
  • 举报
回复
我的意思是对于此键值不能有空格
[HKEY_CLASSES_ROOT\giffile\shell]@= "youapp"

是的,很奇怪没有看到有资料说明这一点……
111222 2002-05-16
  • 打赏
  • 举报
回复
Anaki(九天):

可是很多软件都有空格啊…………莫名其妙
码农猿圈圈 2002-05-15
  • 打赏
  • 举报
回复
jiangsheng 提到的 DDE 你也可以在 MSDN 中利用索引关键字 "DDE [Win32]" 找到更多信息.
wyalchemy 2002-05-15
  • 打赏
  • 举报
回复
学习!
码农猿圈圈 2002-05-15
  • 打赏
  • 举报
回复

@= "open" 指的是某个键的默认值为 "open"
[HKEY_CLASSES_ROOT\giffile\shell]@= "open" 指的是giffile类型的文件默认的打开指令对应的键名为open,当默认的Shell指令(如双击,按回车等等)发生时,系统首先会以[shell]@="xxx"指明的xxx查找子键xxx,然后用子键的设置来打开文件.
在"explorer->工具->文件夹选项->文件类型->高级"中你可以看到设置默认值.
111222 2002-05-15
  • 打赏
  • 举报
回复
问题解决了


我原来的键名太长

我是TouchNet Browser, 17位
改成TouchNet就好了
蒋晟 2002-05-15
  • 打赏
  • 举报
回复
我哪里提到DDE了?
111222 2002-05-14
  • 打赏
  • 举报
回复
alen1989(alen) :

谢谢你,双引号加上了。不然打开my document里的文件存在问题……

[HKEY_CLASSES_ROOT\giffile\shell]@= "open" //这句是什么意思?
@代表默认keyvalue??

我现在修改HTMLFILE的打开方式

*.htm
*.html
对应着htmlfile

我将其改为我的程序的路径:

"d:\touchnet\touchnet.exe" "%1"

结果双击htm、html文件打开的是默认的HTML编辑器
给个理由先


alen1989 2002-05-13
  • 打赏
  • 举报
回复
还有,最好为 %1加下引号
[HKEY_CLASSES_ROOT\giffile\shell\open\command]= "d:\TouchGif\TouchGif.exe" "%1"
否则处理有空格的文件比较困难,当然这样要在你的程序里支掉引号
alen1989 2002-05-13
  • 打赏
  • 举报
回复
[HKEY_CLASSES_ROOT\.gif = giffile]
[HKEY_CLASSES_ROOT\giffile\shell]@= "open" //看看这句有吗
[HKEY_CLASSES_ROOT\giffile\shell\open\command]= "d:\TouchGif\TouchGif.exe" %1
码农猿圈圈 2002-05-11
  • 打赏
  • 举报
回复
lanzhengpeng2(兰征鹏) 的回答应该没错:
针对你的用法:
HKEY_CLASSES_ROOT\.gif = giffile
HKEY_CLASSES_ROOT\giffile\shell\open\command = "d:\TouchGif\TouchGif.exe" %1
应该就可以了...
111222 2002-05-11
  • 打赏
  • 举报
回复
xuying() :

openwithlist是右键菜单里加一条用某某程序打开。我加过。
shellex里的clsid我不知写如何是好

我参考了一堆程序了,方法换到我的程序里,就是不行,急死我也
蒋晟 2002-05-11
  • 打赏
  • 举报
回复
Knowledge Base Articles

SAMPLE: FileAsso.exe Demonstrates How to Use File Associations
Q122787


--------------------------------------------------------------------------------
The information in this article applies to:

Microsoft Win32 Software Development Kit (SDK)
Microsoft Windows Software Development Kit (SDK) 3.1
lanzhengpeng2 2002-05-11
  • 打赏
  • 举报
回复
HKEY_CLASSES_ROOT\.gif = Your.Document
HKEY_CLASSES_ROOT\Your.Document\shell\open\command = Your.EXE %1
HKEY_CLASSES_ROOT\Your.Document\shell\open\ddeexec = [open("%1")]
HKEY_CLASSES_ROOT\Your.Document\shell\open\ddeexec\application = Your
HKEY_CLASSES_ROOT\Your.Document = Gif Document
xuying 2002-05-11
  • 打赏
  • 举报
回复
你可能还要修改HKEY_CLASSES_ROOT\.gif\ShellEx里的值。或者在HKEY_CLASSES_ROOT\.gif中增加一个openwithlist,在里面加上TouchGif.exe。

参考一下.mp3或其他可以用多个程序打开的文件类型的例子。
111222 2002-05-11
  • 打赏
  • 举报
回复
谢谢
qiuanhong 2002-05-11
  • 打赏
  • 举报
回复
帮你UP一下
加载更多回复(4)

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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