如何用程序实现双击某个自定义的文件(如file1.abc),能使用指定的应用程序去打开(如MyApp.exe).

解决方案 »

  1.   

    在注册表新建
    HKEY_CLASS_ROOT\.abc\default 类型REG_SZ 值abcFile
    HKEY_CLASS_ROOT\abcFile\Shell\Open\Command\default 类型REG_EXPAND_SZ 值MyApp.exe %1双击file1.abc后,会自动启动MyApp.exe,并把file1.abc当做命令行参数传给它。
      

  2.   

    先是文件关联,关联后,双击就会自动调用你指定的应用程序。比如这段注册表代码,就是把PHP文件关联到记事本:
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.php]
    @="phpfile"
    "PerceivedType"="text"
    "Content Type"="text/php"[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile]
    @="PHP网页文件"
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile\shell\open\command]
    @="C:\\WINDOWS\\notepad.exe %1"
    调用你的应用程序后,在WinMain函数的lpCmdLine参数里就会传递被打开的文件路径,如果是MFC程序,可以通过AfxGetApp取出CWinApp,然后有个成员函数m_lpCmdLine。
      

  3.   

    BOOL ShellRegisterCallbacks(
      SHELLCALLBACKS* pShellCallbacks
    );
    在侯捷到深入浅出MFC中好像提到过,楼主自己查下资料
      

  4.   

    谢谢大家。
    还有个问题,怎么设置filename.abc的图标样式啊?
      

  5.   

    图标 要在工程文件里添加图标资源 然后load过去就可以
      

  6.   

    看了mp3file, 它是在DefaultIcon设置默认值为C:\PROGRA~1\WINDOW~2\wmplayer.exe,-120。但有2个问题不解:
    1)第二个参数-120啥意思?
    2)设置该值后需要注销才能起效,怎么让它立即起效呢?
      

  7.   

    在注册表新建
    HKEY_CLASS_ROOT\.abc\default 类型REG_SZ 值abcFile
    HKEY_CLASS_ROOT\abcFile\Shell\Open\Command\default 类型REG_EXPAND_SZ 值MyApp.exe %1双击file1.abc后,会自动启动MyApp.exe,并把file1.abc当做命令行参数传给它