اجرای برنامه دیگر در دلفی و صبر تا بسته شدن آن

helec

Member
یه سوال

سلام
فرض کنید می خوام از داخل برنامه خودم یه
فایل exe دیگه رو فراخوانی کنم
باید چکار کنم تا قبل از این که اون فایل بسته نشده
برنامه من اجرا نشه
مثلا قبل از این که فرم اصلی برنامه نشون داده بشه
یه فایل word باز بشه بعد از این که کاربر اون فایل
رو بست ، برنامه ، صفحه اصلی نشون داده بشه
و تا موقعیکه کاربر اون رو نیسته نتونه وارد برنامه بشه
ممنون
 

arash_j13

Member
می تونید برنامه رو تو یه حلقه نگه دارید و توی این حلقه چک کنید که پنجره ای که باز کردید هنوز بازه یا نه برای این کار می تونید از تابع find window استفاده کنید یا اینکه لیست پروسه های در حال اجرا رو بگیردی و ببیند که آیا پروسه ای که شما راه انداختید هنوز داره اجرا می شه یا نه فقط یه مشکلی هست اونم اینکه این حلقه باعث کنید شدن سیستم می شه که می تونید برای حلش تو حلقه تابع sleep رو فراخوانی کنید و پروسه رو برای مثلا پانصد یمیلی ثانیه متوقف کنید تا زمان پردازش کمتری به این برنامه اختصاص پیدا کنه
 

helec

Member
سلام
می تونید برنامه رو تو یه حلقه نگه دارید و توی این حلقه چک کنید که پنجره ای که باز کردید هنوز بازه یا نه برای این کار می تونید از تابع find window استفاده کنید یا اینکه لیست پروسه های در حال اجرا رو بگیردی و ببیند که آیا پروسه ای که شما راه انداختید هنوز داره اجرا می شه یا نه فقط یه مشکلی هست اونم اینکه این حلقه باعث کنید شدن سیستم می شه که می تونید برای حلش تو حلقه تابع sleep رو فراخوانی کنید و پروسه رو برای مثلا پانصد یمیلی ثانیه متوقف کنید تا زمان پردازش کمتری به این برنامه اختصاص پیدا کنه

میشه یه مثال کوچلو بذارین
ممنون
 

arash_j13

Member
مثل این
کد:
program Project1;

{$mode objfpc}{$H+}

uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  Interfaces, // this includes the LCL widgetset
  Forms
  ,Windows,shellapi
  { add your units here }, Unit1;
begin
  ShellExecute(0,'open','notepad.exe',nil,nil,1);
  repeat
        sleep(500);
  until findwindow('Notepad',nil)<=0 ;
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.
البته من دلفی نداشتم اینو با lazarus کامپایل کردم ولی برای دلفی هم همین طوره
 

جدیدترین ارسال ها

بالا