1

Мне было трудно совмещать мои скрипты, которые работают отдельно ...

в основном у меня есть пакетный скрипт со следующим:

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

это откроет мое видео в медиаплеере. Все идет нормально. Затем я прочитал на SO и SE о том, как открыть окно на заданной позиции через cmd/bat, и узнал об ответах на AutoHotkey (документация: здесь). поэтому я скачал 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"

и теперь мне нужно было бы объединить все вышеперечисленное в один пакет, который, если я запустил его, откроет мой видеофайл в моем медиаплеере и в правой части экрана. может ли кто-нибудь помочь?

2 ответа2

0

Можете ли вы использовать параметры для передачи аргумента командной строки в скрипт?

Я не тестировал этот код ниже, но основная идея заключалась в том, чтобы использовать переменные командной строки как в файле .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

Я нашел способ (на официальном розни AHK chanel):

#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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .