PDA

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



robo-saz
چهارشنبه 07 آبان 1393, 12:26 عصر
با سلام خدمت اساتید محترم انجمن

من میخواستم بدونم از چه کدی برای نمایش دادن یک فرم کنسول باید استفاده کرد ؟ (چون فرم های پراپرتیز فرم های کنسول مشخصه ای به اسم name نداره (البته شاید من ندیدم :) )

مثلا با کلیک کردن روی یک دکمه فرم کنسول مورد نظر من اجرا بشه.

و چجوری میشه یک ویندوز فرم رو توسط یک فرم کنسول نمایش داد . (یعنی بالعکس)

اگر راهنمایی کنید ممنون میشم :لبخندساده:

یونس ابراهیمی
چهارشنبه 07 آبان 1393, 12:44 عصر
سلام ...لینک زیر رو ببینید.
لینک (http://www.w3-farsi.com/%D9%86%D9%85%D8%A7%DB%8C%D8%B4-%DA%A9%D9%86%D8%B3%D9%88%D9%84-%D8%AF%D8%B1-%D9%88%DB%8C%D9%86%D8%AF%D9%88%D8%B2-%D9%81%D8%B1%D9%85/)

pedram.11
چهارشنبه 07 آبان 1393, 12:44 عصر
سلام اول یه پروژه ویندوز فرم ایجاد کن. بعدش توی properties پروژه نوع خروجی رو از Windows Application به Console Application تغییر بده:
125078

robo-saz
پنج شنبه 08 آبان 1393, 13:54 عصر
سلام ...لینک زیر رو ببینید.
لینک (http://www.w3-farsi.com/%D9%86%D9%85%D8%A7%DB%8C%D8%B4-%DA%A9%D9%86%D8%B3%D9%88%D9%84-%D8%AF%D8%B1-%D9%88%DB%8C%D9%86%D8%AF%D9%88%D8%B2-%D9%81%D8%B1%D9%85/)

من که چیزی نفهمیدم :)

چون هیچ توضیحی نداشت :|

robo-saz
پنج شنبه 08 آبان 1393, 13:54 عصر
سلام اول یه پروژه ویندوز فرم ایجاد کن. بعدش توی properties پروژه نوع خروجی رو از Windows Application به Console Application تغییر بده:
125078

من اینکار رو کردم ولی دوباره وقتی میرم قسمت پراپرتیز قسمتی برای name نداره...

pedram.11
پنج شنبه 08 آبان 1393, 18:00 عصر
وقتی که پروژه ویندوز فرم رو ساختید. در قسمت Solution Explorer پروژه روی گزینه Properties دابل کلیک کنید:
125113
وقتی دابل کلیک کردید در تب Application فرمی شبیه تصویر زیر رو میبینید:
125118
در گزینه Output Type حالت رو از Windows Application به Console Application تغییر بدید:
125115

که در آخر به این شکل میشه:
125116

پروژه رو ذخیره و اجرا کنید :لبخندساده:

robo-saz
جمعه 09 آبان 1393, 10:16 صبح
وقتی که پروژه ویندوز فرم رو ساختید. در قسمت Solution Explorer پروژه روی گزینه Properties دابل کلیک کنید:
125113
وقتی دابل کلیک کردید در تب Application فرمی شبیه تصویر زیر رو میبینید:
125118
در گزینه Output Type حالت رو از Windows Application به Console Application تغییر بدید:
125115

که در آخر به این شکل میشه:
125116

پروژه رو ذخیره و اجرا کنید :لبخندساده:

فکر کنم منظور منو متوجه نشدید. من فقط میخوام با کلیک کردن روی یک دکمه یک فرم کنسولی نمایش داده بشه ولی نمیدونم باید چکار کنم و از چه کدی استفاده کنم :)

