C#如何结束任务管理器中的应用程序?
C#如何通过任务管理器中的结束任务,而不是结束进程,来实现关闭应用程序的目的。。。因为我结束进程后程序就死在那里卡住了,但结束任务的时候程序就完好地退出了,没有出现异常。。。
所以我想通过C# 结束任务 来关闭应用程序!!! --------------------编程问答-------------------- 多占沙发 --------------------编程问答-------------------- @_@ ... --------------------编程问答-------------------- Process.kill --------------------编程问答-------------------- Environment.Exit(-1); --------------------编程问答-------------------- Application.Exit() --------------------编程问答-------------------- 关注 --------------------编程问答-------------------- Application.Exit() --------------------编程问答-------------------- Environment.Exit(-1); --------------------编程问答-------------------- 是自己的进程,还是别的进程?没有讲清楚。应该是其它进程吧? --------------------编程问答-------------------- 结束别的进程。。
比如我现在运行了迅雷程序,我想写一个小程序来关闭迅雷这个程序,
主要是通过任务管理器的应用程序栏来结束“迅雷”任务,而不是通过进程栏来结束“Thunder.exe”进程 --------------------编程问答-------------------- 结束别的进程。。
比如我现在运行了迅雷程序,我想写一个小程序来关闭迅雷这个程序,
主要是通过任务管理器的应用程序栏来结束“迅雷”任务,而不是通过进程栏来结束“Thunder.exe”进程 --------------------编程问答-------------------- 试试向迅雷主窗口SendMessage WM_CLOSE. 或 PostMessage,WM_QUIT. 你又不想用TerminateProcess..微软是不推荐用PostMessage WM_QUIT.不过。可以试下。 --------------------编程问答-------------------- 不错看看 --------------------编程问答-------------------- 使用Process类的close方法关闭winrar.exe进程,任务管理器中仍然存在该进程,且占有资源.多次使用Process启动winrar进程,仍后close,会发现任务管理器出现很多的winrar.exe进程,不知有什么办法解决?跟LZ的遇到问题一样 --------------------编程问答-------------------- Process.kill
那你可以做一个任务管理器,然后显示所有的任务,然后选择一个,用kill杀掉 --------------------编程问答--------------------
private void button1_Click(object sender, EventArgs e)--------------------编程问答-------------------- System.Diagnostics.Process[] myPs;
{
System.Diagnostics.Process[] ps = System.Diagnostics.Process.GetProcesses() as ;
foreach (System.Diagnostics.Process p in ps)
{
if (p.ProcessName == "taskmgr")
{
p.Kill();
return;
}
}
}
myPs = System.Diagnostics.Process.GetProcesses();
foreach (System.Diagnostics.Process p in myPs)
{
if (p.ProcessName == "EXCEL")
{
try
{
p.Kill();
}
catch (Exception eKillProcess)
{
}
}
} --------------------编程问答-------------------- 楼主,我也碰到这种问题,想“结束任务”,现在又没解决这个问题哈,请赐教哈。 --------------------编程问答--------------------
方法太多了。发送消息比较斯文了,粗暴一点用TerminateProcess,呵呵 --------------------编程问答-------------------- 枚举窗体
myAl = new ArrayList();
Process[] ps = Process.GetProcesses();
foreach (Process p in ps)
{
if(p.MainWindowTitle!="")
{
listBox1.Items.Add(p.MainWindowTitle);
myAl.Add(p.Id);
}
}
关闭窗体
--------------------编程问答--------------------
int index=listBox1.SelectedIndex;
listBox1.Items.RemoveAt(index);
int count =0;
System.Collections.IEnumerator myEnumerator = myAl.GetEnumerator();
while ( myEnumerator.MoveNext() )
{
if ( count == index )
{
id = (int)myEnumerator.Current;
break;
}
count++;
Process p = Process.GetProcessById(id);
p.Kill();
myAl.RemoveAt(count);
}
private void button2_Click(object sender, EventArgs e)
{
System.Diagnostics.Process[] process = System.Diagnostics.Process.GetProcessesByName("名称");
foreach (System.Diagnostics.Process p in process)
{
p.Kill();
} --------------------编程问答--------------------
private void KillProcess(string processName)--------------------编程问答-------------------- private void frmFileDisposal_Closed(object sender, System.EventArgs e)
{
//获得进程对象,以用来操作
System.Diagnostics.Process myproc = new System.Diagnostics.Process();
//得到所有打开的进程
try
{
//获得需要杀死的进程名
foreach (Process thisproc in Process.GetProcessesByName(processName))
{
//立即杀死进程
thisproc.Kill();
}
}
catch (Exception Exc)
{
throw new Exception("", Exc);
}
}
{
System.Environment.Exit(System.Environment.ExitCode);
this.Dispose();
this.Close();
}
还有一种方法:
System.Threading.Thread.CurrentThread.Abort();
或者 Process.GetCurrentProcess().Kill()
或者 Application.ExitThread();
或者 Application.ExitThread()
--------------------编程问答-------------------- Mark --------------------编程问答--------------------
会不会是因为线程都在前台?
前台线程 (Foreground Threads): 前台线程可以阻止程序退出。除非所有前台线程都结束,否则 CLR不会关闭程序。
后台线程 (Background Threads) : 有时候也叫 Daemon Thread 。他被 CLR 认为是不重要的执行路径,可以在任何时候舍弃。因此当所有的前台线程结束,即使还有后台线程在执行, CLR 也会关闭程序。
使用 Thread 类启动一个线程默认就是前台线程 (Foreground Threads) ,但是可以通过给 IsBackground 赋值将线程转变为后台线程。
--------------------编程问答-------------------- 任务管理器中
如果在应用程序选项卡关闭程序,任务管理器会像程序发送WM_Close消息
如果在进程选项卡关闭则调用TerminateProcess函数 --------------------编程问答-------------------- 获取所有线程 然后判断线程名称 再用kill方法 --------------------编程问答-------------------- mark --------------------编程问答-------------------- 两者有什么区别? --------------------编程问答--------------------
举个例子:打开一个Explorer的窗口,“结束任务”只会关闭这个窗口,“结束进程”(Kill Explorer.exe ?)会导致Explorer.exe重启
我最近也被要求实现用“结束任务”来关闭一个资源管理器窗口的功能~求方法~~~ --------------------编程问答-------------------- 搞不定的时候,直接WIN32API...
补充:.NET技术 , C#