PDA

View Full Version : اجرای یک برنامه تحت داس



masoode
یک شنبه 12 مهر 1383, 17:23 عصر
سلام
من می خواهم یک برنامه تحت dos را که دارای پارامترهای ورودی است را در دلفی اجرا کنم. بعد از اتمام کار اولا به برنامه دلفی یک جوری اعلام کند کارش تمام شده و ثانیا خود به خود پس از اجرا بسته شود
البته با winexec این کار را کرده ام ولی قسمت اول نیازم براورده نشد

nassim_20
چهارشنبه 22 مهر 1383, 23:07 عصر
دوست عزیز من دقیقا مشکل شما را متوجه نشدم ولی اینقدر می دانم که برای اجرای فایل در محیط داس باید زمانیکه فرم جدید ایجاد می کنی به جای گزینه Application گزینه Console Application را انتخاب کنی (در قسمت Other) و در این صفحه مثل پاسکال برنامه نویسی کنی
موفق باشی :flower:

phantasm
پنج شنبه 23 مهر 1383, 00:37 صبح
من می خواهم یک برنامه تحت dos را که دارای پارامترهای ورودی است را در دلفی اجرا کنم.

چه برنامه ای رو؟

masoode
پنج شنبه 23 مهر 1383, 08:08 صبح
سلام
برنامه مورد نظر من با این خط فرمان اجرا می شه
asm51.exe c:\aa.asm
و
oh.exe c:\aa.obj
همان طور که قبلا گفتم می خوام برنامه ام این رو صدا بزنه و بعد از خاتمه اجرای اون برگرده به برنامه اصلی

phantasm
پنج شنبه 23 مهر 1383, 13:19 عصر
بعد از اتمام کار اولا به برنامه دلفی یک جوری اعلام کند کارش تمام شده

تابع winexec یه خروجی عددی داره٬ که اگه عدد بزرگتر از 31 تولید کنه یعنی تابع با موفقیت عمل مورد نظر رو انجام داده.

MSK
پنج شنبه 23 مهر 1383, 15:36 عصر
procedure RunAndWaitShell(Executable,parameters:string ;Visibility:integer);
var
Info:TShellExecuteInfo;
pInfo:PShellExecuteInfo;
exitCode:DWord;
begin
{Pointer to Info}
pInfo:=@Info;
{Fill info}
with Info do
begin
cbSize:=SizeOf(Info);
fMask:=SEE_MASK_NOCLOSEPROCESS;
wnd:=application.Handle;
lpVerb:=nil;
lpFile:=PChar(Executable);
{Executable parameters}
lpParameters:=Pchar(parameters+#0);
lpDirectory:=nil;
nShow:=Visibility;
hInstApp:=0;
end;
{Execute}
ShellExecuteEx(pInfo);

{Wait to finish}
repeat
exitCode := WaitForSingleObject(Info.hProcess,500);
Application.ProcessMessages;
until (exitCode <> WAIT_TIMEOUT);
end;
سپس در برنامه این را مینویسی:


RunAndWaitShell(
My Program Path,
'My Parameters,Sw_ShowNormal);

masoode
پنج شنبه 23 مهر 1383, 20:19 عصر
با تشکر از دوستان :gift:
آیا این زیر برنامه احتیاج به استفاده از unit خاصی نداره؟

m_reza
جمعه 24 مهر 1383, 16:49 عصر
باید Shellapi را در قسمت uses اضافه کنید