2009-10-19 6 views
0

저는 약간의 명령 줄 매개 변수와 함께 이메일을 보내 이메일을 보낼 수있는 작은 루비 스크립트를 작성했습니다.delphi에서 shellexecute를 통해 ruby ​​스크립트를 실행하십시오.

ruby.exe mail_it.rb fromaddr="[email protected]" tolist="[email protected]" 

을하지만, 나는 그것이 델파이 2007 for Win32에서 동작하지 않습니다 수 있으므로 시도 : 명령 줄에서

이 작동합니다. 최신 시도는 다음과 같습니다.

procedure TForm1.Button1Click(Sender: TObject); 
var 
    params: string; 
begin 
    params:= 'mail_it.rb fromaddr="[email protected]" tolist="[email protected]"'; 
    caption:= IntToStr(ShellExecute(Form1.Handle, nil, PChar('ruby.exe'), PChar(params), nil, SW_SHOW)); 
end; 

ShellExecute의 두 번째 매개 변수로 'open'을 사용하려고했지만 도움이되지 않습니다. ShellExecute 자체는 42를 반환하는데, 다른 웹 사이트에서 발견 한 내용에서 알 수있는 한 "오류 없음"을 의미합니다.

shellexecute(0, 'open', '<PUT YOUR PATH HERE>\mail_it.rb', fromaddr="[email protected]" tolist="[email protected]"' , nil, SW_NORMAL); 

내가 루비가 설치되지 않은, 그러나 이것은 편집기로 일단의 .pas 파일을 시작하는 나를 위해 작동 :

답변

1

이 시도. .rb 파일과 관련된 ruby.exe가 있으면 작동 할 것입니다.

-don

+0

나는 그것을 줄 것이다. 이유는 내가 루비 물건이 시스템 경로, 한 방법 또는 다른에 일반적으로 경로가 필요하지 않기 때문에 반갑습니다. 나는 그것을 시도했을 때 다시 게시 할 것이다 – user119282

+0

그것은 일했다! 많은 감사합니다! – user119282

+0

문법을 고쳐 주시겠습니까? 당신이 쓴 것이 무엇인지는 분명하지 않습니다. –

0

여기에 작동하는 최소한의 코드입니다 :

procedure TForm1.Button1Click(Sender: TObject); 
var 
    params: string; 
begin 
    shellexecute(0, nil, 'mail_it.rb', 
       'fromaddr="[email protected]" tolist="[email protected]"', 
        nil, SW_NORMAL); 
end; 

내가 mail_it.rb의 전체 경로를 필요로하지 않았고 '열기',하지만 난 '.rb 필요 DID '.

관련 문제