VC中自己定义的文件类型关联图标和程序

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 )

相关文档
最新文档