VC中自己定义的文件类型关联图标和程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VC中自己定义的文件类型关联图标和程序
(2011-10-18 13:48:20)
分类:VC/MFC
标签:
it
CCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);
CString strFilePathName=cmdInfo.m_strFileName;
得到运行程序的文件名
将RegeditToSystem();加入InitInstance()函数的最后
void CMtsToolApp::RegeditToSystem()
{
//////////////////////////////////////////////////////////////////
BOOL isRegedit=true;
HKEY hKEY;//定义有关的hKEY,在查询结束时要关闭
//打开与路径data_Set相关的hKEY
// LPCTSTR data_Set="Software//Microsoft//Windows NT//CurrentVersion//Accessibility//"; LPCTSTR data_Set="Software//Classes//.mtl//";
//访问注册表,hKEY则保存此函数所打开的键的句柄
int ret0=(::RegOpenKeyEx(HKEY_LOCAL_MACHINE,data_Set,0,KEY_READ,&hKEY)); if(ret0!=ERROR_SUCCESS)//如果无法打开hKEY,则中止程序的执行
{
//AfxMessageBox("错误:未在注册表中找到该键");
isRegedit=false;
// return false;
}
//查询有关的数据
LPBYTE owner_Get=new BYTE[80];//定义用户姓名owner_Get
DWORD type_1=REG_SZ;//定义数据类型
DWORD cbData_1=80;//定义数据长度
long ret1=::RegQueryValueEx(hKEY,"mtstool",NULL,&type_1,owner_Get,&cbData_1);
if(ret1!=ERROR_SUCCESS)
{
//AfxMessageBox("错误:无法查询注册表中该键值的内容");
isRegedit=false;
//return false;
}
RegCloseKey(hKEY);
//////////////////////////////////////////////////////////////////////
// TODO: Add your control notification handler code here
CString strAppPath;
CString str="mtstoolfile";
HKEY hkey;
if(isRegedit==false)
{
RegCreateKey(HKEY_CLASSES_ROOT,".mtl",&hkey);
RegSetValueEx(hkey,NULL,NULL,REG_SZ,(CONST BYTE
*)str.GetBuffer( str.GetLength() ),strlen(str));
RegSetValueEx(hkey,"mtstool",NULL,REG_SZ,(unsigned char
*)"mtstool3.0",strlen("mtstool3.0"));
RegCloseKey(hkey);
GetModuleFileName(NULL, strAppPath.GetBuffer(MAX_PATH), MAX_PATH);//获取自身路径
strAppPath.ReleaseBuffer();
int nPos=strAppPath.ReverseFind('\\');
CString iconpath;
iconpath.Format(_T("%s\\mtstool.ico"),strAppPath.Left(nPos));
BOOL
temp=RegisterFileRelation(_T("mtstoolfile"),strAppPath,_T("mtstoolfile"),iconpath,_T("mtstool file"));
}
}
BOOL CMtsToolApp::RegisterFileRelation( const CString& strExtension,
const CString& strApplicationName,
const CString& strRunKey,
const CString& strDefaultIcon,
const CString& strDescription )
{
HKEY hRegeditKey ;
if ( RegOpenKey( HKEY_CLASSES_ROOT, strExtension, &hRegeditKey ) !=
ERROR_SUCCESS )
{
if ( RegCreateKey( HKEY_CLASSES_ROOT, strExtension, &hRegeditKey ) !=
ERROR_SUCCESS )
{
return FALSE ;
}
}
RegSetValue( hRegeditKey, _T(""), REG_SZ, strRunKey, strRunKey.GetLength()+1 ) ; RegCloseKey( hRegeditKey ) ;
if ( RegOpenKey( HKEY_CLASSES_ROOT, strRunKey, &hRegeditKey ) !=
ERROR_SUCCESS )
{
if ( RegCreateKey( HKEY_CLASSES_ROOT, strRunKey, &hRegeditKey ) !=
ERROR_SUCCESS )