各位大侠:
小弟不才,最近遇到一难题,恳请各位高手指教。 小弟最近用DELPHI编写一软件,软件有自定义文件格式(假设为*.XXX),软件将一些所需的信息保存在该(*.XXX)文件中。当我双击该(*.XXX)文件时,可以通过文件关联的方式打开我写的软件,但是软件运行后并不能自动将该(*.XXX)文件打开。请问如何实现:当双击该(*.XXX)文件时,打开软件后并能自动按照文件打开方法打开该(*.XXX)文件文件?
谢谢各位!请各位不吝赐教!
小弟不才,最近遇到一难题,恳请各位高手指教。 小弟最近用DELPHI编写一软件,软件有自定义文件格式(假设为*.XXX),软件将一些所需的信息保存在该(*.XXX)文件中。当我双击该(*.XXX)文件时,可以通过文件关联的方式打开我写的软件,但是软件运行后并不能自动将该(*.XXX)文件打开。请问如何实现:当双击该(*.XXX)文件时,打开软件后并能自动按照文件打开方法打开该(*.XXX)文件文件?
谢谢各位!请各位不吝赐教!
解决方案 »
- 在一定条件下点Treeview1前端+号,不允许展开
- 如何在程序与sql server数据库连接由于异常情况断开的时候去自动重新连接数据库??
- 怎样用Delphi实现远程控制 ? 最好要源码,(在线等)
- 请问控制台程序如何转让控制权
- 当右键点击一个speedbutton时,怎样获得该speedbutton的name?
- 怎样才可以得到本地TCP/IP信息啊?急!
- 大家进来看看我使用ADO遇到的问题
- LongTech 3000 人力资源管理系统 排班源码
- 如何在程序中为某一控件添加自定义事件?
- how to debug dll in Delphi
- WISE 9.0是否支持DELPHI7.0
- 一个很简单的查询过程 那位能给出答案呢?
{-------------------------------------------------------------------------------
@过程名: slpert -> TFm_main.SetAssociatedExec
@功能描述:
@参数: FileExt, Filetype, FileDescription, MIMEType, ExecName: string
@返回值: Boolean
-------------------------------------------------------------------------------}Function TFm_main.SetAssociatedExec(FileExt, Filetype, FileDescription,
MIMEType, ExecName: String): Boolean; {修改成功,返回True,否则False}
Var
Reg: TRegistry;
ShFileInfo: TSHFILEINFO;
IconIndex: integer;
Begin Result := False; {}
// ShGetFileInfo(Pchar(ExecName), 0, SHFileInfo,SizeOf(SHFileInfo), SHGFI_LARGEICON or SHGFI_SYSICONINDEX or SHGFI_TYPENAME or SHGFI_SMALLICON);
//IconIndex:=SHFileInfo.iIcon;
//showmessage(inttostr(iconIndex));
If (FileExt = '') Or (ExecName = '') Then
Exit; {如果文件类型为空或者没有定义执行程序就退出,FileExt必须带″.″,如.BMP}
Reg := TRegistry.Create;
Try
Reg.RootKey := HKey_Classes_Root;
If Not Reg.OpenKey(FileExt, True) Then
Exit; {当不能正确找到或创建FileExt键时退出,这种情况一般是注册表有错误,以下同}
Reg.WriteString('', FileType);
If MIMEType <> '' Then
Begin
Reg.WriteString('Content Type', MIMEType);
End;
Reg.CloseKey;
If Not Reg.OpenKey(FileType, True) Then
Exit;
Reg.WriteString('', FileDescription);
If Not Reg.OpenKey('shell\open\command', True) Then
Exit;
Reg.WriteString('', ExecName + ' "%1"');
{执行程序一般都有参数,例如WinZip的“winzip32.exe ″%1″”,″%1″参数指ZIP文件的文件名。因此ExecName应视情况加入参数}
Reg.CloseKey;
If Not Reg.OpenKey(FileType + '\DefaultIcon', True) Then
Exit;
Reg.WriteString('',ExecName+' ,1'); ///ExtractFilePath(
Reg.CloseKey;
Result := true;
Finally
Reg.Free;
End;
End;
谢谢指点。
现在的情况是,假设我定义了一个函数为:
function OpenMyFile(filename:string):boolean;
函数功能主要是实现如何打开自定义的文件。文件关联的事情应该可以解决,即可以实现双击自定义文件后,就能打开相应软件的功能。问题是:软件如何自动调用OpenMyFil(filename:string)的函数打开这个文件,而不需要再手动打开。就像打开一个*.DOC文件能启动word,同时也要让word自动将文件打开,而不是让word启动后只是一个空白的文档。
不知道我的描述是否清楚?
用winword.exe打开c:\test\test.doc文件。
ShellExecute(Handle,'open',PChar('C:\Program Files\Microsoft Office\Office\WINWORD.EXE'),'C:\test\test.doc',nil,SW_SHOW);
ShellExecute(Handle,'open','C:\test\test.doc',nil,nil,SW_SHOW);
相当于双击test.doc这个文件。
procedure TForm1.FormCreate(Sender: TObject);
begin
if ParamStr(1)<>'' then
begin
////打开文件ParamStr(1),这个名字就是你点击的文件
end
end;
如果有幸,希望以后能得到你更多的指导!能否提供一下你的联系方式?如QQ或MAIL? 我只是想认识一个高手!