W
wyj19802004
Unregistered / Unconfirmed
GUEST, unregistred user!
最近编写一个mp3播放程序,功能大部分都已完成.就是一个目录调用问题解决不了.
具体是:我把mp3文件地址都有放入一个listbox中,然后保存为一个后缀为wyj的文件(其实就是文本).
用下面的函数在注册表中注册wyj文件.
procedure TMainform.RegFile ;
var
regKey:HKEY;
regKeyName:string;
regKeyValue,exePath:string;
begin
regKeyName:='wyjtextfile';
regKeyValue:='mp3文件列表';
RegCreateKey(hkey_classes_root,pchar(regkeyname),regkey);
regsetvalue(regkey,'',reg_sz,pchar(regkeyvalue),0);
regkeyname:='.wyj';
regkeyvalue:='mp3文件列表';
regcreateKey(hkey_classes_root,pchar(regkeyname),regkey);
regsetvalue(regkey,'',reg_sz,pchar(regkeyvalue),0);
regkeyname:='mp3文件列表';
exePath:=ExtractFilePath(Paramstr (0))+'24.exe';
regkeyvalue:=Pchar(exePath)+' "%l"';
regcreatekey(hkey_classes_root,pchar(regkeyname),regkey);
regsetvalue(regkey,'shell/open/command',reg_sz,pchar(regkeyvalue), MAX_PATH);
regcreatekey(hkey_classes_root,pchar(regkeyname),regkey);
regsetvalue(regkey,'defaulticon',reg_sz,pchar(exePath+', 0'), MAX_PATH);
end;
在主程序中的一个timer中写入
procedure TMainForm.AssTimerTimer(Sender: TObject);
begin
sFileName:=ParamStr(1);
if sFileName<>'' then
begin
SoundOff:=false;
ListForm.ListBox.Items.LoadFromFile(sFileName);
ListForm.Show ;
AssTimer.Enabled :=false;
ListForm.Sp_Play.Click ;
MinForm ;
end;
if force_show=true then
ListForm.Show ;
AssTimer.Enabled :=false;
end;
这样当我点击*.wyj文件时,就会调出我的主程序mp3.exe.
***********
这时问题出现,当我第一次点击*.wyj文件后,mp3.exe 启动,*.wyj中的mp3文件目录列表正确载入listbox中,程序正常.
如果,mp3.exe先运行,再点击*.wyj,(已使用onlyone),mp3文件目录就不知道加哪去了。
具体是:我把mp3文件地址都有放入一个listbox中,然后保存为一个后缀为wyj的文件(其实就是文本).
用下面的函数在注册表中注册wyj文件.
procedure TMainform.RegFile ;
var
regKey:HKEY;
regKeyName:string;
regKeyValue,exePath:string;
begin
regKeyName:='wyjtextfile';
regKeyValue:='mp3文件列表';
RegCreateKey(hkey_classes_root,pchar(regkeyname),regkey);
regsetvalue(regkey,'',reg_sz,pchar(regkeyvalue),0);
regkeyname:='.wyj';
regkeyvalue:='mp3文件列表';
regcreateKey(hkey_classes_root,pchar(regkeyname),regkey);
regsetvalue(regkey,'',reg_sz,pchar(regkeyvalue),0);
regkeyname:='mp3文件列表';
exePath:=ExtractFilePath(Paramstr (0))+'24.exe';
regkeyvalue:=Pchar(exePath)+' "%l"';
regcreatekey(hkey_classes_root,pchar(regkeyname),regkey);
regsetvalue(regkey,'shell/open/command',reg_sz,pchar(regkeyvalue), MAX_PATH);
regcreatekey(hkey_classes_root,pchar(regkeyname),regkey);
regsetvalue(regkey,'defaulticon',reg_sz,pchar(exePath+', 0'), MAX_PATH);
end;
在主程序中的一个timer中写入
procedure TMainForm.AssTimerTimer(Sender: TObject);
begin
sFileName:=ParamStr(1);
if sFileName<>'' then
begin
SoundOff:=false;
ListForm.ListBox.Items.LoadFromFile(sFileName);
ListForm.Show ;
AssTimer.Enabled :=false;
ListForm.Sp_Play.Click ;
MinForm ;
end;
if force_show=true then
ListForm.Show ;
AssTimer.Enabled :=false;
end;
这样当我点击*.wyj文件时,就会调出我的主程序mp3.exe.
***********
这时问题出现,当我第一次点击*.wyj文件后,mp3.exe 启动,*.wyj中的mp3文件目录列表正确载入listbox中,程序正常.
如果,mp3.exe先运行,再点击*.wyj,(已使用onlyone),mp3文件目录就不知道加哪去了。