PDA

View Full Version : مخفی کردن پنجره یک برنامه console



vcldeveloper
یک شنبه 10 خرداد 1383, 02:35 صبح
سلام
همونطور که میدونید وقتی یه برنامه Console اجرا میشه یه پنجره سیاه (پنجره console ویندوز )برای نشون دادن خروجی برنامه ظاهر میشه.

می خواستم بدونم چطوری میشه این پنجره رو تو برنامه مخفی کرد. یعنی وقتی برنامه اجرا میشه هیچ پنجره ای باز نشه. چون برنامه من هیچ خروجی برای دیدن کاربر نداره!

Panje Tala
یک شنبه 10 خرداد 1383, 08:27 صبح
با سلام


winexec('cmd',sw_hide);

vcldeveloper
یک شنبه 10 خرداد 1383, 10:13 صبح
میبخشید ولی من میخوام برنامه خودم رو hide کنم!

Panje Tala
سه شنبه 12 خرداد 1383, 13:55 عصر
با سلام
برای مخفی کردن فرم برنامه وارد منو Project شوید و View source را انتخاب کنید کدهای پروژه مشخص می شوند قبل از اینکه فرم اصلی برنامه Creat شود کد زیر را وارد کنید:



Application.ShowMainForm:=false;


با این کار وقتی برنامه اجرا شد دیگر فرمی از آن دیده نمی شود و با استفاده از Task Manager باید برنامه را ببندی.
و اما اگر می خواهی فرم ابتدا دیده شود و بعد با زدن کلیدی دیده نشود. در Event کلید کد زیر را تایپ کن: (با فرض اینکه نام فرم اصلی Main_form است )


Main_form.hide;

با زدن کلید فرم مخفی می شود ولی اعمال تعریف شده انجام می شود.

vcldeveloper
سه شنبه 12 خرداد 1383, 21:32 عصر
برای مخفی کردن فرم برنامه وارد منو Project شوید و View source را انتخاب کنید کدهای پروژه مشخص می شوند قبل از اینکه فرم اصلی برنامه Creat شود کد زیر را وارد کنید:

دوست عزیز این کار رو خودم بلدم ولی برنامه های Console فرم ندارند. فقط یه پنجره مثل DOS باز میشه که خروجی برنامه رو نشون میده. من میخوام این پنجره cmd(همپن که شبیه DOSهست) نمایش داده نشه!

nPad.Net
چهارشنبه 05 آبان 1389, 21:55 عصر
دوست عزیز این کار رو خودم بلدم ولی برنامه های Console فرم ندارند. فقط یه پنجره مثل DOS باز میشه که خروجی برنامه رو نشون میده. من میخوام این پنجره cmd(همپن که شبیه DOSهست) نمایش داده نشه!

سلام از اونجایی که نخواستم تاپیک اضافه ای درست کنم و این Page در Search سایت جزء صفحات اول بود وچون استفاده از dll ها تقریبا به زبان برنامه نویسی وابسته نیست...
برا پنهان کردن console برنامه (همون صفحه سیاهه) باید از user32.dll و دو تابع موجود در اون تحت نام های ()ShowWindow و () FindWindow استفاده کرد.

من از تمام دلفی کارای عزیز عذر میخوام اما کد زیر برا net. کارای گرامی است:لبخندساده:




[DllImport("user32.dll")]
publicstaticexternIntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32.dll")]
staticexternbool ShowWindow(IntPtr hWnd, int nCmdShow);



حالا تو قسمت Main برنامتون قبل از هر کاری این کد رو اضافه کنید:




Console.Title = "MyApp";
IntPtr hWnd = FindWindow(null, Console.Title );
if (hWnd != IntPtr.Zero)
{
//Hide the window
ShowWindow(hWnd, 0);
// 0 = SW_HIDE
}
if (hWnd != IntPtr.Zero)
{
//Show window again
ShowWindow(hWnd, 1);
//1 = SW_SHOWNORMA
}



موفق باشید!

vcldeveloper
پنج شنبه 06 آبان 1389, 00:57 صبح
سلام از اونجایی که نخواستم تاپیک اضافه ای درست کنم و این Page در Search سایت جزء صفحات اول بود وچون استفاده از dll ها تقریبا به زبان برنامه نویسی وابسته نیست...
برا پنهان کردن console برنامه (همون صفحه سیاهه) باید از user32.dll و دو تابع موجود در اون تحت نام های ()ShowWindow و () FindWindow استفاده کرد.
من از تمام دلفی کارای عزیز عذر میخوام اما کد زیر برا net. کارای گرامی استاین تاپیک مربوط به سال 1383 بود. برای اون کاری که من در آن زمان میخواستم انجام بدم، کافی بود که خط مربوط به {$APPTYPE CONSOLE} از کد برنامه حذف بشه، تا برنامه به عنوان یک برنامه غیرکنسول اجرا بشه، و پردازش مورد نظر را انجام بده.

در صورت استفاده از ShowWindow پنجره کنسول برای یک لحظه نمایش داده میشد. در هر حال، از اونجایی که اینجا بخش دلفی هست، معادل دلفی کدی که نوشتید رو در اینجا قرار میدم:

program Project1;

{$APPTYPE CONSOLE}

uses Windows;

var
AHandle : THandle;
begin
AHandle := FindWindow(nil,PChar(ParamStr(0)));
if AHandle > 0 then
begin
if ShowWindow(AHandle, SW_HIDE) then
{ TODO : Console window is now hidden, add your code here... }
end;
end.

nPad.Net
پنج شنبه 06 آبان 1389, 17:42 عصر
ای بابا تسلیم استاد چرا میزنید حالا.شما درست میگید اگه تو net. پیداش کرده بودم از این روش استفاده نمی کردم.
به هر حال ممنون این خیلی خوبه که شما جوابتونو ،تو همون سالا پیدا کردید (دوران جوونی استادیتون)و سعی در به نتیجه رسوندن تاپیک های اینجا داشتید:چشمک:

حالا که فرصتش پیش اومده اجازه بدید یه دست مریزاد و خدا قوتی رو نثارتون کنم تا اینجا کارتون عالی بوده.

به امید موفقیت های روزافزون...:لبخندساده: