转: http://blog.csdn.net/Man_zhu/archive/2010/05/10/5575866.aspx
最近修改完wince上面的photoview程序,想把photoview.exe关联到所有图片上,今天花一个小时时间完成了。
为了以后方便查看,特记录下来:
Platform Builder for Microsoft Windows CE 7.0
在CE中我们打开一个mp3文件,会相应关联到windows media player,即跳出media player播放器。
现在我想双击图片能够调出自己的图片浏览器,这样就可以很方便的使用自己的程序。
下面介绍两种方法:1.修改注册表 2.修改注册文件
这里方便测试,使用模拟器,因此platform为Deviece emulator
1.修改注册表
下面举个例子说明:
我们要将后缀名为.jpg文件关联到photoview.exe程序。 首先在HKEY_CLASSES_ROOT下建一子目录.jpg,Name为空或Default,Data为jpgfile。接着还是在 HKEY_CLASSES_ROOT下建一子目录jpgfile,jpgfile下建两个子目录:DefaultIcon和Shell,如果对文件显示图 标没有要求,DefaultIcon采用默认值,Shell往下再建Open目录,Open往下再建Command目录,在这里来指定文件关联到哪个程 序,如"photoview.exe" "%1",注意,必须要加上引号。注意,两个引号之间必须要有空格。
我们将工程makeimg之后,就可以将图片和photoview.exe程序关联起来了。
(现在我使用的wince7.0版makeimg之后不能使用,我就使用了sysgen编译了一下,结果ok)
2.修改注册文件
这其实和上面的方法一样,只是对于某些高手来说不屑于去直接修改注册表,直接修改文件platform.reg文件
platform文件的位置在wince7.0安装路径下面:我的工作目录为C:/WINCE700/PLATFORM/DEVICEEMULATOR/FILES/platform.reg
打开platform.reg文件,添加以下内容:
//--------------------------------------------------------------------
[HKEY_CLASSES_ROOT/.jpg]
[HKEY_CLASSES_ROOT/.jpg]
@="jpgfile"
[HKEY_CLASSES_ROOT/jpgfile]
[HKEY_CLASSES_ROOT/jpgfile/Shell]
[HKEY_CLASSES_ROOT/jpgfile/Shell/Open]
[HKEY_CLASSES_ROOT/jpgfile/Shell/Open/Command]
[HKEY_CLASSES_ROOT/jpgfile/Shell/Open/Command]
@="/"photoview.exe/" /"%1/""
[HKEY_CLASSES_ROOT/jpgfile/DefaultIcon]
@="iexplore.exe,-1005"
上面两种方法只是能将jpg格式的图片关联到photoview.exe程序,photoview.exe文件被放置在/Windows目录下面。
程序怎么知道关联到哪张图片上了呢?
这里就需要使用GetCommandLine(),函数会返回图片的路径。GetCommandLine()函数只在main入口处起作用,每点击一张个jpg格式的图片,都会打开一次新的photoview.exe程序。
相关文档可以参考:
http://hi.baidu.com/wu_yuzhi/blog/item/584956d0114b5b329a50277b.html
Platform Builder for Microsoft Windows CE 5.0
1、通常情况下,点击一个mp3文件,会自动地调用Mediaplayer播放。
如果需要,我们也可以实现当点击一个特定格式的文件时,调用我们自己的程序来处理。
先对注册表进行一些处理。
比如我们要把后缀名为.dat的文件进行关联。首先在HKEY_CLASSES_ROOT下建一子目录.dat,Name为 Default,Data为datfile。接着还是在HKEY_CLASSES_ROOT下建一子目录datfile,datfile下建两个子目 录:DefaultIcon和Shell,如果对文件显示图标没有要求,DefaultIcon采用默认值,Shell往下再建Open目录,Open往 下再建Command目录,在这里来指定文件关联到哪个程序,如"Program Filestest.exe" "%1",注意,必须要加上引号。
注册表的改动告一段落。
现在我们点击.dat文件,就可以把关联的程序激活了。
但是,程序如何知道关联哪 个文件呢?GetCommandLine()这个函数将会返回文件的路径。值得注意的是,每次点击.dat文件,都会激活一个新的程序实例。也就是说 GetCommandLine()只是在mian入口处起作用。所以当一个程序实例A已经激活时,此时若点击.dat文件,如何使A得到文件路径呢?相信 大家会想出各种聪明的方法来实现。
2、
Registering a File Filter
里面有详细的说明怎么加一个file filter
基本上修改注册表就可以了,如
[HKEY_CLASSES_ROOT/.bmp]
@="bmpimage"
"Content Type"="image/bmp"
[HKEY_CLASSES_ROOT/bmpfile]
@="BMP 图像 "
[HKEY_CLASSES_ROOT/bmpfile/CLSID]
@="{25336920-03F9-11cf-8FD0-00AA00686F13}"
[HKEY_CLASSES_ROOT/bmpimage]
@="BMP 图像 "
[HKEY_CLASSES_ROOT/bmpimage/DefaultIcon]
@="iexplore.exe,-1005"
[HKEY_CLASSES_ROOT/bmpimage/Shell]
[HKEY_CLASSES_ROOT/bmpimage/Shell/Open]
[HKEY_CLASSES_ROOT/bmpimage/Shell/Open/Command]
@="iexplore.exe file:%1"
下面是WMV文件与Windows Media Player 的文件关联:
; ---------------------------------------------------------------------------
; Windows Media Player helper/sample registry settings
;----------------------------------------------------------------------------
; @CESYSGEN IF DIRECTX_MODULES_CEPLAYER
[HKEY_CLASSES_ROOT/videofile/shell/open/command]
@="ceplayer.exe %1"
[HKEY_CLASSES_ROOT/videofile/DefaultIcon]
@="ceplayer.exe,-211"
[HKEY_CLASSES_ROOT/videofile]
@="Video File"
;"EditFlags"=hex:00,00,01,00
下面是WMV文件与TMPCP播放器的文件关联:
; ---------------------------------------------------------------------------
; TCPMP registry settings
;----------------------------------------------------------------------------
; @CESYSGEN IF DIRECTX_MODULES_CEPLAYER
[HKEY_CLASSES_ROOT/videofile/shell/open/command]
"TCPMP.bak"=""
"Default"="//ResidentFlash//TCPMP//PLAYER.EXE /"%1/""
[HKEY_CLASSES_ROOT/videofile/DefaultIcon]
"TCPMP.bak"=""
"Default"="//ResidentFlash//TCPMP//PLAYER.EXE , -1000"
[HKEY_CLASSES_ROOT/videofile]
@="Video File"
;"EditFlags"=hex:00,00,01,00
http://blog.csdn.net/dadahacker/archive/2009/09/21/4577627.aspx
文件关联说起来很简单,但是在Wince下面用的话,问题还真多。最多的问题就是多空格的情况,很多人会忽视掉,也没有几个人在文件关联的地方讲到这个问题,请注意:
VS2005 c# Wince6.0
在Main(string args[] )接受参数的话,我们会发现如果参数有空格的话,参数会被分成好几个子项也就是args[0],args[1]........
这个大家就会郁闷了,其实最保险的做法是什么呢?就是在文件关联的Shell/Open/Command 的文件路径和参数都加上引号,默认的是类似这种情况:/windows/mp4player.exe %1
但是这样的就会出错的了。
改成:
”/windows/mp4player.exe“ ”%1“
那么接受参数的时候就是一个得了。
简单吧。。。。。。。。。。。。。