Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 列出所有正在运行的应用程序MASM32程序集_C++_Assembly_Masm_Msdn_Masm32 - Fatal编程技术网

C++ 列出所有正在运行的应用程序MASM32程序集

C++ 列出所有正在运行的应用程序MASM32程序集,c++,assembly,masm,msdn,masm32,C++,Assembly,Masm,Msdn,Masm32,你好!我一直在尝试列出所有当前运行的应用程序,并使用masm将其写入文本文件。我是汇编新手,但使用MSDN作为参考。到目前为止,我知道如何使用CreateFile、WriteFile、ReadFile等,但我不知道Process32First是如何工作的 我正在尝试将此链接中的代码转换为MASM,(),但是运气不好,我无法获得任何输出 我将非常感谢任何帮助!非常感谢。祝你今天愉快 include \masm32\include\masm32rt.inc .data pe32 PROCE

你好!我一直在尝试列出所有当前运行的应用程序,并使用masm将其写入文本文件。我是汇编新手,但使用MSDN作为参考。到目前为止,我知道如何使用CreateFile、WriteFile、ReadFile等,但我不知道Process32First是如何工作的

我正在尝试将此链接中的代码转换为MASM,(),但是运气不好,我无法获得任何输出

我将非常感谢任何帮助!非常感谢。祝你今天愉快

include \masm32\include\masm32rt.inc

.data
    pe32 PROCESSENTRY32 <>
    errorCreateTool db "ERROR: CreateToolhelp32Snapshot", 0
    errorPF db "ERROR: Process32First", 0
    errorOP db "ERROR: OpenProcess", 0

    yesMsg db "proceed", 0

.data?
    dwPriorityClass dd ?
    hProcessSnap HANDLE ?
    hProcess HANDLE ?

.code

_start:

    push 0
    push TH32CS_SNAPPROCESS
    call CreateToolhelp32Snapshot

    mov hProcessSnap, eax

    cmp hProcessSnap, INVALID_HANDLE_VALUE
    je _errorCT 

    mov pe32.dwSize, sizeof PROCESSENTRY32

    push offset pe32
    push hProcessSnap
    call Process32FirstW

    cmp eax, ERROR_NO_MORE_FILES
    je _errorPF

    push offset pe32.szExeFile
    call StdOut

    mov dwPriorityClass, 0

    push offset pe32.th32ProcessID
    push FALSE
    push PROCESS_ALL_ACCESS
    call OpenProcess

    cmp eax, 00H                        ;if I comment this out, the code will proceed 
    je _errorOpen

    push offset pe32.th32ProcessID      ;but this doesn't have any value and doesn't print out
    call StdOut
    push offset yesMsg                  ;while this prints out on the console
    call StdOut

    jmp _done

_errorOpen:
    push offset errorOP
    call StdOut
    jmp _done

_errorPF:
    push offset errorPF
    call StdOut
    jmp _done

_errorCT:
    push offset errorCreateTool
    call StdOut

_done:    
    push 0
    call ExitProcess

end _start
include\masm32\include\masm32rt.inc
.数据
pe32进程32
errorCreateTool数据库“错误:CreateToolhelp32Snapshot”,0
errorPF db“错误:Process32First”,0
errorOP db“错误:OpenProcess”,0
yesMsg db“继续”,0
.数据?
dwPriorityClass dd?
HPSNAP句柄?
进程句柄?
.代码
_开始:
推0
推送TH32CS\U SNAPPROCESS
调用CreateToolhelp32Snapshot
mov HProcessnap,eax
cmp hProcessSnap,无效的\u句柄\u值
我错了
mov pe32.dwSize,进程大小32
推偏pe32
推送hProcessSnap
调用Process32FirstW
cmp eax,错误\u没有\u更多\u文件
我错了
推送偏移量pe32.szexe文件
呼叫StdOut
mov dwPriorityClass,0
推送偏移量pe32.th32ProcessID
推错
推送进程\u所有\u访问
调用OpenProcess
cmp-eax,00H;如果我把这个注释掉,代码将继续
我开错了
推送偏移量pe32.th32ProcessID;但这没有任何价值,也不会打印出来
呼叫StdOut
推送偏移量;在控制台上打印时
呼叫StdOut
jmp_完成了
_错误打开:
推偏误差
呼叫StdOut
jmp_完成了
_errorPF:
推偏误差
呼叫StdOut
jmp_完成了
_错误代码:
推送偏移错误创建工具
呼叫StdOut
_完成:
推0
呼叫退出过程
结束/开始

我有使用该功能的经验。我所要做的就是按照您的建议更新我的kernel32.inc和kernel32p.inc。完成这些操作后,我在masm32文件夹中运行makelibs.bat,它就可以从那里开始工作。

我有过使用该函数的经验。我所要做的就是按照您的建议更新我的kernel32.inc和kernel32p.inc。完成这些操作后,我在masm32文件夹中运行makelibs.bat,它将从那里开始工作。

StdOut
打印以零结尾的字符串<代码>pe32。th32ProcessID不是字符串。(顺便说一句,你确定想要unicode版本的
Process32First
?)嗨,Michael!谢谢你的评论。我刚刚意识到我不需要获取th32ProcessID。我所需要的只是exe文件名,它现在正在工作。我所做的只是将kernel32.inc和kernel32p.inc中的Process32FirstW更改为Process32First,Process32NextW更改为Process32Next。谢谢你的提示!:)<代码>标准输出打印以零结尾的字符串<代码>pe32。th32ProcessID不是字符串。(顺便说一句,你确定想要unicode版本的
Process32First
?)嗨,Michael!谢谢你的评论。我刚刚意识到我不需要获取th32ProcessID。我所需要的只是exe文件名,它现在正在工作。我所做的只是将kernel32.inc和kernel32p.inc中的Process32FirstW更改为Process32First,Process32NextW更改为Process32Next。谢谢你的提示!:)对我也是这么做的。无论如何,谢谢你。:)别这样!如果你的文件有问题,没有人能帮你。我找不到一个MASM32版本,其中
Process32First
(ANSI版本-没有Process32FirstA)和
Process32Next
失败。报告的错误适用于Unicode。宁愿得到这个软件并安装它。是的!我也是这么做的。无论如何,谢谢你。:)别这样!如果你的文件有问题,没有人能帮你。我找不到一个MASM32版本,其中
Process32First
(ANSI版本-没有Process32FirstA)和
Process32Next
失败。报告的错误适用于Unicode。而是获取并安装它。