PDA

View Full Version : چرا من نمیتونم یه برنامه غیر دلفی رو بصورت پنجره مخفی اجرا کنم؟



arash_ebrahimi_nk
شنبه 14 مرداد 1385, 09:33 صبح
سوال که ههمون عنوان تاپیک بود.

روش هایی که من تست کردم - Winexec ، Shellexecutec و CreateProcess با پارامتره SW_HIDE .
روی برنامه ماشین حساب امتحان کردم

arash_ebrahimi_nk
شنبه 14 مرداد 1385, 14:47 عصر
مگه کدهاش اینها نیستن


winexec('calc.exe', SW_HIDE);

یا


ShellExecute(0, nil, 'calc.exe' , nil, nil, SW_HIDE);

یا


var
ProcessInfo: TProcessInformation;
StartUpInfo: TStartupInfo;

begin
FillChar(StartUpInfo, SizeOf(StartUpInfo), $00);
StartUpInfo.dwFlags := STARTF_USESHOWWINDOW;
StartUpInfo.wShowWindow := SW_HIDE;

CreateProcess(nil, 'calc.exe', nil, nil,
False, IDLE_PRIORITY_CLASS, nil, nil, StartUpInfo,
ProcessInfo)


من توی ویندوز اکس پی سرویس پک دو امتحان کردم توی ویندوزهای دیگه امتحان نکردم.
هیچکدوم از کدهای بالا جواب نمیدن.
از مثالی که همراه با کمپوننت macodehook هست و CreateProcess رو هوک میکنه استفاده کردم تا بتونم کدهای CreateProcess رو کنترل کنم از این مسیر هم کدهای بالا رو تزریق کردم اما نتیجه نداشت.
چه باید بکنم ؟؟؟؟؟

مرد مباح
شنبه 14 مرداد 1385, 15:19 عصر
مشکل رو منم دارم و نتونستم حلش کنم.
ولی اگه مشکلت فقط با ماشین حساب حل میشه کامپوننت RXLibrary رو نصب کن و توی اون ماشین حساب داره.
ولی این مشکل رو من دارم با یک برنامه دیگه.
یک برنامه ای که خودم نوشتم و با زبان دیگه ای است و فایل EXE اون رو دارم.
میخوام این فایل به صورت یک پنجره توی برنامه اجرا بشه.
راه حلی براش سراغ دارین دوستان؟

arash_ebrahimi_nk
شنبه 14 مرداد 1385, 15:34 عصر
مشکل رو منم دارم و نتونستم حلش کنم.
ولی اگه مشکلت فقط با ماشین حساب حل میشه کامپوننت RXLibrary رو نصب کن و توی اون ماشین حساب داره.
ولی این مشکل رو من دارم با یک برنامه دیگه.
یک برنامه ای که خودم نوشتم و با زبان دیگه ای است و فایل EXE اون رو دارم.
میخوام این فایل به صورت یک پنجره توی برنامه اجرا بشه.
راه حلی براش سراغ دارین دوستان؟

ماشین حساب رو محض نمونه بیان کردم.
ضمن اینکه باز کردن یه برنامه توی برنامه خودمون یه چیز دیگه هست.

کدهایی که من بالا نوشتم استاندارد و بدون مشکل به نظر میرسن امّا جواب نمیدن.
جالبه که بعد از باز شدن برنامه با متدهای بالا، کد ShowWindow با پارامتره WS_HIDE پنجره برنامه رو مخفی میکنه! که البته بدرد کار من نمیخوره چون اگه زیر میلی ثانیه هم این کار رو انجام بدم باز پنجره برنامه یه لحظه نشون داده میشه :ناراحت:

Hassan_pcshop
شنبه 14 مرداد 1385, 16:15 عصر
ببخشید شما میتونید از دوستت حسن بپرسی؟
ولی من هم همین مشکل رو دارم

مرد مباح
شنبه 14 مرداد 1385, 20:22 عصر
آرش جان.
پارامترهایی که جلوی اون فرمانها مینویسی برای ÷نجره ای که ران میکنی عمل میکنه و نه روی برنامه خودت. من دارم روش کار میکنم.
با OLE هم نتونستم این کارو بکنم تا حالا. OLE هم مثل این فرمانها عمل میکنه.

arash_ebrahimi_nk
یک شنبه 15 مرداد 1385, 06:16 صبح
آرش جان.
پارامترهایی که جلوی اون فرمانها مینویسی برای ÷نجره ای که ران میکنی عمل میکنه و نه روی برنامه خودت. من دارم روش کار میکنم.
با OLE هم نتونستم این کارو بکنم تا حالا. OLE هم مثل این فرمانها عمل میکنه.

ممنون که همراه من هستی - من کاری به برنامه خودم ندارم می خوام برنامه های غیر دلفی رو بصورت پنجره مخفی به اجرا در بیارم.

کسی تو این زمینه اطلاعات نداره ؟ :گیج:

mzjahromi
یک شنبه 15 مرداد 1385, 07:01 صبح
منظورتون از پنجره مخفی چی هست؟

vcldeveloper
یک شنبه 15 مرداد 1385, 07:55 صبح
یک برنامه ای که خودم نوشتم و با زبان دیگه ای است و فایل EXE اون رو دارم.
میخوام این فایل به صورت یک پنجره توی برنامه اجرا بشه.


من دارم روش کار میکنم.
با OLE هم نتونستم این کارو بکنم تا حالا. OLE هم مثل این فرمانها عمل میکنه.
OLE که برای خودش کار نمیکنه. شما باید خودت رابط مربوطه را در برنامه اول نوشته باشی تا بتونی در برنامه دوم با استفاده از OLE برنامه اول را کنترل کنی.

arash_ebrahimi_nk
یک شنبه 15 مرداد 1385, 08:28 صبح
مشکل من با هوک کردن حل شد! ممنون از همه.

مرد مباح
یک شنبه 15 مرداد 1385, 11:06 صبح
علی جان.OLE خودش فایلهای EXE رو ساپورت میکنه و اجرا میشه.مسئله اینه که میخوام توی برنامم یک ویندو باز بشه و برنامه ران بشه نه توی ویندوی خود برنامه و یک آیکون هم به TaskBar اضافه بشه.