通过shellexecute从delphi运行ruby脚本

时间:2009-10-19 22:36:19

标签: ruby delphi shellexecute

我写了一个小ruby脚本,让我通过调用它和一些命令行参数来发送电子邮件。

在命令行中,这可以工作:

ruby.exe mail_it.rb fromaddr="mailaddr1@gmail.com" tolist="mailaddr2@yahoo.com"

但是尽可能地尝试,我无法让它在Delphi 2007 for Win32中运行。这是最新的尝试:

procedure TForm1.Button1Click(Sender: TObject);
var
  params: string;
begin
  params:= 'mail_it.rb fromaddr="mailaddr1@gmail.com" tolist="mailaddr2@yahoo.com"';
  caption:= IntToStr(ShellExecute(Form1.Handle, nil, PChar('ruby.exe'), PChar(params), nil, SW_SHOW));
end;

我尝试使用'open'作为ShellExecute中的第二个参数,但它没有帮助。 ShellExecute本身返回42,就我在其他网站上发现的内容而言,我可以判断出“没有错误”。

2 个答案:

答案 0 :(得分:1)

试试这个:

shellexecute(0, 'open', '<PUT YOUR PATH HERE>\mail_it.rb', fromaddr="mailaddr1@gmail.com" tolist="mailaddr2@yahoo.com"' , nil, SW_NORMAL);

我没有安装ruby,但这适用于我使用编辑器启动.pas文件。只要你有与.rb文件关联的ruby.exe,就可以了。

-don

答案 1 :(得分:0)

这是最小的代码:

procedure TForm1.Button1Click(Sender: TObject);
var
  params: string;
begin
    shellexecute(0, nil, 'mail_it.rb', 
                 'fromaddr="mailaddr1@gmail.com" tolist="mailaddr2@yahoo.com"', 
                  nil, SW_NORMAL);
end;

我不需要mail_it.rb的完整路径,也不需要'open',但我需要'.rb'。