主题:推荐给初学者:Ilikefox老师设置默认应用程序的方法
我的原帖是:“如何在点击了mp3等类型文件后,让vfp程序启动播放?”
原帖在 http://bbs.pfan.cn/post-319391.html
我的原帖中的程序直接启动vfp程序后,再点击播放按钮,可以打开mp3等文件正常播放,但不启动程序而点击mp3等类型文件,就出错,
Ilikefox老师下面的方法解决了我的难题,特推荐给朋友们:
哇,程序看起来好复杂,想双击MP3,即刻启动这个叫“可可视听”的软件播放,就像双击一个txt文件,立刻启动记事本打开一样。
其实并不是太难,先要知道双击一个文件,windows都干了什么。windows在注册表中寻找对应文件扩展名的应用程序,然后......
这样说吧,可以理解为windows生成一条带参数的命令行,然后执行。
比如:双击"abc.txt"文件,windows查找注册表知道记事本(notepad.exe)和txt关联,于是生成命令行
notepad <路径>\abc.txt ,然后执行它,这和你在开始菜单的运行对话框,直接输入这条命令一样,只不过仅仅双击鼠标就完成了。
现在看你的程序,你需要在开始位置用parameters语句定义一个参数用来接收windows传来的参数(即双击的那个文件的文件名),然后在某个类的INIT事件中同样用parameters语句定义参数来接收这个文件名,这样在createobject的时候用该函数的第2参数传入文件名进行处理。
俺没有时间细看你的程序,仅仅提供思路,不过倒可以举个小小的实例说明。
Lparameters cFile
Public oForm
If Pcount()=0 &&要考虑直接启动exe时,没有参数的情况。
cFile=""
Endif
On Shutdown Quit
oForm=Createobject("testform",cFile)
oForm.Show
Read Events
Define Class testform As Form
DoCreate = .T.
Caption = "Form1"
Name = "Form1"
Add Object edit1 As EditBox With ;
Height = 240, ;
Left = 0, ;
Top = 0, ;
Width = 372, ;
Name = "Edit1"
Procedure Init
Lparameters cFile
If Empty(cFile) &&同样考虑直接启动exe时,没有参数的情况。
Return
Endif
This.edit1.Value=Filetostr(cFile) &&有参数时的处理
Endproc
Enddefine
上述保存为一个prg,编译为exe。
随便建一个txt文件,里面写一点文字,保存,扩展名改为其它你想的名字(比如.jjj)。双击jjj文件,windows提示选择一个应用程序打开,找到我们的exe,确定。
OK成了,以后双击jjj文件,都会自动用我们的exe打开看。当然也可以直接启动exe。
************************************************************
这里把我的prg和exe放上,是解决了问题后的程序。
原帖在 http://bbs.pfan.cn/post-319391.html
我的原帖中的程序直接启动vfp程序后,再点击播放按钮,可以打开mp3等文件正常播放,但不启动程序而点击mp3等类型文件,就出错,
Ilikefox老师下面的方法解决了我的难题,特推荐给朋友们:
哇,程序看起来好复杂,想双击MP3,即刻启动这个叫“可可视听”的软件播放,就像双击一个txt文件,立刻启动记事本打开一样。
其实并不是太难,先要知道双击一个文件,windows都干了什么。windows在注册表中寻找对应文件扩展名的应用程序,然后......
这样说吧,可以理解为windows生成一条带参数的命令行,然后执行。
比如:双击"abc.txt"文件,windows查找注册表知道记事本(notepad.exe)和txt关联,于是生成命令行
notepad <路径>\abc.txt ,然后执行它,这和你在开始菜单的运行对话框,直接输入这条命令一样,只不过仅仅双击鼠标就完成了。
现在看你的程序,你需要在开始位置用parameters语句定义一个参数用来接收windows传来的参数(即双击的那个文件的文件名),然后在某个类的INIT事件中同样用parameters语句定义参数来接收这个文件名,这样在createobject的时候用该函数的第2参数传入文件名进行处理。
俺没有时间细看你的程序,仅仅提供思路,不过倒可以举个小小的实例说明。
Lparameters cFile
Public oForm
If Pcount()=0 &&要考虑直接启动exe时,没有参数的情况。
cFile=""
Endif
On Shutdown Quit
oForm=Createobject("testform",cFile)
oForm.Show
Read Events
Define Class testform As Form
DoCreate = .T.
Caption = "Form1"
Name = "Form1"
Add Object edit1 As EditBox With ;
Height = 240, ;
Left = 0, ;
Top = 0, ;
Width = 372, ;
Name = "Edit1"
Procedure Init
Lparameters cFile
If Empty(cFile) &&同样考虑直接启动exe时,没有参数的情况。
Return
Endif
This.edit1.Value=Filetostr(cFile) &&有参数时的处理
Endproc
Enddefine
上述保存为一个prg,编译为exe。
随便建一个txt文件,里面写一点文字,保存,扩展名改为其它你想的名字(比如.jjj)。双击jjj文件,windows提示选择一个应用程序打开,找到我们的exe,确定。
OK成了,以后双击jjj文件,都会自动用我们的exe打开看。当然也可以直接启动exe。
************************************************************
这里把我的prg和exe放上,是解决了问题后的程序。