问题描述
我正在尝试在C ++中实践内联ASM :)也许已经过时了,但是很有趣,知道cpu如何执行代码。
因此,我在这里试图做的是遍历进程并获得所需的句柄:)我正在使用tlhelp32
HANDLE RetHandle = nullptr,snap;
int SizeOfPE = sizeof(PROCESSENTRY32),pid; PROCESSENTRY32 pe;
int PA = PROCESS_ALL_ACCESS;
const char* Pname = "explorer.exe";
__asm
{
mov eax,pe
mov ebx,this
mov ecx,[ebx]pe.dwSize
mov ecx,SizeOfPE
mov[ebx]pe.dwSize,ecx
mov eax,PA
mov ebx,0
call Createtoolhelp32Snapshot
mov eax,snap
label1:
mov eax,snap
mov ebx,[pe]
call Process32First
cmp eax,1
jne exitLabel
Process32NextLoop:
mov eax,[pe]
call Process32Next
cmp eax,1
jne Process32NextLoop
mov edx,pe
mov ecx,[edx].szExeFile
cmp ecx,Pname
je ExitLoop
jne Process32NextLoop
ExitLoop:
mov eax,[ebx].th32ProcessID
mov pid,eax
ExitLabel:
ret
}
显然,它也在th32ProcessID
中引发错误,但是,它只是常规的int
。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)