با عرض سلام خدمت دوستان...
سوال من اینه که می خوام برنامم فقط در صورت درخواست اجرا به صورت پارامتر ، اجرا بشه و با دبل کلیک کردن اجرا نشه...مثلا این جوری اجرا بشه :
"C:\MyPRJ.exe"\Run
Printable View
با عرض سلام خدمت دوستان...
سوال من اینه که می خوام برنامم فقط در صورت درخواست اجرا به صورت پارامتر ، اجرا بشه و با دبل کلیک کردن اجرا نشه...مثلا این جوری اجرا بشه :
"C:\MyPRJ.exe"\Run
سلام
کد:procedure TForm1.FormCreate(Sender: TObject);
begin
if ParamCount=0 then
Application.Terminate;
end;
دستتون درد نکنه....چه جوری می تونم براش پارامتر تعریف کنم و اینکه با اون پارامتر چی کار بکنه...نقل قول:
نقل قول:
چه جوری می تونم براش پارامتر تعریف کنم
کد:myprogram.exe param1 param2 param3
اين سوال شما بود نه من. شما ميخوايد كه برنامه با پارامتر اجرا بشهنقل قول:
اینکه با اون پارامتر چی کار بکنه...
وقتی که شما پروژه ای دارید که در این پروژه از چندین فایل اجرایی دیگه که خودتان نوشته اید استفاده می کنید و می خواهید یک فایل اجرایی در اعزای دریافت یک پارامتر کار خاصی را انجام دهد به این صورت عمل می کنید :
:40:B]یک پروژه جدید ایجاد کنید .[/B]:40:
در پروژه ای که قرار است پارامتر ها را دریافت کند و بر اساس پارامترها کاری انجام دهد کافیست در قسمت ساخت فرم از کد های زیر استفاده کنید :
:40:کد:procedure TForm1.FormCreate(Sender: TObject);
var i:byte;
begin
i:=0;
if ParamCount=0 then
Application.Terminate
else
begin
if ParamStr(1)='run' then
begin
showmessage('run');
i:=1;
end;
if ParamStr(1)='serch' then
begin
showmessage('serch');
i:=1;
end;
if i=0 then
Application.Terminate;
end;
end;
و در برنامه اصلی ( برنامه ای که می خواهید پارامتر ها را برای برنامه ارسال کنید ) از کد زیر استفاده کنید :
برای نمونه می تونید به این صورت عمل کنید :کد:ShellExecute(Handle,'open',filename,parametr,nil,SW_SHOWNORMAL);
یک پروژه جدید ایجاد کنید و دو عدد Edit در فرم قرار دهید و یک Button در فرم قرار دهید
در قسمت Uses مقدار Shellapi را اضافه کنید
در قسمت OnClick فرم کد زیر را قرار دهید :
حال برنامه آماده است .کد:ShellExecute(Handle,'open',pchar(edit1.text),pchar(edit2.Text),nil,SW_SHOWNORMAL);
در Edit1 مسیر و نام فایل را وارد کنید و در Edit2 پارامتری را که می خواهید برای برنامه ارسال گردد را وارد کنید و Button را انتخاب کنید . برنامه اجرا می شود
حال اگر در برنامه اول که براساس پارامتر کار می کند پارامتر های مناسبی ارسال گردد برنامه کار می کند اگه پارامتری به برنامه ارسال نشود و یا پارامتر های دیگری به برنام ارسال شود ( اگه دقت کرده باشید ) برنامه ای که پارامتر اشتباهی ( خالی ) برایش ارسال می کند یک لحظه نمایان می شود و دوباره بسته می شود برای جلوگیری از این کار کافیست در برنامه اولی در قسمت کد اصلی ( کلید Ctrl+F12 را فشار دهید ) کادری باز می شه که شما نام برنامه را انتخاب می کنید و قسمت کد به صورت زیر تغییر می دهید :
و کد قسمت ساخت فرم را به کد زیر تغییر دهید :کد:program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
begin
Application.Initialize;
Application.ShowMainForm:=false;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
در ضمن در این برنامه فقط ار یک پارامتر استفاده شده است اگه می خواهید هم زمان چند پارامتر به برنامه ارسال کنید ادر قسمت ارسال پارامتر کافیست که بین پارامتر ها فاصله ایجاد کنید یعنی در Edit2 چنین تایپ کنید :کد:procedure TForm1.FormCreate(Sender: TObject);
var i:byte;
begin
i:=0;
if ParamCount=0 then
Application.Terminate
else
begin
if ParamStr(1)='run' then
begin
showmessage('run');
form1.show;
i:=1;
end;
if ParamStr(1)='serch' then
begin
showmessage('serch');
form1.show;
i:=1;
end;
if i=0 then
Application.Terminate;
end;
end;
در این صورت دو پارامتر به برنامه ارسال می شود در قسمت بررسی پارامتر ها هم باید کد را به صورت زیر تغییر دهید :کد:run serch
تمام شد .:10::19:کد:if ParamStr(1)='run' then
if ParamStr(2)='serch' then
بسیار بسیار ممنون.:11:..توضیحتون خیلی کامل و دقیق بود ...:11: