以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 Dot NET,C#,ASP,VB 』  (http://bbs.xml.org.cn/list.asp?boardid=43)
----  c# 关闭其他程序窗口/进程  (http://bbs.xml.org.cn/dispbbs.asp?boardid=43&rootid=&id=83994)


--  作者:卷积内核
--  发布时间:3/24/2010 5:27:00 PM

--  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);


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
46.875ms