<font color=green><i>打开.exe后怎么打开指定的文件?</i></font>(50分)

  • 主题发起人 主题发起人 cat.yy
  • 开始时间 开始时间
C

cat.yy

Unregistered / Unconfirmed
GUEST, unregistred user!
; 我编的.exe文件 运行中会生成一个文件(自定义的类型) ,
我用win98的“查看|文件夹选项...|文件类型”关联了该类型的文件
和我编的.exe &lt;b&gt;问题是:&lt;/b&gt;
当我点击该类型的文件打开.exe时 程序并没有按设想
那样&lt;i&gt;用那个文件的内容初始化.exe的某些控件的值&lt;/i&gt;
请问&lt;i&gt;怎样才能实现我的设想?&lt;/i&gt;
 
我想问的是——“用那个文件的内容初始化.exe的某些控件的值”
这些你直接在你的OnCreate 事件里设置不就可以了么?为什么还要用另一个文件?
你的程序要先运行才能读取另一个文件,而读取到之前你的程序已经运行了啊?
 
动态创建。在dpr中写。
 
to wjiachun:
像这样:
当你点一个 .BMP 文件时,打开了系统的 MSPaint.EXE(如果和MSPaint关联)
同时在MSPaint中也打开了那个 .bmp 图片。

to alum:
该怎么写呢??
 
1)首先要确认是否传参,即paramstr(1)(文件名)。
相信你在注册表也是这么写的: application.name %1
2)编辑器打开project文件,直接在该文件做读取操作,假设是一个ini文件。

&lt;pre&gt;&lt;b&gt;&lt;font face='Courier New'&gt;
program Project1;

uses
Forms,inifiles,
Unit1 in 'Unit1.pas' {Form1};

{$R *.RES}

var n:integer;
ini:Tinifile;


begin


Application.Initialize;

ini:=Tinifile.create('c:/a.ini');
n:=ini.readinteger('main','width',10);
ini.free;

Application.Initialize;
Application.CreateForm(TForm1, Form1);
form1.width:=n;

Application.Run;

end.&lt;/font&gt;&lt;/b&gt;&lt;/pre&gt;
 
奇怪……发贴好慢:)
 
上文的
ini:=Tinifile.create('c:/a.ini');
改成:
&lt;font color=red&gt;ini:=Tinifile.create(paramstr(1));&lt;/font&gt;

用以接受参数
 
多了一句
Application.Initialize;

删去。

还有……

其实直接在create中写也可以哦。
 
to alum:

&lt;font color=green&gt;&lt;i&gt;谢谢你告诉我怎样使用.INI !&lt;/i&gt;&lt;/font&gt;

是这样:我写了一个EditPicture的程序(在“待答问题/图形图象”中有我贴

的全部源程序(8月3日下午贴的)) 要将对某图象进行编辑的数据保存到自定义的

.cty文件中 我想这样:&lt;i&gt;当用户点击??.cty文件时 打开我的 EditPicture.exe

并在程序中打开他曾编辑的图象 且读入他对那幅图象编辑数据。&lt;/i&gt;

(如果我指定用户存放文件的路径就很容易办到-----我想让用户自由指定存放地点)
 
不是一样么?你关联文件了么?
你是不是觉得在获取文件路径及名称上有难度?

上文已经写了传参的方法,关键是你要传参进去……

注册表中的open/command/应该有参数 ,例如:
"c:/a/editpicture.exe" "%1"

然后可以通过paramstr(1)访问到 %1,以此类推。
 
哈哈,灌水成功~~~``
 
不行不行,我网速太慢,而且在看
http://www.gislab.ecnu.edu.cn/delphibbs/DispQ.asp?LID=302737
如果这个算的话,我说“这些你直接在你的OnCreate 事件里设置不就可以了么?”
也算 :)
 
to alum:

&lt;font size=5&gt;没有 ---- 高兴太早啦 ---- 失败了!&lt;/font&gt;

&lt;font color=blue&gt;Tinifile 是什么东东?&lt;/font&gt;

Delphi 的 Help 上说:
&lt;i&gt;&lt;font color=green&gt; TIniFile is a low-level wrapper for the 16-bit Windows 3.x INI
file system that enables storage and retrieval of application-specific
information and settings in an application-specific INI file. &lt;/font&gt;&lt;/i&gt;

注册表已按要求写了。

&lt;b&gt;我糊了 ----- 是否把你的意思理解错了&lt;/b&gt;
我一同学提示我 ----- 是否要用windows的消息 ,你说呢
&lt;b&gt;救我 !!!&lt;/b&gt;
&lt;font size=4&gt;@_@&lt;/font&gt;
 
现在网速太慢,我很难找到你的帖子。而且我开始模糊……也不知道你想干什么……

你是不是想点击你的数据文件,然后运行你的程序并打开该文件???

如果是的话,管ini文件干什么……
 
to alum:

真是网速太慢 ----- 受不了 !!

&lt;font color=green&gt;你说的太对了!!---- 怎么写??&lt;/font&gt;

不管ini的事了(你贴的里面有)。
 
我的贴子在:

“待答问题/图形图象”的 第 1 页

问题为 ---- “如何实现ACDsee扩大缩小的效果”。
 
我用ini文件是回答你提的问题……没想到你换了问题……

不过也是类似。

假设该文件是:C:/abc/b.aaa

那么你把aaa类型关联到程序editpicture.exe,确保参数是传入的,即注册表
command 有:editpicture.exe %1

然后通过资源管理器点击C:/abc/b.aaa,哈,应该可以运行程序了吧?就是程序
不处理该文件而已。

那么在formoncreate 加一个判断。如果paramstr(1)不为空,则读入指定文件。

读入操作就是你自己来做了……而传入参数 paramstr(1) 就等于C:/abc/b.aaa,
这样得到文件路径了……难道……还不会下一步么……
 
to alum:

真不好意思(给您的积分太少了) ---- 我不知道怎么写代码...

我用什么&lt;b&gt;类&lt;/b&gt;的什么&lt;b&gt;方法&lt;/b&gt;?
 
注册表还是这样改.

procedure TForm1.OnCreate(Sender: TObject);
begin
if (paramcount &gt; 0) and (fileexists(paramstr(1))) then
begin
//预处理
XXX.loadfromfile(paramstr(1));
end;
end;
 
后退
顶部