• 全部
  • VC综合技术
  • 互联网技术
  • MFC AppLauncher
  • .NET 技术
  • 界面
  • 进程
  • 算法
  • 硬件/系统
  • 数据库
  • VC++技术资源

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????
...全文
1443 点赞 收藏 24
写回复
24 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Anaki 2002-05-17
上例中的 "*" 指的是所有具有 Shell 子键的父键
回复
Anaki 2002-05-16
不是你的键值太长,而是中间有空格,对于此键来说是不合法的.奇怪的是,没有看哪篇文章提到过...

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

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

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

可是很多软件都有空格啊…………莫名其妙
回复
Anaki 2002-05-15
jiangsheng 提到的 DDE 你也可以在 MSDN 中利用索引关键字 "DDE [Win32]" 找到更多信息.
回复
wyalchemy 2002-05-15
学习!
回复
Anaki 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
回复
Anaki 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一下
回复
加载更多回复
相关推荐
综教楼后的那个坑用双向链表实现 描述   在 LIT 综教楼后有一个深坑,关于这个坑的来历,有很多种不同的说法。其中一种说法是,在很多年以前,这个坑就已经在那里了。这种说法也被大多数人认可,这是因为该坑有一种特别的结构,想要人工建造是有相当困难的。   从横截面图来看,坑底成阶梯状,由从左至右的 1..N 个的平面构成(其中 1 ≤ N ≤ 100,000),如图:    *            * :    *            * :    *            * 8    *    **      * 7    *    **      * 6    *    **      * 5    *    ********* 4 <- 高度    *    ********* 3    ************** 2    ************** 1 平面 |  1  |2|   3    | 每个平面 i 可以用两个数字来描述,即它的宽度 Wi 和高度 Hi,其中 1 ≤ Wi ≤ 1,000、1 ≤ Hi ≤ 1,000,000,而这个坑最特别的地方在于坑底每个平面的高度都是不同的。每到夏天,雨水会把坑填满,而在其它的季节,则需要通过人工灌水的方式把坑填满。灌水点设在坑底位置最低的那个平面,每分钟灌水量为一个单位(即高度和宽度均为 1)。随着水位的增长,水自然会向其它平面扩散,当水将某平面覆盖且水高达到一个单位时,就认为该平面被水覆盖了。   请你计算每个平面被水覆盖的时间。    灌水 水满后自动扩散 | | * | * * | * * * * V * * V * * * * * * .... * *~~~~~~~~~~~~* * ** * *~~~~** : * *~~~~**~~~~~~* * ** * *~~~~** : * *~~~~**~~~~~~* * ** * *~~~~**~~~~~~* *~~~~**~~~~~~* * ********* *~~~~********* *~~~~********* *~~~~********* *~~~~********* *~~~~********* ************** ************** ************** ************** ************** **************    4 分钟后    26 分钟后        50 分钟后    平面 1 被水覆盖     平面 3 被水覆盖    平面 2 被水覆盖输入   输入的第一行是一个整数 N,表示平面的数量。从第二行开始的 N 行上分别有两个整数,分别表示平面的宽度和高度。 输出   输出每个平面被水覆盖的时间。
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2002-05-11 02:33
社区公告

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