能力值:
( LV2,RANK:10 )
2 楼
你要发错误的提示才行.
能力值:
( LV2,RANK:10 )
3 楼
http://msdn.microsoft.com/en-us/library/windows/desktop/ms684839(v=vs.85).aspx
dwSize
The size of the structure, in bytes. Before calling the Process32First function, set this member to sizeof(PROCESSENTRY32). If you do not initialize dwSize, Process32First fails.
能力值:
( LV9,RANK:780 )
4 楼
可能是缺乏头文件 ,我的头文件:
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
; I N C L U D E F I L E S
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
include windows.inc
include kernel32.inc
include user32.inc
include advapi32.inc
includelib kernel32.lib
includelib user32.lib
includelib advapi32.lib
我随便写了下:
LOCAL @hSnapShot,@stProcess
invoke Process32First,@hSnapShot,addr @stProcess
编译通过
能力值:
( LV2,RANK:10 )
5 楼
错误提示就是 提示没有定义!!!!
能力值:
( LV2,RANK:10 )
6 楼
C:\radasm\Masm\Projects\Test01\Test01.asm(60) : error A2006: undefined symbol : Process32First
C:\radasm\Masm\Projects\Test01\Test01.asm(66) : error A2006: undefined symbol : Process32Next
能力值:
( LV3,RANK:25 )
7 楼
set masm=E:\masm32
set include=%masm%\include
set lib=%masm%\lib
set Path=%SystemRoot%\system32;%SystemRoot%;%masm%\bin
能力值:
( LV9,RANK:780 )
8 楼
不是设置的问题,如果会直接提示找不到头文件
能力值:
( LV2,RANK:10 )
9 楼
能力值:
( LV2,RANK:10 )
10 楼
是啊!!- - 不明真相 代码看得眼睛酸了~!就是找不出 头大 ~!! 竟然提示未定义 纳闷
能力值:
( LV9,RANK:780 )
11 楼
应该是环境的问题, Process32First是kernel32.dll导出的,你的头文件里面已经包含
建议重新下载版本 RadASM汉化增强版 安装完毕就可以写代码了,集成MASM和KMD驱动库,百度一下第一个就是
能力值:
( LV2,RANK:10 )
12 楼
我也编译了一下,用masm32V11的include头文件和lib库编译提示未定义函数,查看include中的kernel.inc头文件,
查找到这段代码:
“Process32FirstW PROTO STDCALL :DWORD,:DWORD
IFDEF __UNICODE__
Process32First equ <Process32FirstW>
ENDIF
Process32NextW PROTO STDCALL :DWORD,:DWORD
IFDEF __UNICODE__
Process32Next equ <Process32NextW>
ENDIF”
也就是需要定义__UNICODE__才行,然后我在源文件中(include语句之前)定义:
__UNICODE__ equ 1
再进行编译,就不报错了,但是,运行没结果(乱码或者不显示)!郁闷
于是找了masmplus中的kernel32.inc和kernel32.lib进行替换和编译,不用定义__UNICODE__也不会报“未定义”的错误,而且结果运行正确。
我也郁闷:难道新版的masm32V11不支持非UNICODE版本的Process32First和Process32Next函数??请大神指点下
能力值:
( LV13,RANK:240 )
13 楼
有A系列和W系列。直接指明一下是A还是W试试??
能力值:
( LV2,RANK:10 )
14 楼
我在masm32V11中直接指明了W,编译出来显示的结果是乱码。。
在kernel32.inc中只查找到:
“Process32FirstW PROTO STDCALL :DWORD,:DWORD
IFDEF __UNICODE__
Process32First equ <Process32FirstW>
ENDIF
Process32NextW PROTO STDCALL :DWORD,:DWORD
IFDEF __UNICODE__
Process32Next equ <Process32NextW>
ENDIF”
根本没有“Process32FirstA”。。
在masmV10 kernel32.inc中是这样的:
Process32First PROTO :DWORD,:DWORD
Process32FirstW PROTO :DWORD,:DWORD
Process32Next PROTO :DWORD,:DWORD
Process32NextW PROTO :DWORD,:DWORD
能力值:
( LV2,RANK:10 )
15 楼
IFDEF __UNICODE__
Process32First equ <Process32FirstW>
ELSE
Process32First equ <Process32FirstA>
ENDIF
然后用inc2l生成个kernel32.lib
我也遇到这个问题,但是我只是用了Process32FirstW就成功了,没有出现乱码
能力值:
( LV2,RANK:10 )
16 楼
记得新版我也遇到过这个问题 ,我那时直接把老版本的kernel32.inc复制过来了。
还有就是Process32First没有A版本,就像老版本的那样你直接添加一个就行了。
lib的话你考个windowsdk里面的就行了。
貌似module32那些也有这个问题,估计是当时忘给加了吧。唉,很久没用masm了。。
能力值:
( LV3,RANK:30 )
17 楼
唉,郁闷,我昨晚也遇到这个问题,最开始以为自己代码写错了。后来发现是kernel32.inc头文件里没有Process32First和Process32Next这两个函数的声明,kernel32.lib这个导入库里也没有Process32First和Process32Next这两个函数的地址信息。我的解决方法是去下载masm32v10r,然后重新配置一下它的路径,因为罗云彬老师的书里也是用的这个版本。还有就是没有Process32FirstA和Process32NextA这两个函数。只有Process32First、Process32FirstW、Process32Next和Process32NextW这四个函数。
能力值:
( LV2,RANK:10 )
18 楼
我也同样遇到这类问题,检查后发现在kernel32.inc中没有process32first,process32next的定义,
添加定义
Process32First PROTO STDCALL :DWORD,:DWORD
Process32Next PROTO STDCALL :DWORD,:DWORD
编译通过....
能力值:
( LV2,RANK:10 )
19 楼
楼上的大哥,你在哪里添加的定义,kernel32.lib不用做改动吗?
能力值:
( LV2,RANK:10 )
20 楼
估计问题不在这里,前面还有一个A版本的API宏,如果你没有定义它会自动找到A版本的API来调用,可能是被别的地方干扰了,新建一个干净的工程,写点简单的代码测试一下
能力值:
( LV4,RANK:50 )
21 楼
masm32v11 这个版本的 Process32First 的确编译不过
error A2006: undefined symbol : Process32First
masm32v10 的可行确编译通过。
烦死了,还是用老版的吧
能力值:
( LV8,RANK:120 )
22 楼
可以试试自己定义函数原型。
能力值:
( LV2,RANK:10 )
23 楼
学习一下!