【剑仙教程】路径类。用进程PID,获取进程的运行路径
.
这函数怎么用呢?
以前做游戏辅助,要复制一些东西到游戏目录,
需要弄个"浏览框0",让用户点击浏览框,去选择游戏目录.
.
有了 用进程PID,获取进程的运行路径,
直接通过进程名,先获取进程PID,再获取游戏目录
这样使脚本更加智能化,真正实现:小前端,大后台. 把简单的前端交给用户. 把复杂的后台交给自己.
var hThread
功能 执行()
var PROCESS_ALL_ACCESS = #1F0FFF //进程对象的所有可能的访问权限。
var MAX_PATH = 260
//var PROCESS_QUERY_INFORMATION = 1024
//var PROCESS_VM_READ = 16
var PID数组, PID //notepad
PID数组 = 进程信息("notepad.exe", 0) //默认0,为进程名获取进程PID
traceprint(" PID数组: " & PID数组)
PID = cint(PID数组[0])
if(PID == 0)
traceprint("请打开目标进程.")
cmd("Notepad", 真)
sleep(1000)
PID数组 = 进程信息("notepad.exe", 0)
PID = cint(PID数组[0])
end
var hProcess, size, path
hProcess = OpenProcess0(PROCESS_ALL_ACCESS, false, PID)
traceprint(" hProcess: " & hProcess)
size = GetModuleFileNameExW(hProcess, null, path, MAX_PATH)
traceprint("size: " & size)
traceprint("path: " & path)
CloseHandle(hProcess)
结束
//
功能 GetWindowThreadProcessId(hWnd, &lpdwProcessId)
return dllcall("user32.dll", "long", "GetWindowThreadProcessId", "long", hWnd, "plong", lpdwProcessId)
//如果函数成功,则返回值是创建窗口的线程的标识符。
//如果窗口句柄无效,则返回值为零。 要获得更多的错误信息,请调用 GetLastError。
结束
功能 OpenProcess0(dwDesiredAccess, bInheritHandle, dwProcessId)
return dllcall("kernel32.dll", "long", "OpenProcess", "long", dwDesiredAccess, "long", bInheritHandle, "long", dwProcessId)
结束
功能 CloseHandle(hObject)
return dllcall("kernel32.dll", "long", "CloseHandle", "long", hObject)
结束
功能 GetModuleFileNameExW(hProcess, hModule, &lpFilename, nSize)
return dllcall("psapi.dll", "long", "GetModuleFileNameExW", "long", hProcess, "long", hModule, "pwchar *", lpFilename, "long", nSize)
结束
功能 启动_热键()
var bool = 线程获取状态(hThread)
if(bool == 0)
hThread = 线程开启("执行", "")
end
结束
功能 终止_热键()
线程关闭(hThread)
结束
网页链接 原创作品。转载请标明作者,标明出处.
.
这函数怎么用呢?
以前做游戏辅助,要复制一些东西到游戏目录,
需要弄个"浏览框0",让用户点击浏览框,去选择游戏目录.
.
有了 用进程PID,获取进程的运行路径,
直接通过进程名,先获取进程PID,再获取游戏目录
这样使脚本更加智能化,真正实现:小前端,大后台. 把简单的前端交给用户. 把复杂的后台交给自己.
var hThread
功能 执行()
var PROCESS_ALL_ACCESS = #1F0FFF //进程对象的所有可能的访问权限。
var MAX_PATH = 260
//var PROCESS_QUERY_INFORMATION = 1024
//var PROCESS_VM_READ = 16
var PID数组, PID //notepad
PID数组 = 进程信息("notepad.exe", 0) //默认0,为进程名获取进程PID
traceprint(" PID数组: " & PID数组)
PID = cint(PID数组[0])
if(PID == 0)
traceprint("请打开目标进程.")
cmd("Notepad", 真)
sleep(1000)
PID数组 = 进程信息("notepad.exe", 0)
PID = cint(PID数组[0])
end
var hProcess, size, path
hProcess = OpenProcess0(PROCESS_ALL_ACCESS, false, PID)
traceprint(" hProcess: " & hProcess)
size = GetModuleFileNameExW(hProcess, null, path, MAX_PATH)
traceprint("size: " & size)
traceprint("path: " & path)
CloseHandle(hProcess)
结束
//
功能 GetWindowThreadProcessId(hWnd, &lpdwProcessId)
return dllcall("user32.dll", "long", "GetWindowThreadProcessId", "long", hWnd, "plong", lpdwProcessId)
//如果函数成功,则返回值是创建窗口的线程的标识符。
//如果窗口句柄无效,则返回值为零。 要获得更多的错误信息,请调用 GetLastError。
结束
功能 OpenProcess0(dwDesiredAccess, bInheritHandle, dwProcessId)
return dllcall("kernel32.dll", "long", "OpenProcess", "long", dwDesiredAccess, "long", bInheritHandle, "long", dwProcessId)
结束
功能 CloseHandle(hObject)
return dllcall("kernel32.dll", "long", "CloseHandle", "long", hObject)
结束
功能 GetModuleFileNameExW(hProcess, hModule, &lpFilename, nSize)
return dllcall("psapi.dll", "long", "GetModuleFileNameExW", "long", hProcess, "long", hModule, "pwchar *", lpFilename, "long", nSize)
结束
功能 启动_热键()
var bool = 线程获取状态(hThread)
if(bool == 0)
hThread = 线程开启("执行", "")
end
结束
功能 终止_热键()
线程关闭(hThread)
结束
网页链接 原创作品。转载请标明作者,标明出处.