E文不算太好,简单看了看MSDN的Process Security and Access Rights,
怎么看都觉得应该理解为PROCESS_ALL_ACCESS包含PROCESS_TERMINATE了。
但是如果要TerminateProcess关闭进程,用OpenProcess获取进程句柄时如果参数是PROCESS_ALL_ACCESS是关闭不了的,而非要有PROCESS_TERMINATE。所以,希望明确一下PROCESS_ALL_ACCESS与PROCESS_TERMINATE都有没有包含关系,为什么出现以上情况。
怎么看都觉得应该理解为PROCESS_ALL_ACCESS包含PROCESS_TERMINATE了。
但是如果要TerminateProcess关闭进程,用OpenProcess获取进程句柄时如果参数是PROCESS_ALL_ACCESS是关闭不了的,而非要有PROCESS_TERMINATE。所以,希望明确一下PROCESS_ALL_ACCESS与PROCESS_TERMINATE都有没有包含关系,为什么出现以上情况。
解决方案 »
- 对话框中加入编辑框怎么显示多行文字?
- 对一个COM对象中的属性页,能否采用非模式窗口的方式建立并显示。
- 有没有杭州的EVC大师阿,我需要做一个矢量图形软件。
- 扩展dll想获得调用它的exe的句柄应该怎么取?谢!
- 请教WM_MOUSEMOVE消息的应用?
- 请问:
- 如何通过PostMessage传递两个变量,类型均为CString
- 请问怎么将组件中的SYSTEMTIME中的DATE和TIME传到VB中去?
- 如何将文本直接转化为语音(WIN32环境)
- 为什么不能在CEditView 派生出来的窗口上使用TextOut 函数! 是我做错了,还是有什么 其他的原因!
- ShowWindows函数的问题
- 子窗口怎么不响应 WM_LBUTTONDOWN 消息了?
#define GROUP_SECURITY_INFORMATION (0X00000002L)
#define DACL_SECURITY_INFORMATION (0X00000004L)
#define SACL_SECURITY_INFORMATION (0X00000008L)
#define PROCESS_TERMINATE (0x0001)
#define PROCESS_CREATE_THREAD (0x0002)
#define PROCESS_SET_SESSIONID (0x0004)
#define PROCESS_VM_OPERATION (0x0008)
#define PROCESS_VM_READ (0x0010)
#define PROCESS_VM_WRITE (0x0020)
#define PROCESS_DUP_HANDLE (0x0040)
#define PROCESS_CREATE_PROCESS (0x0080)
#define PROCESS_SET_QUOTA (0x0100)
#define PROCESS_SET_INFORMATION (0x0200)
#define PROCESS_QUERY_INFORMATION (0x0400)
#define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | \
0xFFF)
“TerminateProcess关闭进程,用OpenProcess获取进程句柄时如果参数是PROCESS_ALL_ACCESS是关闭不了的,而非要有PROCESS_TERMINATE。
”
// then we give up immediately.立刻放弃
hProc = OpenProcess(SYNCHRONIZE|PROCESS_TERMINATE, FALSE,dwPID);
PROCESS_ALL_ACCESS存取,不能终止。
PROCESS_TERMINATE Enables using the process handle in the TerminateProcess function to terminate the process.
{
HANDLE hProcess=OpenProcess(PROCESS_ALL_ACCESS,0,316);
TerminateProcess(hProcess,0);
return 0;
}
成功结束进程
在delphiXE2中却是:$1FFFFF
这是为什么呢?因为delphi7的代码用XE2编绎后得不到正确结果,在OD中调试发现的。