双击文件传递参数等问题 我的一个程序要用到.aaa(自定义)文件,有以下问题:1 为让.aaa文件看上去美观一些,我想给.aaa,文件加(关联)一个图标(图标文件在资源里),怎么在程序中给.aaa文件设置图标?2 我想双击.aaa文件,打开abc.exe文件,同时传递一个参数给abc.exe,abc.exe根据该参数显示不同的界面。该怎么做? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 BOOL ModifyIcon(LPCSTR ExtName, LPCSTR IconFile) { BOOL ret; LONG nLen; char Key[65]; char buf[MAX_PATH]; nLen = sizeof(Key); if (RegQueryValue(HKEY_CLASSES_ROOT,ExtName,Key, &nLen) != ERROR_SUCCESS) return FALSE; if (Key[0]=='\0') return FALSE; strcat(Key, "\\DefaultIcon"); strcpy(buf, IconFile); strcat(buf, ", 0"); ret = RegSetValue(HKEY_CLASSES_ROOT, Key, REG_SZ, buf, sizeof(buf)+1) == ERROR_SUCCESS; SHChangeNotify(SHCNE_ASSOCCHANGED,SHCNF_FLUSHNOWAIT, 0, 0); return ret; } 调用的例子: ModifyIcon(".xch", "c:\\test.ico"); 1、修改注册表中的“DefaultIcon”;在HKEY_CLASSES_ROOT目录下;2、在程序开始处(如InitInstance()函数中)用GetCommandLine来获取参数,判断之。 主要是写注册表1. HKEY_CLASSES_ROOT\.aaa 默认项 aaafile2. HKEY_CLASSES_ROOT\aaafile\DefaultIcon 默认项 x:\xxx\xxx.ico3. HKEY_CLASSES_ROOT\aaafile\shell\open\command 默认项 "x:\xxx\123.exe %1"主程序读取参数即可全路径名 谢谢楼上几位的回答。我的图标是在资源里(res文件夹里),在程序编译完成后就一个setup文件,图标文件已经包在setup里面了,所以没有这样的目录(x:\xxx\xxx.ico)。但是图标有一个ID。请问怎么使用图标的ID完成关联?或者怎么用ID把图标拷贝到一个windows目录下? 如InitInstance()函数中用GetCommandLine来对传入的字符串进行分析 谢谢,能否举个简单的例子?是不是参数要写在HKEY_CLASSES_ROOT\aaafile\shell\open\command 默认项 "x:\xxx\123.exe %1" 的后面? 一般是用“ExtractIcon/Ex”来从PE文件中解压出图标。所以注册表中的文件类型图标都只需要一个PE文件、一个资源索引就可以了(看看该函数的参数就会明白)。 用“ExtractIcon/Ex”从PE文件解压出来后怎么保存到硬盘呢? 不知哪位老大能提供USB狗模拟程序的框架 求助 ActiveX 控件与 特定文件关联问题 最后的分数:谁知道WinAmp显示音乐振幅的画面是怎么实现的? 心情郁闷,散分 各位看过来 问关于98下截获数据包 求教,读扇区函数问题 MFC 创建基本对话框 怎么改变对话框的边框颜色(边框一直都是深蓝色)和标题栏的颜色? 编译结果为什么不同? vc StretchBlt 有时无法打印图片 为什么电脑上的插口突然串口不可用 class B : public A{ B(A&); }; 这种怎么防止它拷贝赋值?
{
BOOL ret;
LONG nLen;
char Key[65];
char buf[MAX_PATH];
nLen = sizeof(Key);
if (RegQueryValue(HKEY_CLASSES_ROOT,ExtName,Key,
&nLen) != ERROR_SUCCESS)
return FALSE;
if (Key[0]=='\0') return FALSE;
strcat(Key, "\\DefaultIcon");
strcpy(buf, IconFile); strcat(buf, ", 0");
ret = RegSetValue(HKEY_CLASSES_ROOT, Key,
REG_SZ, buf, sizeof(buf)+1) == ERROR_SUCCESS;
SHChangeNotify(SHCNE_ASSOCCHANGED,SHCNF_FLUSHNOWAIT,
0, 0);
return ret;
}
调用的例子:
ModifyIcon(".xch", "c:\\test.ico");
2、在程序开始处(如InitInstance()函数中)用GetCommandLine来获取参数,判断之。
1. HKEY_CLASSES_ROOT\.aaa 默认项 aaafile
2. HKEY_CLASSES_ROOT\aaafile\DefaultIcon 默认项 x:\xxx\xxx.ico
3. HKEY_CLASSES_ROOT\aaafile\shell\open\command 默认项 "x:\xxx\123.exe %1"主程序读取参数即可全路径名
谢谢,能否举个简单的例子?
是不是参数要写在HKEY_CLASSES_ROOT\aaafile\shell\open\command 默认项 "x:\xxx\123.exe %1" 的后面?
用“ExtractIcon/Ex”从PE文件解压出来后怎么保存到硬盘呢?