为什么我的文件关联还不够完美?(1分)

  • 主题发起人 主题发起人 visual_cjiajia
  • 开始时间 开始时间
V

visual_cjiajia

Unregistered / Unconfirmed
GUEST, unregistred user!
为什么我的文件关联还不够完美?<br>1我新建一个工程在窗体上放了一个MEMO控件<br>2我把一些文本文件的扩展名该为.aaa为了实验文件的效果<br>3根据《DELPHI葵花宝典》中说的那样我在FORM CREATE中写了<br>var<br>lphKey: HKEY;<br>sKeyName: string;<br>sKeyValue: string;<br>mys:string;<br>begin<br>mys:=application.ExeName ; <br>sKeyName := 'aaa.FileType';<br>sKeyValue := '我的AAA测试';<br>RegCreateKey(HKEY_CLASSES_ROOT,pchar(sKeyName), lphKey);<br>RegSetValue(lphKey, '', REG_SZ,pchar(sKeyValue), 0);<br><br>sKeyName := '.aaa';<br>sKeyValue := 'WebBox.FileType';<br>RegCreateKey(HKEY_CLASSES_ROOT,pchar(sKeyName), lphKey);<br>RegSetValue(lphKey, '', REG_SZ,pchar(sKeyValue), 0);<br><br>sKeyName := 'aaa.FileType';<br>sKeyValue := '"'+mys+'"'+' "%1"';<br>RegCreateKey(HKEY_CLASSES_ROOT,pchar(sKeyName), lphKey);<br>RegSetValue(lphKey, 'Shell/Open/Command', REG_SZ,pchar(sKeyValue), MAX_PATH);<br><br>sKeyName := 'aaa.FileType';<br>sKeyValue := mys+',0';<br>RegCreateKey(HKEY_CLASSES_ROOT,pchar(sKeyName), lphKey);<br>RegSetValue(lphKey, 'DefaultIcon', REG_SZ,pchar(sKeyValue), MAX_PATH);<br><br>end;<br><br>4程序运行后我注销了系统,发现*.aaa的文件图标已经变成了<br><br>&nbsp;我的程序的图标了<br><br>5但是 当我双击其中任意个文件后程序 虽然启动 ,但却不能自动<br><br>&nbsp;读取*.aaa文件中的内容<br><br>6请问我还缺少了什么?<br>
 
我没仔细研究过,但我看了看文件类型,要做到双击你的文件,即可用特定程序打开,你要这样做:<br>1。给你的文件加上关联程序,这个你已经做到了<br>2。给你的程序加上命令行参数,如MyProgram.exe 1.aaa,然后在程序里处理你的命令行参数,if paramstr(0)=...,下面你该知道了吧<br>3。在aaa文件的关联属性中的open里加上MyProgram.exe "%1"<br>你再试一下,如有不明白再探讨<br><br>^_^<br>
 
你还要加上对文件的处理函数,<br><br>Application.Initialize;//在这儿加上处理代码<br>if ParamStr(1) &lt;&gt; '' thenParamStr(1)//程序中代表文件名的参数<br>begin<br>&nbsp; &nbsp; &nbsp; &nbsp; if not OpenFile(ParamStr(1)) then//openfile为你的打开文件处理函数<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; raise EBadChild.Create('打开文件失败');<br>end;
 
全部源码:)<br>procedure TForm1.FormCreate(Sender: TObject);<br>var<br>lphKey: HKEY;<br>sKeyName: string;<br>sKeyValue: string;<br>mys:string;<br>F:textfile;<br>tmp:string;<br>begin<br><br>mys:=application.ExeName ;<br>sKeyName := 'aaa.FileType';<br>sKeyValue := '我的AAA测试';<br>RegCreateKey(HKEY_CLASSES_ROOT,pchar(sKeyName), lphKey);<br>RegSetValue(lphKey, '', REG_SZ,pchar(sKeyValue), 0);<br><br>sKeyName := '.aaa';<br>sKeyValue := 'WebBox.FileType';<br>RegCreateKey(HKEY_CLASSES_ROOT,pchar(sKeyName), lphKey);<br>RegSetValue(lphKey, '', REG_SZ,pchar(sKeyValue), 0);<br><br>sKeyName := 'aaa.FileType';<br>sKeyValue := '"'+mys+'"'+' "%1"';<br>RegCreateKey(HKEY_CLASSES_ROOT,pchar(sKeyName), lphKey);<br>RegSetValue(lphKey, 'Shell/Open/Command', REG_SZ,pchar(sKeyValue), MAX_PATH);<br><br>sKeyName := 'aaa.FileType';<br>sKeyValue := mys+',0';<br>RegCreateKey(HKEY_CLASSES_ROOT,pchar(sKeyName), lphKey);<br>RegSetValue(lphKey, 'DefaultIcon', REG_SZ,pchar(sKeyValue), MAX_PATH);<br>if Fileexists(ParamStr(1)) then<br>begin<br>assignfile(f, ParamStr(1));<br>reset(f);<br>while not EOF(f) do<br>begin<br>readln(f,tmp);<br>memo1.Lines.add(tmp);<br>end;<br>closefile(f);<br>end;<br>end;<br>
 
谢谢各位,我在试试!
 

Similar threads

I
回复
0
查看
543
import
I
I
回复
0
查看
634
import
I
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部