找回密码
 加入
搜索
查看: 3274|回复: 14

[AU3基础] 【已解决】如何获取进程程序的命令行参数?

[复制链接]
发表于 2021-2-20 10:37:42 | 显示全部楼层 |阅读模式
本帖最后由 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[0][0]
                If $aList[$i][0] = $sProcess Then
                        $sPCL = _WinAPI_GetProcessCommandLine($aList[$i][1])
                        MsgBox(0, $aList[$i][0], $sPCL)
                        ClipPut($sPCL)
                EndIf
    Next
EndIf

_WinAPI_AdjustTokenPrivileges($hToken, $aAdjust, 0, $aAdjust)
_WinAPI_CloseHandle($hToken)
已找到解决办法:编译成64位的 exe 文件再运行即可!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2021-2-20 10:52:05 | 显示全部楼层
帮助里的例子也没有列出 记事本 的 abc.txt 参数!


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2021-2-20 14:27:30 | 显示全部楼层
上面的代码执行后随便打开一个txt文件,会立即弹出文件路径提示。
 楼主| 发表于 2021-2-20 17:13:11 | 显示全部楼层
afan 发表于 2021-2-20 14:27
上面的代码执行后随便打开一个txt文件,会立即弹出文件路径提示。

这个不要紧,当新建这个 abc.txt 文件后再试就不会再询问路径了。
a 大,帮帮忙,谢谢!
祝:新年快乐、身体健康、心想事成!
发表于 2021-2-20 19:08:50 | 显示全部楼层
chishingchan 发表于 2021-2-20 17:13
这个不要紧,当新建这个 abc.txt 文件后再试就不会再询问路径了。
a 大,帮帮忙,谢谢!
祝:新年快乐 ...

新年好~~
我的意思是我这测试正常,弹出了路径参数
 楼主| 发表于 2021-2-20 22:48:13 | 显示全部楼层
本帖最后由 chishingchan 于 2021-2-20 22:54 编辑
afan 发表于 2021-2-20 19:08
新年好~~
我的意思是我这测试正常,弹出了路径参数

我的系统:Win7x64
软件版本:3.3.14.5
请问你的运行环境如何?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2021-2-20 23:10:29 | 显示全部楼层
chishingchan 发表于 2021-2-20 22:48
我的系统:Win7x64
软件版本:3.3.14.5
请问你的运行环境如何?

Win7 x86
3.3.14.2

评分

参与人数 1金钱 +50 收起 理由
chishingchan + 50 谢谢测试!

查看全部评分

 楼主| 发表于 2021-2-21 09:00:25 | 显示全部楼层
这次糟了!这可是 AutoIt3 的问题了!32位 XP 也可以获取到,64位的 Win7/8/10 咋办?!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2021-2-21 09:11:41 | 显示全部楼层
已找到解决办法:编译成64位的 exe 文件再运行即可!
发表于 2021-2-21 09:38:29 | 显示全部楼层
windows自带任务管理器即可查看,点击“查看”-“选择列”-选中“映像路径名称”,“命令行”即可。。
 楼主| 发表于 2021-2-21 10:26:50 | 显示全部楼层
haijie1223 发表于 2021-2-21 09:38
windows自带任务管理器即可查看,点击“查看”-“选择列”-选中“映像路径名称”,“命令行”即可。。

当进程一闪而过就查看不了,编程的话可以捕捉短暂进程
发表于 2021-2-21 11:08:05 | 显示全部楼层
chishingchan 发表于 2021-2-21 10:26
当进程一闪而过就查看不了,编程的话可以捕捉短暂进程

用ProcessMonitor。也可以自己写个进程拦截,当然这个可能稍微有点难度。
 楼主| 发表于 2021-2-21 11:14:33 | 显示全部楼层
本帖最后由 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[0][0]
                        If $aList[$i][0] = $sProcess Then
                                $sPCL = _WinAPI_GetProcessCommandLine($aList[$i][1])
                                $sReturn &= $sPCL & @CRLF
                                ClipPut($sReturn)
                        EndIf
                Next
        EndIf

        _WinAPI_AdjustTokenPrivileges($hToken, $aAdjust, 0, $aAdjust)
        _WinAPI_CloseHandle($hToken)
;        Return $sReturn
EndFunc
 楼主| 发表于 2021-2-21 11:18:44 | 显示全部楼层
成果:
----四声道混合------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-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 "[0]volume=4[97];[1]volume=4[98];[2]volume=4[99];[3]volume=4[100];[97][98][99][100]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 "[0]volume=5[97];[1]volume=5[98];[2]volume=5[99];[3]volume=5[100];[4]volume=5[101];[97][98][99][100][101]amix=inputs=5:duration =longest" "D:\Users\Administrator\Desktop\FileName_recombined.wav"
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
发表于 2021-2-21 17:27:17 | 显示全部楼层
chishingchan 发表于 2021-2-21 11:14
改进了一下,还是个“半成品”!主程序退了,脚本还驻留,还需要检查!
我的理念:代码难看不要紧,能完 ...

能完成你的要求就好。但其实,你这种写法并不是真正意义上的监控。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-3-29 13:18 , Processed in 0.082727 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表