PDA

View Full Version : سوال: مشکل در لود کردن یک فایل اجرایی درون فرم



firoozi90
شنبه 15 مهر 1391, 11:17 صبح
سلام دوستان
من از روش زیر برای لود کردن یک فایل اجرایی درون یک فرم استفاده می کنم.اما نمی دونم چرا فایل اجرایی که خودم با مولتی مدیا بیلدر ساختم رو پیدا نمیکنه.(اجرا نمی کنه) /
اما اگر یه نت پد بزارم اونو باز می کنه
لطفا منو زاهنمایی کنید



این فضای نام ها رو using می کنم :

using System.Runtime.InteropServices;
using System.Diagnostics;

بعد این کد ها رو تو کلاس اصلی می نویسم :


[DllImport("USER32.DLL")]
static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);

[DllImport("USER32.dll")]
private static extern bool MoveWindow(IntPtr hwnd, int x, int y, int cx, int cy, bool repaint);




یه پنل روی فرمت گذاشتم و خاصیت Dock اون رو Fill کردم

حالا تو رویداد Load مربوط به فرم کدهای زیر رو نوشتم:

[CSHARP]

Process process = Process.Start("mamad.exe");
process.WaitForInputIdle();
SetParent(process.MainWindowHandle, this.panel1.Handle);

MoveWindow(process.MainWindowHandle, 0, 0, this.Width - 90, this.Height, true);
/CSHARP]

firoozi90
شنبه 15 مهر 1391, 22:22 عصر
لطفا اگر کسی می دونه دریغ نکنه؟

danialafshari
شنبه 15 مهر 1391, 23:06 عصر
سلام
اگه منظورت اینه که یک Button بزاری و روش کلیک کنی فایل اجراییت باز بشه میتونی از این کد استفاده کنی :

System.Diagnostics.Process.Start(@"مسیر فایل.exe");

firoozi90
یک شنبه 16 مهر 1391, 01:30 صبح
سلام
اگه منظورت اینه که یک Button بزاری و روش کلیک کنی فایل اجراییت باز بشه میتونی از این کد استفاده کنی :

System.Diagnostics.Process.Start(@"مسیر فایل.exe");


منظورم اینه که توی فرم باز بشه.(فرم سی شارپ)

danialafshari
یک شنبه 16 مهر 1391, 03:12 صبح
یعنی فایل exe تو فرمت باز بشه! اینطور به جواب به نظرم نمیرسی. اول بهتره
کار برنامه ای که بیلدر می کنه رو بگی و هدفت از این که می خوای توی فرمت اجراش کنی چیه رو توضیح بدی فکر می کنم زودتر به نتیجه برسی
موفق باشی

firoozi90
یک شنبه 16 مهر 1391, 17:09 عصر
یعنی فایل exe تو فرمت باز بشه! اینطور به جواب به نظرم نمیرسی. اول بهتره
کار برنامه ای که بیلدر می کنه رو بگی و هدفت از این که می خوای توی فرمت اجراش کنی چیه رو توضیح بدی فکر می کنم زودتر به نتیجه برسی
موفق باشی

نظرم عوض شد.همون جدا باز بشه.
کد شما کاملا درسته.اما من میخوام فایلم رو توی پوشه ی دیباگ بریزم و با دستور شما بازهم فایل رو پیدا نمی کنم.

ehsan7007
یک شنبه 16 مهر 1391, 21:05 عصر
خب شما مسیر رو که ندادی ؛ اگر کنار برنامه باشه به این صورت می شه :

Process.Start(Application.StartupPath + @"\name.exe");

Farshid007
یک شنبه 16 مهر 1391, 21:16 عصر
اگه فایلی کنار فایل exe نرم افزار شما هست اسمش رو بدید کافیه نیازی به application.StartupPath نیست

hakim22
یک شنبه 16 مهر 1391, 22:14 عصر
برای باز کردن فرم یک برنامه دیگه درون فرم برنامه ی جاری باید از گزینه Controls.add استفاده کنید.
ابتدا باید فورم رو بدست بیارید.
راه ساده Reference دادن فایل اجرایی برنامه ی دوم به برنامه ی اصلی است. بعد مثل هر dll یا کلاس دیگه میشه با اون کار کرد.

firoozi90
جمعه 21 مهر 1391, 12:20 عصر
بچه ها هیچکدوم از این کدها جواب ندادن.
لطفا به این تایپیک پاسخ بدین
اجرا کردن فایلی که سیستمی نباشد؟ (http://barnamenevis.org/showthread.php?364537-%D8%A7%D8%AC%D8%B1%D8%A7-%DA%A9%D8%B1%D8%AF%D9%86-%D9%81%D8%A7%DB%8C%D9%84%DB%8C-%DA%A9%D9%87-%D8%B3%DB%8C%D8%B3%D8%AA%D9%85%DB%8C-%D9%86%D8%A8%D8%A7%D8%B4%D8%AF%D8%9F)