如题
目前我能用Module32First Module32Next
列出应用程序的进程模块 比如 qq的
但是一些系统的进程模块不能显示 比如smss.exe 等等
目前我能用Module32First Module32Next
列出应用程序的进程模块 比如 qq的
但是一些系统的进程模块不能显示 比如smss.exe 等等
解决方案 »
- YUY2与RGB
- 打印位图
- 推荐一款开源的生成汉字字模点阵的工具,没有开源的话请大侠推荐一个很好用的工具
- 在XP下,VC6中使用TrackMouseEvent() API,为什么提示说没有定义?(当然我是包含了windows.h,连Winuser.h也包含了)
- 在vfw视频捕获过程中如何截取单帧图象
- 哪为高人有MP3编码 解码算法的资料??
- 急急急!100分求教:怎样用API向串口发送一个16进制数?
- list中的list的结构怎么样析构?马上结贴。(能通过)
- CTreeCtrl 的困惑
- 动态连接库间属性页问题
- 写一个程序,希望从键盘输入,判断是否退出,可是调不出来,大家帮忙看看哪里的问题
- vc里面有没有画三角形的函数,就象画矩形是renctangle,画圆是Arc一样
char szBuf[MAX_PATH * 100] = { 0 };PBYTE pb = NULL;
MEMORY_BASIC_INFORMATION mbi;
while(VirtualQuery(pb, &mbi, sizeof(mbi)) == sizeof(mbi))
{
int nLen;
char szModName[MAX_PATH]; if(mbi.State == MEM_FREE)
mbi.AllocationBase = mbi.BaseAddress; if((mbi.AllocationBase == hinstDll) ||
(mbi.AllocationBase != mbi.BaseAddress) ||
(mbi.AllocationBase == NULL))
{ // Do not add the module name to the list
// if any of the following is true:
// 1. This region contains this DLL.
// 2. This block is NOT the beginning of a region.
// 3. The address is NULL.
nLen = 0;
}
else
{
nLen = GetModuleFileNameA((HINSTANCE) mbi.AllocationBase,
szModName, chDIMOF(szModName));
} if(nLen > 0)
{
wsprintfA(strchr(szBuf, 0), "\n%08X-%s",
mbi.AllocationBase, szModName);
} pb += mbi.RegionSize;
}
chMB(&szBuf[1]);
列举模块前先调用一下:EnableDebugPrivilege(TRUE)
代码如下..
BOOL EnableDebugPrivilege(BOOL bEnable)
{
// 附给本进程特权,以便访问系统进程
BOOL bOk = FALSE;
HANDLE hToken;
// 打开一个进程的访问令牌
if(::OpenProcessToken(::GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken))
{
// 取得特权名称为“SetDebugPrivilege”的LUID
LUID uID;
::LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &uID); // 调整特权级别
TOKEN_PRIVILEGES tp;
tp.PrivilegeCount = 1;
tp.Privileges[0].Luid = uID;
tp.Privileges[0].Attributes = bEnable ? SE_PRIVILEGE_ENABLED : 0;
::AdjustTokenPrivileges(hToken, FALSE, &tp, sizeof(tp), NULL, NULL);
bOk = (::GetLastError() == ERROR_SUCCESS); // 关闭访问令牌句柄
::CloseHandle(hToken);
}
return bOk;
}