Je travaille sur un programme et n'arrive pas à imprimer l'ID de processus du processus. J'ai réussi à récupérer le nom du processus mais lorsque j'imprime l'ID de processus. Ça se montre tout de même. Voici mon code.MASM32 Comment imprimer l'ID de processus à l'aide de PROCESSENTRY32
include \masm32\include\masm32rt.inc
.data
cFmt db "%d",0
cfr db 1024 dup(?)
.code
ProcessSearch proc
LOCAL sHndl :DWORD
push 0
push TH32CS_SNAPPROCESS
call CreateToolhelp32Snapshot
mov sHndl, eax
mov pData.dwSize, sizeof pData
push offset pData
push sHndl
call Process32First
push offset pData
push sHndl
call Process32Next
process:
push offset pData.th32ProcessID
push offset cFmt
push offset cfr
call wsprintf
push offset cfr
call StdOut
push offset pData
push sHndl
call Process32Next
cmp eax, 0
jg process
push sHndl
call CloseHandle
ret
ProcessSearch endp
start:
call ProcessSearch
call ExitProcess
end start
Je n'arrive pas à comprendre pourquoi je ne peux pas imprimer l'ID de processus.
Même si nous le voulions, nous ne pourrions pas déboguer ce code pour vous parce qu'il ne représente pas un [mcve]. Que sont 'cFmt' et' cfr', par exemple? On ne sait pas non plus ce que l'on entend par: * "Cela se manifeste tout de même." * Avez-vous essayé d'utiliser un débogueur pour parcourir le code et voir où il se fourvoie? Visual Studio inclut un excellent débogueur. Ou il y a dans WinDbg inclus gratuitement avec le SDK. Vous ne savez pas si MASM32 est livré avec un débogueur; c'est probablement le cas, vous ne pouvez pas faire de développement d'assemblage sans un! –
Puisque vous utilisez masm, pourquoi n'utilisez-vous pas 'invoke' au lieu de' push/call'? Cela simplifierait beaucoup le code. – Michael
J'ai mis à jour le code avec les valeurs de repsective de cFmt et cfr. Je suis bien conscient de la façon dont invoke peut simplifier mon code. Cependant, j'avais besoin de pratiquer ce genre de style de codage pour les bases. – Pentagon