PDA

View Full Version : آموزش: (WriteLine در Winapp) اجرای همزمان console application و windows application



r00tkit
شنبه 01 اسفند 1388, 21:40 عصر
سلام

در جواب یکی از دوستان =>
فرض کنیم ما یک برنامه ی windows application داریم حالا برنامه ی ما می خواد از cmd اجرا شه و در صورت پارامتر های مختلف غلط پیغام خطا بده البته در console با WriteLine
و اگه پارامتر درست بود windows برنامه اجرا شه
و یا در یه برنامه windows application بتونیم از Console.WriteLine استفاده کنیم:متفکر::متفکر::گیج:

اصلا خودتون فایل ضمیمه رو اجرا کنید تا منظور من رو بگیرید.
:


[DllImport("kernel32")]
static extern bool AttachConsole(int x);
[STAThread]
static void Main(string[] args)
{

if (args.Length < 1)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(fals e);
Application.Run(new Form1());
}
else
{
AttachConsole(-1);
Console.WriteLine("Hello, World!");
Console.Write("Press a key to continue...");
Console.Read();
}

AttachConsole برای اینه که برنامه رو Attach می کنه به console که ما مشخص می کنیم -1 باعث می شه به console پدر برنامه ی در حال اجرا یعنی همون Cmd

حالا وقتی برنامه رو همین جوری (با کلیک روی برنامه) اجرا کنیم بخواهیم از Console.WriteLine استفاده کنیم باید



[DllImport("kernel32")]
static extern bool AllocConsole();
چون ما با کلیک رو برنامه ان رو اجرا می کنم Consoleی نیست که برنامه کاراشو انجام بده به همین خاطر از این تابع استفاده می کنم که یه console جدید برای برنامه ی ما می سازه
مثال :


private void button1_Click(object sender, EventArgs e)
{

Console.WriteLine("hello world");
}

البته یه تابع دیگه هم هست این تابع console رو از بین می بره



DllImport("kernel32.dll")]
public static extern bool FreeConsole();:تشویق::تشویق::تشویق: :تشویق::تشویق:

یه trick
توی ویندوز ویستا و 7 cmd به صورت کوچیک دیده می شه برای اینکه برنامه رو به صورت fullscreen دیده بشه اول wmic.exe رو اجرا کنید بعد برنامه رو fullscreen کنید بعد ازش خارج شید با quit برای save این حالت به Properties رفته تیک QuickEdit mode رو بزنید