精华内容
下载资源
问答
  • VC文件关联小结

    千次阅读 2012-08-09 13:05:08
    最近的工程中要用到了vc中关于文件关联的操作,费了不少周折,这里就简单做一个小结。   (1)使用EnableShellOpen自动完成注册表的注册信息 这种情况下,只需要在CWinApp子类的InitInstance函数中添加如下代码就...

    最近的工程中要用到了vc中关于文件关联的操作,费了不少周折,这里就简单做一个小结。

     

    (1)使用EnableShellOpen自动完成注册表的注册信息

    这种情况下,只需要在CWinApp子类的InitInstance函数中添加如下代码就行

    // Enable DDE Execute open
     EnableShellOpen();
     RegisterShellFileTypes(TRUE);

    通常情况下,也有加上这句的必要

    // Enable drag/drop open
     m_pMainWnd->DragAcceptFiles();

    下面以MDI为例,说明几个需要注意的地方:

    一、需要修改string table中的IDR_FFTYPE值,来定义默认的文档类型,如

    /nFf/nFf/nFf 文件 (*.ff)/n.ff/nFf.Document/nFf Document

    其中第三个参数是在打开/保存对话框中文件类型显示的提示信息,第四个参数是你自定义的文件类型的后缀名称。

    二、也可以在程序生成向导的第四步中定义你的文档类型,而不需要再进行上面“一”的操作。

    三、不同的工程最好是定义不同的自定义文件类型,否则同一个文件类型在注册表中可能会产生数据混乱的现象,从而可能导致程序的不正常关联。

    四、若要自定义自己的关联程序的图标,第一步需要将自定义的ico文件覆盖掉res文件夹下默认的IDR_FFTYPE对应的资源文件;第二步,删除工程目录下的aps文件,清空二进制备份,重新载入工程即可。

    (2)编辑一个注册表文件来实现关联

    REGEDIT
    ; This .REG file may be used by your SETUP program.
    ;   If a SETUP program is not available, the entries below will be
    ;   registered in your InitInstance automatically with a call to
    ;   CWinApp::RegisterShellFileTypes and COleObjectFactory::UpdateRegistryAll.

    HKEY_CLASSES_ROOT/.ff = Ff.Document
    HKEY_CLASSES_ROOT/SingleInstMDI.Document/shell/open/command = ff.EXE %1
    HKEY_CLASSES_ROOT/SingleInstMDI.Document/shell/open/ddeexec = [open("%1")]
    HKEY_CLASSES_ROOT/SingleInstMDI.Document/shell/open/ddeexec/application = ff
        ; note: the application is optional
        ;  (it defaults to the app name in "command")

    HKEY_CLASSES_ROOT/Ff.Document = Ff Document

     

    自定义一个reg文件,内容类似上面的描述。双击执行,导入到自己机器的注册表中去即可。

    展开全文
  • VC 文件关联以及图标的实时更新

    千次阅读 2013-01-16 09:32:13
     文件关联实际上就是写注册表,在注册表里制定特定后缀的文件被双击打开时调用哪一个应用程序即可。写了注册表以后呢,难免需要重启一下资源管理器explorer才能生效。  如果将写注册表和重启explorer的代码都写在...

          http://blog.csdn.net/wowolook/article/details/8263001

          不一定非得用重启explore

          文件关联实际上就是写注册表,在注册表里制定特定后缀的文件被双击打开时调用哪一个应用程序即可。写了注册表以后呢,难免需要重启一下资源管理器explorer才能生效。

          如果将写注册表和重启explorer的代码都写在应用程序里面的话,每次启动都会去写注册表还会重启explorer是不对的,这些工作我们只希望执行一次。

         所以这些代码应该写在安装包里。

         InstallShield是一个非常强大的打包工具,可以在脚本里调用exe实现,也可以直接在脚本里写注册表以及刷新界面。

         暂时写到这里,具体功能和代码稍后补上。

    展开全文
  • 刚搞了个程序要做文件关联,可麻烦了,上网看的有些错误的,有些看了也不懂,所以搞了2个小时。现搞好后,发一篇易懂的介绍文件关联的文章: (1)首先举个例子先。例子中将文件扩展名为.tp的文件关联到程序。...

    刚搞了个程序要做文件关联,可麻烦了,上网看的有些错误的,有些看了也不懂,所以搞了2个小时。现搞好后,发一篇易懂的介绍文件关联的文章:


    (1)首先举个例子先。例子中将文件扩展名为.tp的文件关联到程序。将文件关联到程序的重点是在注册表上写一些东西,如下图

    (写的东西都是在HKEY_CLASSES_ROOT上写)

    是在HKEY_CLASSES_ROOT展开下的。添加了一个新项.tp,而这新项的值可不是随便乱定,因为打开文件扩展名为.tp的文件,将读取HKEY_CLASSES_ROOT下.tp项的值,再从这值所代表的项中读取关联的程序相关信息(如图标,程序路径)




    也是在HKEY_CLASSES_ROOT展开下的,添加了一个新项TOUCHPANEL,新项TOUCHPANEL下的DefaultIcon项的值代表关联文件图标路径(不是单纯写路径,有些格式),新项TOUCHPANEL下的shell\\open\\command项的值代表程序路径(不是单纯写路径,有些格式),


    到这一步,文件扩展名为.tp的文件就关联到程序了。如果不行的话,1:可能相关路径写错,因为有路径格式要求;2:之前这个该.tp文件扩展名的文件可能用其它程序打开过,造成该文件与其它程序关联上了,可以鼠标右键该文件,选择打开方式-选择默认程序-选择你想关联的程序就行了


    (2)可以手动添加进行测试文件关联,下面是VC下的unicode编码的代码:

    void CTouchPanelApp::setFileRelation()//调用设置文件关联
    {
    	TCHAR appPath[_MAX_PATH];//程序路径
    	TCHAR appName[_MAX_PATH];//写进注册表的进行一些格式化的程序路径
    
    	const TCHAR* NAME_APP = _T("TOUCHPANEL");//应用程序名称,其实这个名字可以随便定的
    	const TCHAR* NAME_PROJECTFILE_EXT = _T(".tp");//要关联的文件的扩展名
    
    	if(GetModuleFileName(NULL, appPath, _MAX_PATH) != 0)
    	{
    		swprintf_s(appName, _T("\"%s\" %%1"), appPath);
    
    		//检查注册表是否已经添加了,没有则添加
    		if (!checkFileRelation(NAME_PROJECTFILE_EXT, appName, NAME_APP))
    		{
    			TCHAR icoPath[_MAX_PATH];
    			swprintf_s(icoPath, _T("%s, 1"), appPath);
    			registerFileRelation(NAME_PROJECTFILE_EXT, appName, NAME_APP, icoPath);
    		}
    	}
    }
    
    BOOL CTouchPanelApp::checkFileRelation(const TCHAR *strExt,
    	const TCHAR *strAppName,
    	const TCHAR *strAppKey)
    {
    	int nRet = FALSE;
    
    
    	HKEY hExtKey;
    
    
    	TCHAR strTemp[_MAX_PATH]; 
    
    
    	DWORD dwSize=sizeof(strTemp); 
    
    
    	if (RegOpenKey(HKEY_CLASSES_ROOT, strExt, &hExtKey) == ERROR_SUCCESS)
    	{
    		RegQueryValueEx(hExtKey, NULL, NULL, NULL, (LPBYTE)strTemp, &dwSize);
    
    		RegCloseKey(hExtKey);
    
    		//检查.tp的值是否与设置的一样
    		if(_tcscmp(strTemp, strAppKey) == 0)
    		{
    			swprintf_s(strTemp, _T("%s\\shell\\open\\command"), strAppKey);
    
    
    			if (RegOpenKey(HKEY_CLASSES_ROOT, strTemp, &hExtKey) == ERROR_SUCCESS)
    			{
    				RegQueryValueEx(hExtKey, NULL, NULL, NULL, (LPBYTE)strTemp, &dwSize);
    
    				//检查TOUCHPANEL下的\\shell\\open\\command上的程序路径是否一样
    				if(_tcscmp(strTemp, strAppName) == 0)
    				{
    					nRet = TRUE;
    				}
    
    
    				RegCloseKey(hExtKey);
    			}
    		}
    	}
    
    
    	return nRet;
    }
    
    
    void CTouchPanelApp::registerFileRelation(const TCHAR *strExt, 
    	const TCHAR *strAppName, 
    	const TCHAR *strAppKey, 
    	const TCHAR *strDefaultIcon)
    {
    	TCHAR strTemp[_MAX_PATH];
    	HKEY hKey;
    
    	//新项.tp
    	RegCreateKey(HKEY_CLASSES_ROOT, strExt, &hKey);
    	RegSetValue(hKey, _T(""), REG_SZ, strAppKey, _tcslen(strAppKey) + 1);
    	RegCloseKey(hKey);
    
    	//新项TOUCHPANEL
    	RegCreateKey(HKEY_CLASSES_ROOT, strAppKey, &hKey);
    	RegCloseKey(hKey);
    
    	//新项TOUCHPANEL下DefaultIcon
    	swprintf_s(strTemp, _T("%s\\DefaultIcon"), strAppKey); 
    	RegCreateKey(HKEY_CLASSES_ROOT, strTemp, &hKey);
    	RegSetValue(hKey, _T(""), REG_SZ, strDefaultIcon, _tcslen(strDefaultIcon) + 1);
    	RegCloseKey(hKey);
    
    	//新项TOUCHPANEL下shell
    	swprintf_s(strTemp, _T("%s\\shell"), strAppKey);
    	RegCreateKey(HKEY_CLASSES_ROOT, strTemp, &hKey);
    	RegSetValue(hKey, _T(""), REG_SZ, _T("open"), _tcslen(_T("open")) + 1);
    	RegCloseKey(hKey);
    
    	//新项TOUCHPANEL下shell\\open\\command
    	swprintf_s(strTemp, _T("%s\\shell\\open\\command"), strAppKey);
    	RegCreateKey(HKEY_CLASSES_ROOT, strTemp, &hKey);
    	RegSetValue(hKey,_T(""),REG_SZ, strAppName,_tcslen(strAppName)+1);
    	RegCloseKey(hKey);
    }


    展开全文
  • VC关联文件

    2013-06-08 14:30:13
    将.ping文件关联到程序,双击后自动用程序打开。 第一次运行程序时关联。
  • VC6文件关联助手 by cntrump

    热门讨论 2009-12-31 19:56:15
    专为VC6而制作的文件关联工具,支持.dsw,.dsp,.rc,.h,.c,.pp的格式关联,关联的效果和原版的VC6一样。 本人的拙作,就不收资源分了。
  • VC 实现文件关联

    千次阅读 2012-08-09 13:20:57
    文件关联的两个简单函数 //--------------------------------------------------------------------------- // 检测文件关联情况 // strExt: 要检测的扩展名(例如: ".txt") // strAppKey: ExeName扩展名在注册表...

    文件关联的两个简单函数

    //---------------------------------------------------------------------------
    // 检测文件关联情况
    // strExt: 要检测的扩展名(例如: ".txt")
    // strAppKey: ExeName扩展名在注册表中的键值(例如: "txtfile")
    // 返回TRUE: 表示已关联,FALSE: 表示未关联
    BOOL CheckFileRelation(const char *strExt, const char *strAppKey)
    {
        int nRet=FALSE;
        HKEY hExtKey;
        char szPath[_MAX_PATH];
        DWORD dwSize=sizeof(szPath);
        if(RegOpenKey(HKEY_CLASSES_ROOT,strExt,&hExtKey)==ERROR_SUCCESS)
        {
            RegQueryValueEx(hExtKey,NULL,NULL,NULL,(LPBYTE)szPath,&dwSize);
            if(_stricmp(szPath,strAppKey)==0)
            {
                nRet=TRUE;
            }
            RegCloseKey(hExtKey);
            return nRet;
        }
        return nRet;
    }

    //---------------------------------------------------------------------------
    // 注册文件关联
    // strExe: 要检测的扩展名(例如: ".txt")
    // strAppName: 要关联的应用程序名(例如: "C:\MyApp\MyApp.exe")
    // strAppKey: ExeName扩展名在注册表中的键值(例如: "txtfile")
    // strDefaultIcon: 扩展名为strAppName的图标文件(例如: "C:\MyApp\MyApp.exe,0")
    // strDescribe: 文件类型描述
    void RegisterFileRelation(char *strExt, char *strAppName, char *strAppKey, char *strDefaultIcon, char *strDescribe)
    {
        char strTemp[_MAX_PATH];
        HKEY hKey;
       
        RegCreateKey(HKEY_CLASSES_ROOT,strExt,&hKey);
        RegSetValue(hKey,"",REG_SZ,strAppKey,strlen(strAppKey)+1);
        RegCloseKey(hKey);
       
        RegCreateKey(HKEY_CLASSES_ROOT,strAppKey,&hKey);
        RegSetValue(hKey,"",REG_SZ,strDescribe,strlen(strDescribe)+1);
        RegCloseKey(hKey);
       
        sprintf(strTemp,"%s\\DefaultIcon",strAppKey);
        RegCreateKey(HKEY_CLASSES_ROOT,strTemp,&hKey);
        RegSetValue(hKey,"",REG_SZ,strDefaultIcon,strlen(strDefaultIcon)+1);
        RegCloseKey(hKey);
       
        sprintf(strTemp,"%s\\Shell",strAppKey);
        RegCreateKey(HKEY_CLASSES_ROOT,strTemp,&hKey);
        RegSetValue(hKey,"",REG_SZ,"Open",strlen("Open")+1);
        RegCloseKey(hKey);
       
        sprintf(strTemp,"%s\\Shell\\Open\\Command",strAppKey);
        RegCreateKey(HKEY_CLASSES_ROOT,strTemp,&hKey);
        sprintf(strTemp,"%s \"%%1\"",strAppName);
        RegSetValue(hKey,"",REG_SZ,strTemp,strlen(strTemp)+1);
        RegCloseKey(hKey);
    }

    展开全文
  • VC .NET 创建文件关联的例子,类似于创建程序的快捷方式,不同本程序创建的关联,主要是让用户自己选择某个文件用什么程序打开,现在有很多的播放器、看图程序在安装后,都会自动关联到对应所支持的文件,比如播放器...
  • 内容索引:VC/C++源码,文件操作,文件关联 VC++建立文件关联的方法()
  • VC注册表文件关联,图标关联

    千次阅读 2011-02-25 22:32:00
    <br /> 前段时间需要编写文件关联的东西,就是特定文件格式和某一个应用程序关联起来,就像单击.doc的文件就会用word软件打开一样。 这个东西通过注册表来实现,明白了道理之后其实编程很简单,几句...
  • 使用VC取得文件关联图标的方法

    千次阅读 2012-08-09 13:18:07
    一个简单的学习加强实例,用VC取得文件关联图标,看下面的代码一起来学习下! CFileDialog fileDialog( TRUE,"*.*",NULL,NULL,NULL);  if (fileDialog.DoModal() != IDOK) return;  CString str= ...
  • Windows文件关联VC实现

    千次阅读 2013-08-07 13:58:08
    Windows文件关联分析 话题的提起: 百度遇到一位朋友紧急求助:系统是windows7,这位朋友因为桌面没有OFFICE图标,又急着要用WORD,就把一个桌面图标右击,选择打开方式中选择了word,而且没有把“始终使用这种程序打开同...
  • 如何设置程序与文件关联并且双击关联文件时获取文件的路径呢? 一般来说可以通过写注册表的方式实现,在函数入口处实现功能。 例如在VC/MFC中,可以在应用程序的C**App.cpp文件中InitInstance()函数中实现该功能。...
  • 文件关联代码

    2008-04-05 18:29:21
    文件关联VC源代码!
  • 欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: ...导入导出Markdown文件 丰富的快捷键 快捷键 加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
  • 当我们双击一个txt文件的图标时,系统就会用记事本打开该文件,这就是程序的关联。那我们自己编写的程序如何建立关联文件呢? 第一步:设置自己程序关联文件类型 打开资源下的String Table,找到其中的IDR_...
  • 请问一下怎样用VC6.0实现注册表代码让JPG与GIF图片的文件可以文件关联到我的程序,也就是右键可以选择我的程序打开,并且出现在“打开方式”的选择项里 以下是我在网络搜索的txt文件关联的代码,测试后可以用,...
  • 问题:手动修改注册表来关联特定文件类型,任意MFC/VC/WIN32 应用程序(特别是非文档程序)获取双击文件名问题 问题描述:我想用自己写的对话框程序打开程序本身存档的文件,当然了,是通过双击程序存档
  • VC获取文件关联图标

    千次阅读 2006-04-08 06:10:00
    用下面代码可获取文件关联程序的图标:CFileDialog fileDialog( TRUE,"*.*",NULL,NULL,NULL); if (fileDialog.DoModal() != IDOK) return; CString str= fileDialog.GetFileExt(); str="."+str; SHFILEINFO sfi...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 23,165
精华内容 9,266
关键字:

vc文件关联