回 帖 发 新 帖 刷新版面

主题:如何在点击了mp3等类型文件后,让vfp程序启动播放?

vfp程序打包安装后被设置成mp3等文件的默认播放器,

直接启动vfp程序后,再点击播放按钮,可以打开mp3等文件正常播放,但不启动程序而点击mp3等类型文件,就出错.不知如何是好!

哪位把上面编译的exe程序打包试一试看是怎么回事.

望朋友们给予指教.谢谢!

回复列表 (共7个回复)

沙发


 FOX本色、labxj0769、 lwh1188、 cbl518 诸大师一定有办法的,希望有人挤些时间指点一二,不胜感谢!

板凳

哇,程序看起来好复杂,想双击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。

3 楼

按道理,应该是修改注册表的。
H_C_R\.mp3
我在Win7下看的是WMP11.AssocFile.mp3
却在XP中看的是Audio.mp3

在Win7导入.reg文件来更改command的值失败  (VFP中无法使用RUN来导入)
在XP中成功修改mp3的默认打开程序           (可以在VFP中使用RUN)
然后我又用右键修改默认应用程序,再试图用导入.reg的方法来恢复,结果失败。


VFP里好像没有直接修改注册表的语句,按道理应该使用VBS脚本,没有时间和精力去尝试。

4 楼

moz,这个事情(修改注册表建立文件和应用程序的关联)不必由VFP完成,许多打包安装制作程序都可以轻松搞定。

我看楼主应该是已经利用打包建立关联了,问题是他的程序不接收参数。

5 楼

你试试看,在表单的init事件写入:
Parameters 你的播放文件变量名
if empt(你的播放文件变量名) and ! File(你的播放文件变量名)
    retu
endif

this.播放按钮.click()

6 楼

Ilikefox,moz,cbl518三位老师好!
    感谢你们花时间回复我的帖子,我会认真消化的。我的水平确实不行,可能到时候还要麻烦你们。
    谢谢了!

7 楼


用Ilikefox老师的“小小的实例”解决了我的难题。感谢你的详细讲解!
我原来不知道windows传来的参数是文件名,太菜了!要好好学。

我来回复

您尚未登录,请登录后再回复。点此登录或注册