PDA

View Full Version : سوال: اجبار برنامه به زیر برنامه های دیگر ماندن



یوسف زالی
یک شنبه 26 تیر 1390, 21:23 عصر
سلام.
من با برنامه A برنامه B رو ران می کنم.
برنامه A در حقیقت برنامه یکپارچه ساز من هست که زیر برنامه هایی رو اجرا می کنه.
مثلا یکی از زیربرنامه ها حسابداری هست، یکی دیگه انبار داری...
مشکل اینجاست که اگر پس از اجرای برنامه B روی قسمتی از برنامه A کلیک کنم یا مثلا با Win+Tab برم روی اون، برنامه A رو قرار می گیره و این مطلوب من نیست.
در حقیقت دنبال روشی هستم که این دو برنامه شبیه به یک برنامه به نظر برسند و B در کارکرد مثل فرمی از A به نظر برسه.(مهم نیست در TaskMan چند تا باشن)
شاید هم بشه برنامه B به عنوان بخشی از A درون A ران شه که بعید می دونم.
دوستان چه راهکاری پیشنهاد می کنند؟

nsco_nsco
دوشنبه 27 تیر 1390, 00:44 صبح
سلام ماجرا همونی هست که گفتم باید راهی باشه که یک فایل اگزه رو طوی یکی دیگه باز کرد دوستان اگر می دونن بگن چطوری این کار رو میشه کرد :قلب:

BORHAN TEC
دوشنبه 27 تیر 1390, 10:47 صبح
بهترین راه استفاده از کامپوننت TRzLauncher است که در مجموعه Raize Componets وجود دارد که توسط شرکت Raize Software ایجاد شده است.

یوسف زالی
دوشنبه 27 تیر 1390, 12:28 عصر
این کامپوننت مطمئن هستید که برای فرم ها نیست و برای برنامه های مجزا است؟
آیا مقدوره برام بگذارید؟
آیا بدون کامپوننت مقدور نیست؟

BORHAN TEC
دوشنبه 27 تیر 1390, 14:48 عصر
این کامپوننت مطمئن هستید که برای فرم ها نیست و برای برنامه های مجزا است؟

کاملاً بله :لبخند:

آیا مقدوره برام بگذارید؟

نه، برای این که این کامپوننت ها حدود 50 مگابایت حجم دارند و شما به راحتی می توانید آن را در اینترنت پیدا کنید. البته توجه داشته باشید که مجموعه Raize Components علاوه بر این کامپوننت خاص صدها کامپوننت کاربردی دیگر را نیز شامل می شود.

آیا بدون کامپوننت مقدور نیست؟
امکان داره ولی این کار به اختراع مجدد چرخ منجر میشه! البته این کامپوننت امکانات دیگری هم دارد، مثلاً می توانید متوجه شوید که آن فایلی که با آن اجرا کرده اید، اجرایش به پایان رسیده و یا خیر و چندین قابلیت جالب دیگر که پیاده سازی کردن این قابلیتها توسط شما ممکن است زمان و هزینه زیادی را صرف کند.

یوسف زالی
دوشنبه 27 تیر 1390, 15:35 عصر
ممنون شاهین جان.
یه تستی می کنم.
امیدوارم که بتونم از پسش بر بیام.

ehp_kz6597
دوشنبه 03 مرداد 1390, 09:41 صبح
سلام

بهترین راه استفاده از کامپوننت TRzLauncher است که در مجموعه Raize Componets وجود دارد
جناب آقای عشایری من این مجموعه رو نصب کردم ولی کامپوننت TRzLauncher توش نیست (البته حجمش حدود 40 مگ بود/ v5.2 )
این کامپوننت تو نسخه خاصی وجود داره؟

ممنون

vcldeveloper
دوشنبه 03 مرداد 1390, 13:26 عصر
در حقیقت دنبال روشی هستم که این دو برنامه شبیه به یک برنامه به نظر برسند و B در کارکرد مثل فرمی از A به نظر برسه.(مهم نیست در TaskMan چند تا باشن)
شاید هم بشه برنامه B به عنوان بخشی از A درون A ران شه که بعید می دونم.
برای اجراش می تونید از تابع CreateProcess استفاده کنید، و با استفاده از تابع WaitForSingleObject هم کاری کنید که برنامه A تا زمانی که برنامه B در حال اجرا هست، از کار بیافته.

اگر میخواید برنامه B به صورت بخشی از برنامه A نمایش داده بشه، یک راهش اینه که برنامه A بعد از اجرای برنامه B، با استفاده از تابع SetWindowLong برخی استایل های پنجره مربوط به برنامه B مثل WS_CAPTION, WS_THICKFRAME, WS_BORDER, و غیره را غیرفعال کنه، و سپس با استفاده از تابع SetParent، مقدار Parent پنجره مربوط به برنامه B را بر روی یکی از پنجره های خودش تنظیم کنه.

یوسف زالی
دوشنبه 03 مرداد 1390, 15:07 عصر
خیلی ممنون جناب کشاورز.
من جایی دیده بودم با OLEContainer کاری کرده بودن که مثلا فایل PDF توی یک فرم باز می شد.
این کار رو با exe هم میشه کرد؟ چون به همون روش تست کردم نمی شد. شاید تنظیمات یا شی نادرستی انتخاب کرده بودم.

از این که وقت گذاشتید ممنونم.

vcldeveloper
سه شنبه 04 مرداد 1390, 13:19 عصر
من جایی دیده بودم با OLEContainer کاری کرده بودن که مثلا فایل PDF توی یک فرم باز می شد.
OLEContainer زمانی کار میکنه که برنامه مورد نظر شما خودش یک رابط مبتنی بر MS COM ارائه کرده باشه. برنامه هایی مثل مجموعه MS Office یا Adobe Reader همچین رابطی را ارائه می کنند. برنامه شما اگر همچین چیزی ارائه نمیکنه، قابل استفاده توسط OLEContainer نیست.

BORHAN TEC
سه شنبه 04 مرداد 1390, 14:11 عصر
جناب آقای عشایری من این مجموعه رو نصب کردم ولی کامپوننت TRzLauncher توش نیست (البته حجمش حدود 40 مگ بود/ v5.2 )
این کامپوننت تو نسخه خاصی وجود داره؟
در مورد نسخه 5.2 اطلاعی ندارم. من از نسخه 5.4 استفاده می کنم و کامپوننت TrzLauncher در این نسخه وجود دارد.