枚举模块时出了点问题,自动运行了!
为枚举窗口而调用API函数CreateProcess,NULL,addr @szLPath,NULL,NULL,FALSE,0,NULL,NULL,addr @stSI,addr @stPI时,@szLPath作为命令行参数我又不得不通过枚举模块来获取指定PID的路径
LOCAL @dwProcessID:dword
LOCAL @hProcess:dword
LOCAL @hModule
LOCAL @cbNeedid
LOCAL @szLPath[1024]:byte
LOCAL @szSPath[256]:byte
;------获取命令行参数[指定进程ID的路径]----------------------
invoke SendMessage,hWinListPID,LB_GETCURSEL,0,0
inc eax
.if eax
dec eax
invoke SendMessage,hWinListPID,LB_GETITEMDATA,eax,0
mov @dwProcessID,eax
invoke OpenProcess,PROCESS_ALL_ACCESS,FALSE,@dwProcessID ;打开指定ID进程取得进程句柄
.if eax
mov @hProcess,eax
invoke EnumProcessModules,@hProcess,addr @hModule,sizeof @hModule,addr @cbNeedid ;枚举进程模块
invoke GetModuleFileNameEx,@hProcess,@hModule,addr @szLPath,sizeof @szLPath ;获取长路径
; invoke GetShortPathName,addr @szLPath,addr @szSPath,sizeof @szSPath ;获取短路径
.endif
invoke CloseHandle,@hProcess
invoke CloseHandle,@hModule
.endif
在这@szSPatht和@szLPath应该没多大区别吧,都可以得到路径名,不过会通过路径自动运行这个进程[就像是在CMD里输入了@szSPatht再敲回车],程序就无法再运行下去,在网上也查了,不管是VB还是VC都差不多,能给看看是什么原因吗?或者说有另一种不用获得指定PID路径的方式?