; WTSEnumProcesses(模式) ; 模式0:PID 列表(逗号分隔,又名 MatchList) ; 模式1:PID 列表以及进程名称(PID TAB PROCESS,换行分隔) ; 模式2:进程列表(换行分隔) ; A_LastError将是进程总数(如果函数失败,则为-1) msgbox % WTSEnumProcesses() ; https://www.autohotkey.com/boards/viewtopic.php?f=6&t=4365 WTSEnumProcesses( Mode := 1 ) { ; By SKAN, http://goo.gl/6Zwnwu, CD:24/Aug/2014 | MD:25/Aug/2014 Local tPtr := 0, pPtr := 0, nTTL := 0, LIST := "" If not DllCall( "Wtsapi32\WTSEnumerateProcesses", "Ptr",0, "Int",0, "Int",1, "PtrP",pPtr, "PtrP",nTTL ) Return "", DllCall( "SetLastError", "Int",-1 ) tPtr := pPtr Loop % ( nTTL ) LIST .= ( Mode < 2 ? NumGet( tPtr + 4, "UInt" ) : "" ) ; PID . ( Mode = 1 ? A_Tab : "" ) . ( Mode > 0 ? StrGet( NumGet( tPtr + 8 ) ) "`n" : "," ) ; Process name , tPtr += ( A_PtrSize = 4 ? 16 : 24 ) ; sizeof( WTS_PROCESS_INFO ) StringTrimRight, LIST, LIST, 1 DllCall( "Wtsapi32\WTSFreeMemory", "Ptr",pPtr ) Return LIST, DllCall( "SetLastError", "UInt",nTTL ) }
声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。
评论(0)