【已解决】如何获取进程程序的命令行参数?
本帖最后由 chishingchan 于 2021-2-21 09:12 编辑有些进程程序在后台一闪而过,使用 procexp.exe 也未能及时提取到命令行参数信息!
所以,参考了帮助文件编写了一段代码,但是好像达不到想要的效果!(代码在最后)
求助!求助!求助!
1、在桌面上建立记事本的快捷方式(带参数:abc.txt)
2、双击桌面上的记事本快捷方式,运行 procexp.exe 打开属性
#RequireAdmin
#include <WinAPIProc.au3>
#include <WinAPIHObj.au3>
Local $sProcess = "notepad.exe"
Do
;存在进程则退出循环
Until ProcessExists($sProcess)
Local $aAdjust, $aList = 0, $sPCL
Local $hToken = _WinAPI_OpenProcessToken(BitOR($TOKEN_ADJUST_PRIVILEGES, $TOKEN_QUERY))
_WinAPI_AdjustTokenPrivileges($hToken, $SE_DEBUG_NAME, $SE_PRIVILEGE_ENABLED, $aAdjust)
If Not (@error Or @extended) Then
$aList = ProcessList()
For $i = 1 To $aList
If $aList[$i] = $sProcess Then
$sPCL = _WinAPI_GetProcessCommandLine($aList[$i])
MsgBox(0, $aList[$i], $sPCL)
ClipPut($sPCL)
EndIf
Next
EndIf
_WinAPI_AdjustTokenPrivileges($hToken, $aAdjust, 0, $aAdjust)
_WinAPI_CloseHandle($hToken)
已找到解决办法:编译成64位的 exe 文件再运行即可!
windows自带任务管理器即可查看,点击“查看”-“选择列”-选中“映像路径名称”,“命令行”即可。。 帮助里的例子也没有列出 记事本 的 abc.txt 参数!
上面的代码执行后随便打开一个txt文件,会立即弹出文件路径提示。 afan 发表于 2021-2-20 14:27
上面的代码执行后随便打开一个txt文件,会立即弹出文件路径提示。
这个不要紧,当新建这个 abc.txt 文件后再试就不会再询问路径了。
a 大,帮帮忙,谢谢!
祝:新年快乐、身体健康、心想事成! chishingchan 发表于 2021-2-20 17:13
这个不要紧,当新建这个 abc.txt 文件后再试就不会再询问路径了。
a 大,帮帮忙,谢谢!
祝:新年快乐 ...
新年好~~
我的意思是我这测试正常,弹出了路径参数 本帖最后由 chishingchan 于 2021-2-20 22:54 编辑
afan 发表于 2021-2-20 19:08
新年好~~
我的意思是我这测试正常,弹出了路径参数
我的系统:Win7x64
软件版本:3.3.14.5
请问你的运行环境如何?
chishingchan 发表于 2021-2-20 22:48
我的系统:Win7x64
软件版本:3.3.14.5
请问你的运行环境如何?
Win7 x86
3.3.14.2 这次糟了!这可是 AutoIt3 的问题了!32位 XP 也可以获取到,64位的 Win7/8/10 咋办?!
已找到解决办法:编译成64位的 exe 文件再运行即可! haijie1223 发表于 2021-2-21 09:38
windows自带任务管理器即可查看,点击“查看”-“选择列”-选中“映像路径名称”,“命令行”即可。。
当进程一闪而过就查看不了,编程的话可以捕捉短暂进程 chishingchan 发表于 2021-2-21 10:26
当进程一闪而过就查看不了,编程的话可以捕捉短暂进程
用ProcessMonitor。也可以自己写个进程拦截,当然这个可能稍微有点难度。 本帖最后由 chishingchan 于 2021-2-21 11:15 编辑
haijie1223 发表于 2021-2-21 11:08
用ProcessMonitor。也可以自己写个进程拦截,当然这个可能稍微有点难度。
改进了一下,还是个“半成品”!主程序退了,脚本还驻留,还需要检查!
我的理念:代码难看不要紧,能完成事情就好。#RequireAdmin
#include <WinAPIProc.au3>
#include <WinAPIHObj.au3>
Local $sMain = "SpleeterGui.exe"
Local $sProcess = "ffmpeg.exe"
Global $sReturn
Do
;存在主程序则退出此循环
;功能即是:等待主程序运行
Until ProcessExists($sMain)
While ProcessExists($sMain)
;主程序运行后则循环以下动作
Do
;存在进程则退出循环
Until ProcessExists($sProcess)
_DU()
WEnd
Func _DU()
Local $aAdjust, $aList = 0, $sPCL
Local $hToken = _WinAPI_OpenProcessToken(BitOR($TOKEN_ADJUST_PRIVILEGES, $TOKEN_QUERY))
_WinAPI_AdjustTokenPrivileges($hToken, $SE_DEBUG_NAME, $SE_PRIVILEGE_ENABLED, $aAdjust)
If Not (@error Or @extended) Then
$aList = ProcessList()
For $i = 1 To $aList
If $aList[$i] = $sProcess Then
$sPCL = _WinAPI_GetProcessCommandLine($aList[$i])
$sReturn &= $sPCL & @CRLF
ClipPut($sReturn)
EndIf
Next
EndIf
_WinAPI_AdjustTokenPrivileges($hToken, $aAdjust, 0, $aAdjust)
_WinAPI_CloseHandle($hToken)
; Return $sReturn
EndFunc
成果:
----四声道混合------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-i J:\KwDownload\song\FileName.mp3 -f f32le -ar 44100 -ss 0:00:00.000000 -t 0:10:00.000000 pipe:
-f f32le -ac 2 -ar 44100 -i pipe: -b:a 128k -ar 44100 -strict -2 D:\Users\Administrator\Desktop\FileName/bass.wav -y
-f f32le -ac 2 -ar 44100 -i pipe: -b:a 128k -ar 44100 -strict -2 D:\Users\Administrator\Desktop\FileName/drums.wav -y
-f f32le -ac 2 -ar 44100 -i pipe: -b:a 128k -ar 44100 -strict -2 D:\Users\Administrator\Desktop\FileName/other.wav -y
-f f32le -ac 2 -ar 44100 -i pipe: -b:a 128k -ar 44100 -strict -2 D:\Users\Administrator\Desktop\FileName/piano.wav -y
-f f32le -ac 2 -ar 44100 -i pipe: -b:a 128k -ar 44100 -strict -2 D:\Users\Administrator\Desktop\FileName/vocals.wav -y
-i "D:\Users\Administrator\Desktop\FileName\bass.wav"
-i "D:\Users\Administrator\Desktop\FileName\drums.wav"
-i "D:\Users\Administrator\Desktop\FileName\piano.wav"
-i "D:\Users\Administrator\Desktop\FileName\other.wav"
-filter_complex "volume=4;volume=4;volume=4;volume=4;amix=inputs=4:duration =longest" "D:\Users\Administrator\Desktop\FileName_recombined.wav"
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
----五声道混合------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-i J:\KwDownload\song\FileName.mp3 -f f32le -ar 44100 -ss 0:00:00.000000 -t 0:10:00.000000 pipe:
-f f32le -ac 2 -ar 44100 -i pipe: -b:a 128k -ar 44100 -strict -2 D:\Users\Administrator\Desktop\FileName/bass.wav -y
-f f32le -ac 2 -ar 44100 -i pipe: -b:a 128k -ar 44100 -strict -2 D:\Users\Administrator\Desktop\FileName/drums.wav -y
-f f32le -ac 2 -ar 44100 -i pipe: -b:a 128k -ar 44100 -strict -2 D:\Users\Administrator\Desktop\FileName/other.wav -y
-f f32le -ac 2 -ar 44100 -i pipe: -b:a 128k -ar 44100 -strict -2 D:\Users\Administrator\Desktop\FileName/piano.wav -y
-f f32le -ac 2 -ar 44100 -i pipe: -b:a 128k -ar 44100 -strict -2 D:\Users\Administrator\Desktop\FileName/vocals.wav -y
-i "D:\Users\Administrator\Desktop\FileName\vocals.wav"
-i "D:\Users\Administrator\Desktop\FileName\bass.wav"
-i "D:\Users\Administrator\Desktop\FileName\drums.wav"
-i "D:\Users\Administrator\Desktop\FileName\piano.wav"
-i "D:\Users\Administrator\Desktop\FileName\other.wav"
-filter_complex "volume=5;volume=5;volume=5;volume=5;volume=5;amix=inputs=5:duration =longest" "D:\Users\Administrator\Desktop\FileName_recombined.wav"
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
chishingchan 发表于 2021-2-21 11:14
改进了一下,还是个“半成品”!主程序退了,脚本还驻留,还需要检查!
我的理念:代码难看不要紧,能完 ...
能完成你的要求就好。但其实,你这种写法并不是真正意义上的监控。
页:
[1]