ورود

View Full Version : سوال: ساخت autorun برای سیدی



akar_program
پنج شنبه 19 خرداد 1390, 08:11 صبح
باسلام میخواهم بدونم چطور میشه‌ یك autorun بسازم باكلیك كردن روی هر دوگه‌ یك فایل در یك فلدر خاص سیدی اجرا بشه‌
مسلن من در سیدی كنار فایلی اجرای یك فلدر دارم با نام files میخخواهم یك دكمه‌ بسازم با كلیك كردن روش یك فایل درفلدر files كنار فایلی اجرای درسیدی اجرابشه‌

Felony
پنج شنبه 19 خرداد 1390, 08:50 صبح
به وسیله تابع ExtractFilePath باید آدرس فعلی فایل exe برنامه خودتون رو به دست بیارید و بهش پوشه و نام فایل مورد نظر رو اضافه کنید :

var
FileAddress: String;
begin
FileAddress:= ExtractFilePath(Application.ExeName) + 'Files\Song.mp3';
end;

akar_program
پنج شنبه 19 خرداد 1390, 14:57 عصر
باسلام ممنون ولی چطور بتوانم ادرسی كه‌ در FileAddress اماده‌ كردم اجرا كنم ممنون

Felony
پنج شنبه 19 خرداد 1390, 15:40 عصر
به وسیله تابع ShellExecute از کتابخانه ShellAPI ؛ کدی هم که مد نظرتون هست چیزی شبیه این میشه :

var
FileAddress: String;
begin
FileAddress:= ExtractFilePath(Application.ExeName) + 'Files\Song.mp3';
ShellExecute(0, 'Open', PWideChar(FileAddress), '', '', SW_SHOWNORMAL);
end;

akar_program
پنج شنبه 19 خرداد 1390, 17:36 عصر
خیلی ممنون اینو دروست شود كدم الان شود این مسلن میخواهم اون فایلی test.exe اجراكنم خوب اون فایل وقتی تو سیدی اجرا میكنم شاید 20 سانیه‌ تول بكیشه‌ . میخواهم یك نوار پیشرفت داشته‌ باشد كابر لود شودن ان ببیند تا بفهمد دار باز میشه‌
FileAddress:=ExtractFilePath(Application.ExeName) + 'files\test.exe';
ShellExecute(0, 'Open', PWideChar(FileAddress), '', '', SW_SHOWNORMAL);

Mahmood_M
پنج شنبه 19 خرداد 1390, 20:37 عصر
وقتی از دستور ShellExecute استفاده می کنید ، کنترل اجرای برنامه به دست ویندوز می افته و به این راحتی نمی شه وضعیت اجرای برنامه رو کنترل کرد
ابتدا باید مشخص کنید که دلیل 20 ثانیه تاخیر برنامه چی هست ، اگر برنامه ی Test که قراره اجرا بشه رو هم خودتون نوشتید ، می تونید نوار پیشرفت رو توسط همون برنامه نمایش بدید
به نظر میرسه که تاخیر در اجرای برنامه بعد از Create شدن و اجرای Process برنامه اتفاق می افته ، وقتی Process فعال میشه دیگه برنامه اجرا شده هست و ویندوز اون رو به عنوان یک Process فعال می شناسه ، گرچه ایجاد و اجرای یک Process مراحل زیادی داره ولی معمولا باعث تاخیر نمیشه ...

شما یا باید توسط برنامه ی دوم که اجرا میشه نوار وضعیت رو نمایش بدید ، یا اینکه توسط برنامه ی دوم مراحل اجرا رو به برنامه ی اول ( اجرا کننده ) اطلاع بدید و برنامه ی اول متناسب با وضعیت که توسط برنامه ی دوم اعلام میشه ، نوار وضعیتی رو نمایش بده ...

اما اگر برنامه ی دوم رو خودتون نمی سازید و یک برنامه ی آماده هست ، شاید بشه با ShellExecuteEX کارهایی رو انجام داد ( مطمئن نیستم ) ولی فکر نمی کنم نتیجه ی مطلوبی بگیرید ، چون تاخیر در " نمایش " برنامه هست نه در ایجاد و اجرای Process

به هر حال ، موفق باشید ...

akar_program
پنج شنبه 19 خرداد 1390, 21:35 عصر
خیلی ممنو برای جوابتون فایلی دووم كه‌ اجرا میشه‌ خودم ننویشتم با خاتر اون خاستم نوار بیشرفت داشته‌ باشد وقتی روی سیدی اجرا میكنم زمان میبرد تا اجرا میشه‌

ولی یك فكری كردم براش ببین دروسته‌ وقتی روی دكمه‌ كلیك كردم یك نوار بیشرفت از 0 تا 100 بركند برای هر عدد 500 میلی سانیه‌ یانی با 50 سانیه‌ نوارپیشرفتبربشه‌ هر یك سانیه‌ چیك كند ببیند برنامه‌ی دووم اجرا شوداست اگر اجرا شود نوار بیشرفت هرجای هست برسه‌ با سد ایا این كار منتیقی هست جون حتمن قبل از 50 سانیه‌ اجرا میشه‌

سعید صابری
پنج شنبه 19 خرداد 1390, 22:18 عصر
دوست من فکر می کنم برای اینکار از نرم افزار ساخت اتوران سی دی استفاده کنی بهتر باشه.معمولا کدنویسی هم نمی خواد

akar_program
پنج شنبه 19 خرداد 1390, 22:21 عصر
ممنون از رهنمایتون ولی من لازمدارم كه‌ با دلفی بنویسم