pedram.11
جمعه 09 آبان 1393, 10:45 صبح
خب برای اینکار شما باید از extern و API کرنل 32 استفاده کنید که آقای یونس ابراهیمی (http://barnamenevis.org/member.php?272349-%DB%8C%D9%88%D9%86%D8%B3-%D8%A7%D8%A8%D8%B1%D8%A7%D9%87%DB%8C%D9%85%DB%8C) قرار دادن

robo-saz
جمعه 09 آبان 1393, 11:32 صبح
خب برای اینکار شما باید از extern و API کرنل 32 استفاده کنید که آقای یونس ابراهیمی (http://barnamenevis.org/member.php?272349-%DB%8C%D9%88%D9%86%D8%B3-%D8%A7%D8%A8%D8%B1%D8%A7%D9%87%DB%8C%D9%85%DB%8C) قرار دادن

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

یا خود آقای ابراهیمی توضیح کاملی در مورد این کد بدند ممنون میشم. :)

pedram.11
جمعه 09 آبان 1393, 11:53 صبح
خب ایشون زخمت پروژه رو کشیدن خیلی سادست.
اول نیم اسپیس runtime.IntorpServices رو اضافه کنید:
using System.Runtime.InteropServices;

بعدش در کلاستون این دو خط قرار بدید:
[DllImport("kernel32.dll")]

static extern bool AllocConsole();
کار این دو خط اینه که از API نمایش کنسول موجود در کتابخانه کرنل استفاده میکنه.
حالا تنها کافیه هرجایی که نیاز دارید AllocConsole رو فراخونی کنید.

اگه باز هم پروژه نیاز دارید:

robo-saz
جمعه 09 آبان 1393, 21:54 عصر
خب ایشون زخمت پروژه رو کشیدن خیلی سادست.
اول نیم اسپیس runtime.IntorpServices رو اضافه کنید:
using System.Runtime.InteropServices;

بعدش در کلاستون این دو خط قرار بدید:
[DllImport("kernel32.dll")]

static extern bool AllocConsole();
کار این دو خط اینه که از API نمایش کنسول موجود در کتابخانه کرنل استفاده میکنه.
حالا تنها کافیه هرجایی که نیاز دارید AllocConsole رو فراخونی کنید.

اگه باز هم پروژه نیاز دارید:

ممنون . ولی دو سوال دیگه برام پیشامد :

1- AllocConsole یک متغییر هست .(یعنی میتونم تغییرش بدم ؟)

2- اگر 2تا اپلیکیشن کنسول داشته باشم چجوری میتونم اپلیکیشن مورد نظر خودمو نمایش بدم ؟

(ببخشید اگه سوالاتم خیلی مبتدیه :) )

pedram.11
شنبه 10 آبان 1393, 01:25 صبح
AllocConsole نام تابع API هست و نمیتونید تغییرش بدید.
میتونید عنوان کنسول رو تغییر بدید(Console.Title) تا کنسول ها مشخص بشن که کدم مال کدم برنامس

robo-saz
شنبه 10 آبان 1393, 10:16 صبح
AllocConsole نام تابع API هست و نمیتونید تغییرش بدید.
میتونید عنوان کنسول رو تغییر بدید(Console.Title) تا کنسول ها مشخص بشن که کدم مال کدم برنامس

ممنون . من وقتی روی پراپرتیز کنسول کلیک میکنم قسمتی برای تغییر عنوان نداره. اگه میشه با عکس نشون بدید.

در ضمن وقتی کدی که آقای ابراهیمی و شما گذاشتید رو استفاده میکنم برنامه کنسول مورد نظر من اجرا نمیشه . برای اینکه برنامه کنسول مورد نظر من اجرا بشه باید قسمتی از کد رو تغییر بدم؟

pedram.11
شنبه 10 آبان 1393, 11:09 صبح
نه دوست عزیز. بعد از اینکه کد نمایش کنسول رو زدید عنوان کنسول رو تغییر بدید، به اینصورت:
AllocConsole();
Console.Title="MyApp";

robo-saz
شنبه 10 آبان 1393, 22:32 عصر
نه دوست عزیز. بعد از اینکه کد نمایش کنسول رو زدید عنوان کنسول رو تغییر بدید، به اینصورت:
AllocConsole();
Console.Title="MyApp";

ممنون ولی پیغام خطای زیر رو میده :

Error 1 Non-invocable member 'System.Console.Title' cannot be used like a method.

pedram.11
شنبه 10 آبان 1393, 23:00 عصر
پرانتز دور رشته رو بردارید و جاش رشته رو به Console.Title انتساب بدید. یعنی اینطوری:
Console.Title="khkhkhkhkhkh";
نه



Console.Title("َkhkhkhkhkhkh");

robo-saz
یک شنبه 11 آبان 1393, 19:22 عصر
پرانتز دور رشته رو بردارید و جاش رشته رو به Console.Title انتساب بدید. یعنی اینطوری:
Console.Title="khkhkhkhkhkh";
نه



Console.Title("َkhkhkhkhkhkh");

ممنون ولی بازم خطا میده :|

pedram.11
یک شنبه 11 آبان 1393, 20:39 عصر
اینو کجا نوشتید؟ توی متد نمایش کنسول بنویسید. یعنی کدهاتون به اینصورت میشه:
[DllImport("kernel32.dll")]
static extern bool AllocConsole();


private void button1_Click(object sender, EventArgs e)
{
AllocConsole();
Console.Title="MyApp";
}