0
Q
符号设备杀死进程
A
回答
0
拍摄快照,应该工作正常,但你必须使用一个标志,以避免内存限制抛出一个异常:
[Flags]
private enum SnapshotFlags : uint
{
HeapList = 0x00000001,
Process = 0x00000002,
Thread = 0x00000004,
Module = 0x00000008,
Module32 = 0x00000010,
Inherit = 0x80000000,
All = 0x0000001F,
NoHeaps = 0x40000000
}
然后在正常调用CreateToolHelp32Snapshot函数,你可以得到一个进程列表:
public static Dictionary<UInt32, process> getProcessNameList()
{
int iCnt = 0;
//List<processnames> name_list = new List<processnames>();
Dictionary<UInt32, process> _pList = new Dictionary<uint, process>();
uint procID = 0;
IntPtr pHandle = CreateToolhelp32Snapshot(SnapshotFlags.Process | SnapshotFlags.NoHeaps, procID);
if ((Int32)pHandle == INVALID_HANDLE_VALUE)
throw new Exception("CreateToolhelp32Snapshot error: " + Marshal.GetLastWin32Error().ToString());
if ((int)pHandle != INVALID_HANDLE_VALUE)
{
PROCESSENTRY32 pEntry = new PROCESSENTRY32();
pEntry.dwSize = (uint)Marshal.SizeOf(pEntry);
if (Process32First(pHandle, ref pEntry) == 1)
{
do
{
//name_list.Add(new processnames(pEntry.th32ProcessID, pEntry.szExeFile));
_pList[pEntry.th32ProcessID] = new process(pEntry.th32ProcessID, pEntry.szExeFile, new List<thread>());
iCnt++;
} while (Process32Next(pHandle, ref pEntry) == 1);
}
else
System.Diagnostics.Debug.WriteLine("Process32First error: " + Marshal.GetLastWin32Error().ToString());
CloseToolhelp32Snapshot(pHandle);
}
return _pList;
}
上面的代码是我的远程ProcessorUsage test application的一部分。
尽管如此,正常的Windows移动应用程序将终止自己,如果以前的实例已经运行。当您在CSharp或CPP中创建并运行SmartDevice项目(目标是“Windows Mobile ...”)时,这也是默认设置。 如果您的目标是基于标准Windows CE的SDK,则不会生成自动代码,以防止应用程序的启动代码中出现多个实例。
让我们知道,如果你还需要帮助。
相关问题
- 1. 杀死进程杀死其他进程
- 2. 杀死进程
- 3. 杀死进程
- 4. 杀死不会杀死进程
- 5. 从桌面应用程序中杀死WinCE设备进程
- 6. 杀死mysqld进程
- 7. SIGKILL杀死进程
- 8. VB.NET - 杀死进程
- 9. 杀死进程导致设备或资源忙:'/ dev/ttyUSB0'?
- 10. windows批量杀死进程
- 11. 无法杀死Postgres进程
- 12. 快速杀死进程
- 13. 杀死系统进程
- 14. Ruby:杀死Chrome进程
- 15. 杀死进程事件
- 16. UnobservedTaskException不杀死进程
- 17. 用python杀死进程
- 18. Autohotkey无法杀死进程
- 19. 杀死一个mpi进程
- 20. 如何杀死nohup进程?
- 21. 无法杀死ipython进程
- 22. 杀死Linux进程刚跑
- 23. 杀死某些MSTSC进程
- 24. 杀死进程Excel C#
- 25. 按名称杀死进程?
- 26. Vbscript中的杀死进程
- 27. 而不杀死Python进程
- 28. 西芹杀死进程
- 29. 杀死进程列表
- 30. 杀死产生进程的进程
谢谢你。 NoHeap标志正是我所需要的。附注:尽管在执行process.start时大部分时间只会运行一个实例。我发现,如果你正确调用你的呼叫,你可以启动一个程序的多个实例。 – GH23 2013-04-23 19:08:20
是的,自WM5/CE5以来,noHeap标志是必不可少的。时序不应该启用运行具有多个实例的应用程序。如果应用程序已经在运行,并且切换到之前的实例并自行关闭,应用程序应该在开始时进行检查。 – josef 2013-04-24 04:19:06
然后我不知道它是如何发生的,但不知怎的,我的一个应用程序的多个实例运行。大多数情况下,我只看到一个实例在运行,但偶尔我会看到两个或三个实例。无论如何,再次感谢它的魅力。 – GH23 2013-04-24 13:08:50