c# 关闭其他程序窗口/进程
方法1
ProcName 需要关闭的进程名称
private bool closeProc(string ProcName)
{
bool result = false;
System.Collections.ArrayList procList = new System.Collections.ArrayList();
string tempName = "";
int begpos;
int endpos;
foreach (System.Diagnostics.Process thisProc in System.Diagnostics.Process.GetProcesses())
{
tempName = thisProc.ToString();
begpos = tempName.IndexOf("(") + 1;
endpos = tempName.IndexOf(")");
tempName = tempName.Substring(begpos, endpos - begpos);
procList.Add(tempName);
if (tempName == ProcName)
{
if (!thisProc.CloseMainWindow())
thisProc.Kill(); //当发送关闭窗口命令无效时强行结束进程
result = true;
}
}
return result;
}
上面程序里定义了一个ArrayList,当不知道所要关闭的进程的具体名称的时候,可以将ArrayList 中的值放到一个listbox或其他的控件里面用来选择进程进行结束。
方法2
在类体中的最上方声明:
[DllImport("user32.dll", CharSet=CharSet.Auto)]
public static extern int SendMessage(int hWnd, int msg, int wParam, int lparam);
//SendMessage(hwnd1,WM_CLOSE,0,0);
//hwnd1是你用findwindow函数返回的句柄值!
//wm_close定义在winuser.h里面!
//0x0010是 WM_CLOSE的值。
SendMessage(hwnd1,0x0010,0,0);
ProcName 需要关闭的进程名称
private bool closeProc(string ProcName)
{
bool result = false;
System.Collections.ArrayList procList = new System.Collections.ArrayList();
string tempName = "";
int begpos;
int endpos;
foreach (System.Diagnostics.Process thisProc in System.Diagnostics.Process.GetProcesses())
{
tempName = thisProc.ToString();
begpos = tempName.IndexOf("(") + 1;
endpos = tempName.IndexOf(")");
tempName = tempName.Substring(begpos, endpos - begpos);
procList.Add(tempName);
if (tempName == ProcName)
{
if (!thisProc.CloseMainWindow())
thisProc.Kill(); //当发送关闭窗口命令无效时强行结束进程
result = true;
}
}
return result;
}
上面程序里定义了一个ArrayList,当不知道所要关闭的进程的具体名称的时候,可以将ArrayList 中的值放到一个listbox或其他的控件里面用来选择进程进行结束。
方法2
在类体中的最上方声明:
[DllImport("user32.dll", CharSet=CharSet.Auto)]
public static extern int SendMessage(int hWnd, int msg, int wParam, int lparam);
//SendMessage(hwnd1,WM_CLOSE,0,0);
//hwnd1是你用findwindow函数返回的句柄值!
//wm_close定义在winuser.h里面!
//0x0010是 WM_CLOSE的值。
SendMessage(hwnd1,0x0010,0,0);