delphi 代码不执行_从Delphi代码执行和运行应用程序和文件

delphi 代码不执行

The Delphi programming language provides a quick way to write, compile, package, and deploy applications cross-platform. Although Delphi creates a graphical user interface, there are bound to be times you want to execute a program from your Delphi code. Let's say you have a database application that uses an external backup utility. The backup utility takes parameters from the application and archives the data, while your program waits until the backup finishes.

Delphi编程语言提供了一种跨平台编写,编译,打包和部署应用程序的快速方法。 尽管Delphi创建了图形用户界面,但有时还是需要从Delphi代码中执行程序。 假设您有一个使用外部备份实用程序的数据库应用程序。 备份实用程序从应用程序获取参数并存档数据,而程序将等待直到备份完成。

Maybe you want to open documents presented in a file list box just by double-clicking on them without opening the associated program first. Imagine a link label in your program that takes the user to your home page. What do you say about sending an email directly from your Delphi application through the default Windows email client program?

也许您只想通过双击文件列表框中的文档来打开它们,而无需先打开关联的程序。 想象一下程序中的链接标签,该标签将用户带到您的主页。 对于通过默认的Windows电子邮件客户端程序直接从Delphi应用程序发送电子邮件,您怎么说?

ShellExecute ( ShellExecute )

To launch an application or execute a file in a Win32 environment, use the ShellExecute Windows API function. Check out the help on ShellExecute for a full description of parameters and error codes returned. You can open any document without knowing which program is associated with it—the link is defined in the Windows Registry.

要在Win32环境中启动应用程序或执行文件,请使用ShellExecute Windows API函数。 请查看ShellExecute的帮助以获取有关参数和返回的错误代码的完整说明。 您可以在不知道与哪个程序关联的情况下打开任何文档-该链接在Windows Registry中定义。

Here are some shell examples. 

这是一些shell示例。

运行记事本 ( Run Notepad )


uses ShellApi;
...
ShellExecute(Handle, 'open',
'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL) ;

用记事本打开SomeText.txt ( Open SomeText.txt With Notepad )


ShellExecute(Handle,'open',
'c:\windows\notepad.exe',
'c:\SomeText.txt', nil, SW_SHOWNORMAL) ;

显示“ DelphiDownload”文件夹的内容 ( Display the Contents of the "DelphiDownload" Folder )


ShellExecute(Handle,'open', 
'c:\DelphiDownload', nil, nil, SW_SHOWNORMAL) ;

根据文件扩展名执行文件 ( Execute a File According to Its Extension )


ShellExecute(Handle, 'open', 
'c:\MyDocuments\Letter.doc',nil,nil,SW_SHOWNORMAL) ;

Here's how to find an application associated with an extension.

这是查找与扩展关联的应用程序的方法。

使用默认的Web Explorer打开网站或* .htm文件 ( Open a Website or a *.htm File With the Default Web Explorer )


ShellExecute(Handle, 'open',
'http://delphi.about.com',nil,nil, SW_SHOWNORMAL) ;

发送包含主题和邮件正文的电子邮件 ( Send an Email With the Subject and the Message Body )


var em_subject, em_body, em_mail : string;
begin
em_subject := 'This is the subject line';
em_body := 'Message body text goes here';
em_mail := 'mailto:delphi@aboutguide.com?subject=' +
em_subject + '&body=' + em_body ;
ShellExecute(Handle,'open',
PChar(em_mail), nil, nil, SW_SHOWNORMAL) ;
end;

Here's how to send an email with the attachment.

是发送带有附件的电子邮件的方法

执行程序并等待其完成 ( Execute a Program and Wait Until It Finishes )

The following example uses the ShellExecuteEx API function.

以下示例使用ShellExecuteEx API函数。


// Execute the Windows Calculator and pop up
// a message when the Calc is terminated.
uses ShellApi;
...
var
SEInfo: TShellExecuteInfo;
ExitCode: DWORD;
ExecuteFile, ParamString, StartInString: string;
begin
ExecuteFile:='c:\Windows\Calc.exe';
FillChar(SEInfo, SizeOf(SEInfo), 0) ;
SEInfo.cbSize := SizeOf(TShellExecuteInfo) ;
with SEInfo do begin
fMask := SEE_MASK_NOCLOSEPROCESS;
Wnd := Application.Handle;
lpFile := PChar(ExecuteFile) ;
{
ParamString can contain the
application parameters.
}
// lpParameters := PChar(ParamString) ;
{
StartInString specifies the
name of the working directory.
If ommited, the current directory is used.
}
// lpDirectory := PChar(StartInString) ;
nShow := SW_SHOWNORMAL;
end;
if ShellExecuteEx(@SEInfo) then begin
repeat
Application.ProcessMessages;
GetExitCodeProcess(SEInfo.hProcess, ExitCode) ;
until (ExitCode <> STILL_ACTIVE) or
Application.Terminated;
ShowMessage('Calculator terminated') ;
end
else ShowMessage('Error starting Calc!') ;
end;

翻译自: https://www.thoughtco.com/execute-and-run-applications-1058462

delphi 代码不执行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值