回 帖 发 新 帖 刷新版面

主题:推荐给初学者: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放上,是解决了问题后的程序。

回复列表 (共1个回复)

沙发

忠心感谢楼主,也感谢Ilikefox老师

我来回复

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