none
WPF中如何将jpg,avi等图片格式视频格式用自己的软件打开而不是用Windows照片查看器打开? RRS feed

  • 问题

  • 比如,桌面上有jpg图片,如果有安装过自己做的软件的电脑,可以双击刚才保存的文件直接打开,当然打开的时候用我自己做的软件打开。(默认打开jpg的方式是Windows照片查看器)
    2015年12月14日 8:01

答案

  • 用Process.Start("your process", argument)打开,就不会走默认系统的关联程序。如果你只是Process.Start(文件路径),则系统会根据文件关联来打开

    Bob Bao

    Do you still use the same Windows 8 LockScreen always? Download Chameleon Win8 App quickly, that changes your LockScreen constantly.
    你是否还在看着一成不变的Windows 8锁屏而烦恼,赶紧下载这个 百变锁屏 应用,让你的锁屏不断地变化起来。

    2015年12月14日 9:04
    版主
  • 如果你想直接双击打开的话,那么你就需要在系统中对于图片格式的扩展名和你的软件做文件关联了。 

    具体可以通过控制面板或者直接修改注册表实现,你可以看 http://windows.microsoft.com/en-hk/windows/change-default-programs


    Bob Bao

    Do you still use the same Windows 8 LockScreen always? Download Chameleon Win8 App quickly, that changes your LockScreen constantly.
    你是否还在看着一成不变的Windows 8锁屏而烦恼,赶紧下载这个 百变锁屏 应用,让你的锁屏不断地变化起来。

    2015年12月14日 9:45
    版主

全部回复

  • 用Process.Start("your process", argument)打开,就不会走默认系统的关联程序。如果你只是Process.Start(文件路径),则系统会根据文件关联来打开

    Bob Bao

    Do you still use the same Windows 8 LockScreen always? Download Chameleon Win8 App quickly, that changes your LockScreen constantly.
    你是否还在看着一成不变的Windows 8锁屏而烦恼,赶紧下载这个 百变锁屏 应用,让你的锁屏不断地变化起来。

    2015年12月14日 9:04
    版主
  • 如果你想直接双击打开的话,那么你就需要在系统中对于图片格式的扩展名和你的软件做文件关联了。 

    具体可以通过控制面板或者直接修改注册表实现,你可以看 http://windows.microsoft.com/en-hk/windows/change-default-programs


    Bob Bao

    Do you still use the same Windows 8 LockScreen always? Download Chameleon Win8 App quickly, that changes your LockScreen constantly.
    你是否还在看着一成不变的Windows 8锁屏而烦恼,赶紧下载这个 百变锁屏 应用,让你的锁屏不断地变化起来。

    2015年12月14日 9:45
    版主
  • 您好,Bob_Bao,

    这样是可以实现效果的,但是如果让用户这样设置的话,肯定会觉得麻烦,我要实现让用户双击就可以打开自己写的WPF应用程序而不是Windows照片查看器之类的软件。

    2015年12月15日 1:11
  • 你可以写一个.reg文件,来修改用户的注册表,将你的WPF程序注册成图片查看器

    Bob Bao

    Do you still use the same Windows 8 LockScreen always? Download Chameleon Win8 App quickly, that changes your LockScreen constantly.
    你是否还在看着一成不变的Windows 8锁屏而烦恼,赶紧下载这个 百变锁屏 应用,让你的锁屏不断地变化起来。

    2015年12月15日 1:29
    版主
  •  if (arguments.Length > 0 && arguments[0].EndsWith(".jpg"))
                    {
                        //得到被双击文件的路径
                        //Process processes = Process.Start("WpfApplication1.exe", arguments[0]);

    }

    我是这样写的,但是会出现意想不到的结果,

    2015年12月15日 1:41
  • 我迷惑了,你不是已经在你的程序中通过arguments拿到了图片文件路径,为何还要通过Process.Start再启动一个程序来打开呢?

    Bob Bao

    Do you still use the same Windows 8 LockScreen always? Download Chameleon Win8 App quickly, that changes your LockScreen constantly.
    你是否还在看着一成不变的Windows 8锁屏而烦恼,赶紧下载这个 百变锁屏 应用,让你的锁屏不断地变化起来。

    2015年12月15日 1:47
    版主
  • 用Process.Start("your process", argument)打开,就不会走默认系统的关联程序。如果你只是Process.Start(文件路径),则系统会根据文件关联来打开,

    我是看了这句话这样写的,

    那该如何写呢?

    2015年12月15日 1:53
  • 问题是,用户如果可以通过双击一个图片而运行你的程序,执行到你这里的代码,那么你的最初问题不就解决了吗? 

    这个代码是让你的程序打开一个文件不经过默认系统应用,而是经过你的WPF程序


    Bob Bao

    Do you still use the same Windows 8 LockScreen always? Download Chameleon Win8 App quickly, that changes your LockScreen constantly.
    你是否还在看着一成不变的Windows 8锁屏而烦恼,赶紧下载这个 百变锁屏 应用,让你的锁屏不断地变化起来。

    2015年12月15日 2:37
    版主
  • 您好,Bob_Bao,关键是我双击图片的时候没有用我的WPF程序打开,而是用默认系统应用打开的。我想用代码实现呢。
    2015年12月15日 2:44
  • 补充一下,我用自定义的扩展名,比如.ext,当我双击的时候就可以用自己的WPF程序打开,而用.jpg,.avi等和系统相同的格式就没有用自己的程序打开而是用Windows默认的软件打开,
    2015年12月15日 2:52