能力值:
( LV12,RANK:300 )
|
-
-
2 楼
晕倒了,这是写汇编呢,你以为是写C啊,.if哪能直接比较内存中的字符串是否相等的……
MASM中的.if宏的功能是有限的,其实质就是cmp加上条件跳转,所以一条cmp语句没有办法支持的操作数,它也不支持,比如不能够双方都是内存数据。更不可能直接比较字符串内容了,你这一个高级语言里字符串之间的==算符,实际上变成汇编代码要多少你想过没……
汇编毕竟不是C这样的高级语言,.if宏虽然有,也不可能让你像使用高级语言的if语句那么使。
|
能力值:
( LV9,RANK:160 )
|
-
-
3 楼
这是字符串比较啊,晕倒了……
|
能力值:
( LV3,RANK:20 )
|
-
-
4 楼
lstrcmpi
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
谢谢各位兄弟指教,尤其是LS的兄弟,我把程序做了修改,但编译后运行错误!
GetID proc
local @stProcess:PROCESSENTRY32
invoke RtlZeroMemory,addr @stProcess,sizeof @stProcess
mov @stProcess.dwSize,sizeof @stProcess
invoke CreateToolhelp32Snapshot,TH32CS_SNAPPROCESS,0
mov hSnapShot,eax
invoke Process32First,hSnapShot,addr @stProcess
.while eax
invoke lstrcmpi,@stProcess.szExeFile,szIe
.break .if eax == 0
invoke Process32Next,hSnapShot,addr @stProcess
.endw
push @stProcess.th32ProcessID
pop pid
invoke CloseHandle,hSnapShot
GetID endp
我很郁闷!
|
能力值:
( LV3,RANK:20 )
|
-
-
6 楼
invoke lstrcmpi,@stProcess.szExeFile,szIe
lstrcmpi是传入地址的,你的是否是地址。
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
我查过了这个函数,lstrcmpi不是用来比较2个字符串的吗?
http://baike.baidu.com/view/1906887.htm?fr=ala0
|
能力值:
( LV3,RANK:20 )
|
-
-
8 楼
是的。但是他是指向字符串,其实就是指针,你把首地址传给他就行了。
你也可以看他在汇编里的参数是 lp开头的。这个说明是地址。你传地址。
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
谢谢zerostudy 兄弟的大力帮助,问题已经解决了!
|
|
|