PDA

View Full Version : صدا کردن برنامه دلفی در کد



Layla.Download
پنج شنبه 29 دی 1390, 14:27 عصر
سلام مجدد

من یه برنامه دیگه نوشتم که می خواستم یک فایل نمونه test.pas که تو یه مسیر وجود داره رو با برنامه دلفی باز کنه. ولی یه مشکل دارم اینکه چطوری صدا کردن برنامه دلفی رو تو این کد قرار بدم. بقیه چیزا درست هست.

کمک کمک کمک تا حالا دو تا برنامه نوشتم که جواب نمی ده، کسی هم تا حالا مشکل منو حل نکرده!




procedure TForm١.button١.Click(Sender: TObject);
var
Security: TSecurityAttributes;
hFile:THandle; // holds a handle to the file
begin
Security.nLength:=SizeOf(TSecurityAttributes);
Security.bInheritHandle := FALSE;
hFile := CreateFile(PChar(‘c:\test.pas’), GENERIC_READ,
FILE_SHARE_READ, @Security, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, ٠);
if hFile = INVALID_HANDLE_VALUE then
begin
ShowMessage('ﺪﺸﻧ زﺎﺑ ﺮﻈﻧ درﻮﻣ ﻞﻳﺎﻓ');
Exit;
end;
end;

Layla.Download
پنج شنبه 29 دی 1390, 16:05 عصر
با تشکر فروان از اقای Gold
اگر کسی بلد نیست لطفا با کنایه و تیکه پیغام ندهید. علم خود را آکبند برای خود نگه دارید.
با سپاس
من کمک از برنامه نویسان این سایت نخواستم. خواستید کمک کنید وگرنه مسخره نکنید!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!
مرسی

SAASTN
پنج شنبه 29 دی 1390, 22:28 عصر
با فرض این که دلفی روی سیستم نصب هست و پسوند .pas با دلفی رجیستر شده، کافیه که ShellExecute رو با آدرس همون فایل test.pas اجرا کنید. اگر هم دلفی نصب نباشه پنجره Open Width ... نمایش پیدا می کنه، رفتار دقیقا شبیه به اینه که تو Explorer روی test.pas دابل کلیک کنید. در مورد ShellExecute هم تو همین سایت زیاد بحث شده.
اما راه دیگه هم اینه که از طریق رجیستری پیدا کنید که اصلا دلفی رو سیستم نصب هست یا نه، و اگر نصب بود آدرسش چیه، بعد با همون ShellExecute دلفی رو اجرا کنید و آدرس test.pas رو به عنوان پارامتر ارسال کنید. البته این کار لزومی نداره و همون روش اول کافیه، مزیت روش دوم نسبت به روش اول اینه که اگر فایل .pas با Application دیگه ای غیر از دلفی رجیستر شده باشه هم، باز فایل و با دلفی باز می کنیم، که احتمال این وضعیت هم خیلی ضعیفه.

Layla.Download
جمعه 30 دی 1390, 20:24 عصر
با تشکر فراوان از کاربر SAASTN
راهنمایی شما خیلی کمکم کرد.
من کد رو تغییر دادم و خیلی ساده تر کردم و جواب گرفتم.
البته من از winexecute استفاده کردم.
سپاسگزارم