web-dev-qa-db-ja.com

cmd / batchからautohotkeyを使用して、設定された位置のウィンドウでファイルを開く方法は?

別々に機能するスクリプトを組み合わせるのに苦労しています...

基本的に、次のようなバッチスクリプトがあります。

START "" "mpc-hc64.exe" "video.avi"

これにより、私のビデオがメディアプレーヤーで開きます。ここまでは順調ですね。それから私はSOとSEで、cmd/batを介して設定された位置でウィンドウを開く方法について読んで、 AutoHotkey (ドキュメント: here )。そこで、実行可能ファイルを含むZipをダウンロードし、AHKスクリプトを作成しました。

Run mpc-hc64.exe
WinWait, Media Player Classic Home Cinema
WinActivate
WinMove A,, 960, 0, A_ScreenWidth-960, A_ScreenHeight-29

このcmd/batを実行すると、画面の右側にメディアプレーヤーが開きます。

AutoHotkeyU32.exe "script 1.ahk"

そして今、私は上記のすべてを1つのバッチに結合する必要があります。それを実行すると、メディアプレーヤーと画面の右側にビデオファイルが開きます。 enyoneは助けることができますか?

1
gamer0

私は方法を見つけました(公式の不和AHKシャネルで):

#Persistent

mpc := "C:\T4\mpc-hc 1.7.16 x64\mpc-hc64.exe"
avi := "C:\T1\scripts\avi.avi"

Run, % """" mpc """ """ avi """", , , pid

WinWaitActive, % "ahk_pid " pid
WinGet, mpc_hwnd, ID, % "ahk_pid " pid

SetTimer, CheckWindowPosition, 100

CheckWindowPosition:
    if(!WinExist("ahk_pid " pid)) {
        ExitApp
        }
    WinGetPos, x, y, width, height, % "ahk_pid " pid
    WinGet, hwnd, ID, % "ahk_pid " pid
    if(DllCall("GetParent", "Ptr", hwnd, "UInt", 3) = 0 && DllCall("GetAncestor", "Ptr", hwnd, "UInt", 3) = mpc_hwnd) {
            if(x != 960 || y != 0 || width != A_ScreenWidth - 960 || height != A_ScreenHeight - 29) {
            WinMove, % "ahk_pid " pid, , 960, 0, % A_ScreenWidth - 960, % A_ScreenHeight - 29
            }
        }
return
0
gamer0

パラメータを使用してコマンドライン引数をスクリプトに渡すことはできますか?

以下ではこのコードをテストしませんでしたが、基本的な概念は、.batファイルと.ahkファイルの両方でコマンドライン変数を使用して、ユーザーがコマンドラインで入力した内容をキャプチャし、それをパススルーして実行することです。

コマンドライン

C:\>launch video.avi

launch.bat

@echo off
AutoHotkeyU32.exe "script 1.ahk" %1

スクリプト1.ahk

Run mpc-hc64.exe %1%
WinWait, Media Player Classic Home Cinema
WinActivate
WinMove A,, 960, 0, A_ScreenWidth-960, A_ScreenHeight-29
0
JJohnston2