PDA

View Full Version : سوال: maximum کردن برنامه ها



Mohsen229266
جمعه 19 شهریور 1389, 20:27 عصر
با سلام خدمت دوستان
من یک برنامه Autorun نوشتم که از اجرای مکرر برنامه هم جلوگیری میکنه از این کد هم استفاده کردم


[STAThread]
staticvoid Main()
{
string[] parts = Assembly.GetExecutingAssembly().Location.Split("\\".ToCharArray());
string appName = parts[parts.Length - 1];
string query = "select name from CIM_Process where name = '" + appName + "'";
ManagementObjectSearcher searcher = newManagementObjectSearcher(query);
int runcount = 0;
foreach (ManagementObject item in searcher.Get())
{
runcount++;
if (runcount > 1) break;
}
if (runcount <= 1)
{
Application.Run(newForm1());
}
else
{
Application.Exit();
}
}

وقتی برنامه در حال اجراست و minimum هست و کاربر روی فایل اجرایی کلیک کنه برنامه دوباره اجرا نمیشه حالا میخوام برنامه که مینیموم هست رو Maximum کنم و به کاربر نمایش بدم این لینک (http://www.barnamenevis.org/forum/showthread.php?t=106032&highlight=Maximum)رو هم دیدم ولی مربوط به سوال من نمیشه چون برنامه رو دوباره باز میکنه

Mohsen229266
شنبه 20 شهریور 1389, 14:45 عصر
از دوستان کسی نیومد داخل سوال منو ببینه
من فکر میکنم تابع Api یی وجود داشته باشه که این کارو انجام بده باز هم از همگی ممنون

Saman_12
شنبه 20 شهریور 1389, 16:12 عصر
سلام.
فکر کنم شما می خواید یک پنجره دیگه به جزء پنجره برنامه خودتون رو Min , Max کنید :


[DllImport("user32.dll", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int ShowWindow(int hwnd, int nCmdShow);

const int SW_HIDE = 0; // پنجره مخفي
const int SW_MAXIMIZE = 3; //پنجره حداكثر
const int SW_MINIMIZE = 6; // پنجره حداقل
const int SW_RESTORE = 9; //پنجره معمولي(نه حداكثر و نه حداقل)
const int SW_SHOW = 5; //نمايش پنجره
const int SW_SHOWMAXIMIZED = 3; // نمايش حداكثر
const int SW_SHOWMINIMIZED = 2; //نمايش حداقل
const int SW_SHOWMINNOACTIVE = 7; //نمايش حداقل بدون فعال شدن
const int SW_SHOWNA = 8; //نمایش به صورت جاري ولي بدون فعال شدن
const int SW_SHOWNOACTIVATE = 4; //نمايش پنجره به ابعاد و مكان تازه بدون فعال شدن
const int SW_SHOWNORMAL = 1; //نمايش و فعال شدن پنجره

Mohsen229266
شنبه 20 شهریور 1389, 22:16 عصر
ممنون از پاسختون بله منظورم همینه می شه لطفا یک مثال هم بزنید
چطوری از استفاده کنم نام برنامه ای که میخوام اجرا بشه رو کجا باید بنویسم؟؟

Saman_12
شنبه 20 شهریور 1389, 22:47 عصر
شما اول باید هندل پنجره برنامه مورد نظر رو به دست بیارید.(چون شما گفتید نام رو کجا بنویسم پس من هم مثالی میزنم که با استفاده از نام برنامه باشه.(توی این مثال برنامه باید از قبل ران باشه که با کمی تغییر میشه هم برنامه رو اجرا کرد و هم Max)) .

اول این دوتا Using رو اظافه کنید :


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


بعد هم توی رویداد دلخواه این جوری بنویسید :


Process Proce =Process.GetProcessesByName("Process Name").First();
ShowWindow(Proce.MainWindowHandle.ToInt32(), SW_MAXIMIZE);

Process Name همون نام پروسه هست و SW_MAXIMIZE هم همون حالت هست که شما میتونید از حالت هایی که توی پست 3 گذاشتم استفاده کنید.