قم بتشغيل نص روبي من Delphi عبر Shellexecute
-
22-09-2019 - |
سؤال
لقد كتبت نصًا صغيرًا يتيح لي إرسال رسائل بريد إلكتروني عن طريق الاتصال به مع بعض معلمات سطر الأوامر.
في سطر الأوامر ، يعمل هذا:
ruby.exe mail_it.rb fromaddr="mailaddr1@gmail.com" tolist="mailaddr2@yahoo.com"
لكن حاول قدر الإمكان ، لا يمكنني تشغيله في Delphi 2007 لـ 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" باعتباره param الثاني في Shellexecute ، لكنه لا يساعد. تعود Shellexecute نفسها 42 ، والتي بقدر ما أستطيع أن أقول عما وجدته على مواقع الويب الأخرى يعني "لا خطأ".
المحلول
جرب هذا:
shellexecute(0, 'open', '<PUT YOUR PATH HERE>\mail_it.rb', fromaddr="mailaddr1@gmail.com" tolist="mailaddr2@yahoo.com"' , nil, SW_NORMAL);
ليس لديّ Ruby مثبتًا ، لكن هذا يعمل بالنسبة لي بدء ملف .pas مع المحرر. طالما أن لديك ruby.exe المرتبطة بملفات .rb ، يجب أن تعمل.
-اِتَّشَح
نصائح أخرى
إليك الحد الأدنى من الرمز الذي يعمل:
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 ، ولا "مفتوح" ، لكنني كنت بحاجة إلى ".rb".
لا تنتمي إلى StackOverflow