我用TC编译了个程序,生成exe文件。
我想问一下在delphi里怎么调用这个exe文件。。
比如用一个button,我一点击,就运行这个exe。希望说具体点。。小弟先谢谢了。。
我想问一下在delphi里怎么调用这个exe文件。。
比如用一个button,我一点击,就运行这个exe。希望说具体点。。小弟先谢谢了。。
解决方案 »
- 为Timage导入图片的问题
- 结识兰州的做开发的朋友
- 在DBGrid中输入数据时,不管是insert或append,都是在未尾加一行的,现在我想在某一行的前面或者后面插入一行!该如何实现?
- 可能很简单看看 (但是也不一定):)
- 动态数组用SetLength后是否其原先内容都被清楚了?
- 怎样判断一个字符串里某个字符是不是汉字?
- ###### Delphi如何连接Oracle数据库啊?? 在线等待 ######
- ADOQuery1.Post 数据的id
- 请问一个关于数据库的小问题?
- 如果使用dephi实现阿理旺旺自动登陆
- 如何实现类似delphi IDE界面的浮动窗口
- CSDN的专家分是不是有问题啊?
我会了。。
在大富翁上面搜索到的。。
就这样:uses WinProcs;
……
begin
WinExec('e:\*.exe',sw_show); end.
偶试的怎么找不到winexe啊
寒自己一个
WinExec好像是为了兼容16位系统而使用的,建议使用ShellExecute!请问怎么说来的?? 先说声谢谢。。
对了 我用这个不行啊
uses WinProcs;
……
begin
WinExec('e:\*.exe',sw_show); end.
delphi编译生成了个exe文件。
我运行这个exe文件,它还要求我原来引用的那个exe文件在原来的路径上。。比如上面那个,,我把这个*.exe拿开e盘,就关联不上了。也就是说:它delphi生成exe文件时,不会把那个我想关联的exe文件联到里面去。请问用WinExec这个函数具体该怎么用?还有ShellExecute怎么用?能不能贴几行代码上来看看。
呵呵。。向各位热心的朋友致谢……
shellexecute(handle, 'open', pchar( 'C:\x.exe'), '', '', SW_MAXIMIZE)//SW_MAXIMIZE代表打开窗体为最大化
else
application.MessageBox('x.exe文件不存在!', '提示', mb_ok + mb_iconinformation);
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,WinProcs;type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
Winexec('Test.exe',SW_NORMAL); //将exe文件拷贝到delphi文件的文件夹下 uses WinProcs
end;
end
ShellExecute(Self.Handle, 'Open', 'C:\a.exe', nil, nil, SW_SHOW)
else
ShowMessage('文件不存在!');这样不就可以了吗?
不能实现,这本身就是两个exe文件,
除非你把两个exe的功能整合在一个exe文件里。
/************
前题是你的机器中必有你要调用的exe文件,你就写一个全盘搜索过程,第一次运行时查找出要调用的EXE文件所在的路径,写入一个INI文件中。下次就直接由INI文件中调入路径。
*************/
谢谢你的热心指导。这个看起来好像很难。是不是??
“全盘搜索”,“ini”,小弟都不懂。
不能实现,这本身就是两个exe文件,
除非你把两个exe的功能整合在一个exe文件里。
*************/
先向你说声谢谢。
整合在一个exe文件里正是我想要的,我就是想要一个exe就能实现所有的功能。
请问delphi能不能实现??还是有什么其它办法。。
/**************
把TC的那个文件放到资源中,在Delphi中调用是释放出来,这样只要一个Delphi生成的exe文件就可以了。
**************/谢谢你的热心指导。
小弟看不大明白,把要被调用的exe放到资源中,“资源”是哪里呢??这样delphi生成的exe就整合了我想调用的那个exe吗??
你把两个文件放在一起,
procedure openexe;
var
path,fileName: String;
begin
path := ExtractFilePath(Application.ExeName); //取当前EXE执行路径
fileName := path +'test.exe'; //你的哪个EXE文件
if FileExist(fileName ) then
ShellExecute(Self.Handle, 'Open', fileName, nil, nil, SW_SHOW)
你把两个文件放在一起,
procedure openexe;
var
path,fileName: String;
begin
path := ExtractFilePath(Application.ExeName); //取当前EXE执行路径
fileName := path +'test.exe'; //你的哪个EXE文件
if FileExist(fileName ) then
ShellExecute(Self.Handle, 'Open', fileName, nil, nil, SW_SHOW)
end;
除非是windows自帶的exe文件!!!
你这方法我会的。。你看我前面的回贴
××××××××××××××××××××
to:merkey2002(小样的) /*************
不能实现,这本身就是两个exe文件,
除非你把两个exe的功能整合在一个exe文件里。
*************/
先向你说声谢谢。
整合在一个exe文件里正是我想要的,我就是想要一个exe就能实现所有的功能。
请问delphi能不能实现??还是有什么其它办法。。××××××××××××××××××××××
/**************
天啊,你那個exe文件不跟著你自己的exe文件走,怎麼調用 ???
除非是windows自帶的exe文件!!!
***************/
就是就是……我就想解决这个问题。。能不能整合这两个exe呢?谢谢啊……
=========================================================
信息标题:我知道了如何动态在EXE中加入任何资源(.EXE,.BMP,.SWF,.DOC..)大家分享一下吧!(1460字)
信息作者:crisee
发表时间:2001-8-18 11:06:00
阅读次数:363
信息内容:前些日子,我发表了类似的帖子,是求援的。
然后,参考了些源码。经过“处心积虑”的琢磨,终于弄懂了。
本人是编程初学者,脑子也笨,高手见了不要见笑!
我发现哦,在EXE资源区内写入其它资源,虽然EXE还可运行,但图标会变成Windows默认的样儿,也就是说EXE中的ICON资源遭破坏了。然后,我尝试在EXE尾部写入资源,太棒了!虽然文件长度增加,但丝毫没有影响EXE的运行。我们假定要把 sir32.exe 加入 程序(project1.exe)中。
首先,创建新的Project,定义 private 变量 fStream:TFileStream,然后写个过程
Procedure TForm1.EXEStrore;
var FS: TFileStream;
Begin
//首先将程序自身复制为~tmp.exe
CopyFile(Application.ExeName, '~tmp.exe', false);
//为打~tmp.exe创建 fStream,模式为 只读。
fStream.Create('~tmp.exe',fmOpenRead);
//为打开sir32.exe创建 FS,模式为 只读。
FS.Create('Sir32.exe',fmOpenRead);
try
//将fStream定位至 ~tmp.exe文件尾部。
fStream.position := fStream.Seek(0, SoFromEnd);
//将 FS (sir32.exe) 定位至文件首部,准备读入内存。
FS.Postion := 0;
//将 FS(Sir32.exe) 写入 fStream(编译后的程序project1.exe)
//OK..
fStream.CopyFrom(FS, FS.Size);
finally
//释放资源,要不会出错的。
fStream.free;
FS.free;
end;
end;
以上简短的代码,就可以把任何类型的文件写入~tmp.exe中。当然,~tmp.exe只是中转站。然后在写一段用.bat文件删除程序本身,并把~tmp.exe改为程序名的代码。
如 定义 var pfile: TEXTFILE ;
begin
AssignFile(pfile,'~tmp.bat');
reWrite(pfile);
WriteLn(pfile, Pchar('Del '+Application.ExeName));
WriteLn(pfile, Pchar('ren ~tmp.exe '+Application.ExeName));
WriteLn(pfile, 'Del %0');
WriteLn(pfile, 'Exit');
CloseFile(pfile);
WinExec('~tmp.bat',SW_Hide);
Halt;
end;
最后,你会发现project1.exe文件长度增加了,具体增加的长度刚是sir32.exe的大小(一个字节也不差)。
但是,如何再把写入的文件再读出呢?自己想想,或是我下回就说 ^:^
先打开记事本,输入
b_exe EXEFILE "b.exe"将文件存为bexe.rc,打开windows命令提示窗口,输入brcc32.exe bexe.rc得到一个名为bexe.res的资源文件。将该文件与工程文件(.dpr)放在一起。
在源程序中加上一句:
{$R bexe.res}下面这段代码在运行时释放出b.exe文件:
var
rs:TResourceStream;
begin
rs:=TResourceStream.create(hinstance,'b_exe','EXEFILE');
try
rs.saveToFile('b.exe');
finally
rs.free;
end;
winExec('b.exe',sw_show);
end;
WinExec(exe文件',SW_SHOW);