我想做一个关闭魔兽war3进程的程序,但是用一下代码关闭不了,谁知道为什么啊?
Process[] ps = Process.GetProcesses();
foreach (Process item in ps)
{
if (item.ProcessName=="war3")
{
item.Kill();
}
}
搜索了下,也有人问过,但是他直接就是已经解决了。
Process[] ps = Process.GetProcesses();
foreach (Process item in ps)
{
if (item.ProcessName=="war3")
{
item.Kill();
}
}
搜索了下,也有人问过,但是他直接就是已经解决了。
后面有没有exe呢
可能问题出在你的进程名上 看看war3写的对不对 注意这里是区分大小写的
我知道你用的是小写
但是
item.ProcessName这条取出来的进程名
可能是大写
也可能是大小写混合
http://topic.csdn.net/u/20120131/19/d5e0995f-4f38-4373-be19-3e3b0f1ce4a2.html
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Windows.Forms;namespace WindowsFormsApplication1
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
} [Flags]
public enum ProcessAccessFlags : uint
{
All = 0x001F0FFF,
Terminate = 0x00000001,
CreateThread = 0x00000002,
VMOperation = 0x00000008,
VMRead = 0x00000010,
VMWrite = 0x00000020,
DupHandle = 0x00000040,
SetInformation = 0x00000200,
QueryInformation = 0x00000400,
Synchronize = 0x00100000
} [DllImport("kernel32.dll")]
static extern IntPtr OpenProcess(ProcessAccessFlags dwDesiredAccess, [MarshalAs(UnmanagedType.Bool)] bool bInheritHandle, int dwProcessId); [DllImport("kernel32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool TerminateProcess(IntPtr hProcess, uint uExitCode); [DllImport("kernel32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool GetExitCodeProcess(IntPtr hProcess, out uint lpExitCode); private void KillProcess(string processName)
{
IntPtr killer; try
{
Process[] ps = Process.GetProcesses(); foreach (Process p in ps)
{
if (p.ProcessName.Equals(processName, StringComparison.CurrentCultureIgnoreCase))
{
killer = OpenProcess(ProcessAccessFlags.All, false, p.Id);
uint exitcode = 0;
bool ret = GetExitCodeProcess(killer, out exitcode);
ret = TerminateProcess(killer, exitcode);
if (ret)
{
MessageBox.Show(string.Format("成功关闭程序{0}。", processName));
}
else
{
exitcode = 0;
MessageBox.Show(string.Format("杀死进程{0}时失败,原因不明。", processName));
}
}
}
}
catch (Exception Exc)
{
MessageBox.Show(string.Format("杀死进程{0}时失败,原因是{1}。", processName, Exc.Message));
}
}
}
}调用:KillProcess("war3");