做了文件关联后,点击文件毫无反应。
做了文件关联后,点击文件毫无反应。注册表里面已经写进去了。文件图标也换了。双击文件后,光标等待了一下,然后就没有消息了,怎么回事???
程序有做接收文件处理的。
[解决办法]
我从网上抄来的,可以用的。
bool __fastcall CheckFileRelation(AnsiString ExtName, AnsiString AppKey){ TRegistry *pReg = new TRegistry(); pReg->RootKey = HKEY_CLASSES_ROOT; // 打开主键 // 在检测到本程序不是默认的文件关联时,请用户确认该重新关联操作 pReg->OpenKey(ExtName, true); if (pReg->ReadString("") != AppKey) { pReg->CloseKey(); delete pReg; return false; } pReg->CloseKey(); delete pReg; return true;}//---------------------------------------// 注册文件关联// ExeName: 要检测的扩展名(例如: ".txt")// AppName: 要关联的应用程序名(例如: "C:\MyApp\MyApp.exe")// AppKey: ExeName扩展名在注册表中的键值(例如: "txtfile")// Icon: 扩展名为ExeName的图标文件(例如: "C:\MyApp\MyApp.exe, 1")// Describe: 文件类型描述bool __fastcall RegisterFileRelation(AnsiString ExtName, AnsiString AppName, AnsiString AppKey, AnsiString Icon, AnsiString Describe){ try { TRegistry *pReg = new TRegistry(); pReg->RootKey = HKEY_CLASSES_ROOT; // 打开主键 // 新建/打开以文件扩展名为名的项,并写入数据 pReg->OpenKey(ExtName, true); pReg->WriteString("", AppKey); pReg->CloseKey(); pReg->OpenKey(AppKey, true); pReg->WriteString("", Describe); pReg->CloseKey(); pReg->OpenKey(AppKey + "\\DefaultIcon", true); pReg->WriteString("", Icon); pReg->CloseKey(); pReg->OpenKey(AppKey + "\\Shell", true); pReg->WriteString("", "Open"); pReg->CloseKey(); pReg->OpenKey(AppKey + "\\Shell\\Open\\Command", true); pReg->WriteString("", AppName +" "+ '"'+"%1"+'"'); pReg->CloseKey(); delete pReg; } catch(...) { MessageBox(NULL, "注册文件关联时发生错误", "注意", MB_OK|MB_ICONWARNING); return false; } return true;}//----------------------------------------------