25 июня 25 июн. 3 217

Помогите разобраться с bat-файлом. Что не так?

Недавно проделывал, практически, тоже самое, но с другой игрой, и, естественно, с другим, но подобного типа, фиксом. Не обошлось и без помощи здесь: бал задан вопрос...

... Можно ли, программно с эмулировать нажатие горячей клавиши F1 (прописью команды)?

ВОПРОС ЗАКРЫТ.
Вопрос закрыт модератом.

Многих, наверное удивит: что это, вдруг - зачем? То моя извечная борьба, с проблемой кат-сцен в 21:9, в играх, на UltraWade мониторах (после того, как приобрёл, такой монитор)

Есть фикс для кат-сцен в 21:9, хоррора The Evil Within 2 (The Evil Within 2_3440x1440 v1.05), который исправно работает, но для этого:

Запускаем игру; сворачиваем; запускаем фикс; нажимаем F1 (только после этого, можно, снова открыть игру, и наконец-то увидеть в ней кат-сцены, в своих заветных 21:9 (на весь экран (без чёрных полос, по бокам)))

Вся идея состоит в том, что бы лишить фикс, в необходимости, всех этих действий (ну, т. е.: конечно, ни фикс лишить (куда ж тут, от этого денемся) - скорей себя избавить от лишних телодвижений, и сделать эти действия автоматическими (чтоб, всё это - одним кликом, с одного ярлыка)).

Ну, как программы запустить, одну за другой, с одного ярлыка... - тут, как бы, "плавали, знаем" (тут, кстати - в stopgame, помогли разобраться (когда возникла потребность запускать DS4Emulator, с The Last of Us (за что, участникам, огромное спасибо))) - тут, может быть, бат-файл, в помощь:

@echo off

start "" /min "(путь к exe фикса)"

start "" /wait "(путь к exe игры)"

taskkill /F /IM (exe фикса /T (чтоб закрыть всё)

А, вот можно ли что-то прописать, чтоб, с имитировалось нажатие F1 в фиксе?

P. S . Ну, и, разумеется, не откажусь, также, и от помощи - если кто может подсказать и другие варианты решения этого вопроса. Заранее, спасибо!

gavani76ТегиF1Имитация нажатия клавишБат-файлКат-сцены 21:9The Evil WithinПоддержи Стопгейм!Комментарии отключены

9 Комментариев

Сворачивать веткиAxelOsip334525 мая в 20:50

С батниками не особо работал, но вот что удалось найти:

существует утилита NirCmd и в ней есть команда sendkey, которая может имитировать нажатия клавиш. Пример кода, который открывает диспетчер задач:

@echo off
:: Нажатие сочетания клавиш ctrl+shift+esc (запуск диспетчера задач)
nircmd.exe sendkey ctrl down
nircmd.exe sendkey shift down
nircmd.exe sendkey esc down
:: Отпуск сочетания клавиш ctrl+shift+esc
nircmd.exe sendkey ctrl up
nircmd.exe sendkey shift up
nircmd.exe sendkey esc up

Но для начала необходимо скачать и запустить данную утилиту. Оставил ссылку на офф. сайт с документацией (кнопка скачивания находится в са-амом низу).

После запуска нажимаем кнопку «Copy to windows directory» (как я понял, добавляет прогу в реестр). И в моем случае потребовался перезапуск ПК. Запускаем батник — радуемся!

Для Вашего случая команда будет выглядить как-то так

nircmd.exe sendkey F1 press ...

Вопрос, к сожалению был закрыт, но посватанная там, утилита - nircmd (как и команды), дали свои положительные результаты (за что, большое спасибо! - AxelOsip3345 (всё практически получилось (имитация нажатия F1, с помощью nircmd работала).

Сейчас же с этой имитацией, что-то не так: при запуске, созданного bat-файла  - всё запускается, но F8, в фиксе - не активируется? Если, незадолго, сразу после окончания заданного времени, нажать F8, вручную - всё активируется.

На работоспособность nircmd проверен: для проверки, был создан отдельный bat-файл, с пропиской, команды, на запуск диспетчера задач - всё отлично работает - диспетчер задач, автоматом, после запуска этого bat-файла - запускается (также: пробовал эту команду, совместно, с пропиской впереди, старта  exe игры - тоже: игра стартует и диспетчер задач, запускается автоматом (а вот, если ещё и с припиской старта exe фикса - уже нет))). Из того понятно: что nircmd (и его прописанная команда - nircmd.exe sendkey F8 press), почему-то не работает, именно, после старта  exe фикса? Почему так может быть? Может в bat-файле: что-то ещё надо прописать? Или: какая то ошибка в прописном?

P. S. Все скрины: как прописан батник и окна которые всплывают (а также, с ручным нажатие F8 и пропиской, проверочного батника, на работоспособность nircmd) - ниже представлены!

в bat-файле пописано так
в bat-файле пописано так
На панели задач
На панели задач
Окна на экране
Окна на экране
Если в ручную нажать F8 (незадолго, сразу после окончания заданного времени - всё активируется)
Если в ручную нажать F8 (незадолго, сразу после окончания заданного времени - всё активируется)
Прописано: в отдельном bat-файле, на запуска  диспетчера задач (создан для проверки работоспособности nircmd - всё работает!)
Прописано: в отдельном bat-файле, на запуска  диспетчера задач (создан для проверки работоспособности nircmd - всё работает!)

Поддержи Стопгейм!
Комментарии отключены

Лучшие комментарии

Кажется, я ошибся? Это не после старта фикса тормозится дальше процесс. Это из-за команды задержки -  TIMEOUT /T 10 /NOBREAK (вероятно я не правильно это использую, в связке, с командами на старт игры и фикса (без этой команды, команды nircmd.exe работают (по крайней мере: точно, работает команда для вызова задач (но, мне нужна команда: не для вызова задач — а имитации нажатия клавиши F8 — «nircmd.exe sendkey F8 press» (которая тоже, скорей всего, без команды выше — «TIMEOUT /T 10 /NOBREAK» — срабатывает, но без задержки, она бесполезна, потому как имитация нажатия F8, происходит слишком рано — прежде чем фикс успевает прогрузится))))?

Походу нужно копать, в эту сторону (как правильно прописать команду для задержки nircmd.exe sendkey F8 press)? Где только именно копать, в этой стороне (моими «куринными мозгами»)?

в примере выше игра запускается с ключем /wait, а на скрине этого ключа уже нет. Ну и полюс порядок запуска отличается от примера. Может в этом дело?

в примере выше игра запускается с ключем /wait

Ты имеешь ввиду это

start "" /min "(путь к exe фикса)"

start "" /wait "(путь к exe игры)"

taskkill /F /IM (exe фикса /T (чтоб закрыть всё)

Не. То тогда был не удачно (ошибочно) приведённый пример (из другого батника (где фигурировал: не фикс а эмулятор, который, необходим был, при совместном запуске с игрой (и чтобы этот эмулятор, после закрытия игры не висел...

wait — встроенная команда консольной оболочки Bash. Ждёт завершения указанного процесса и возвращает статус его завершения.

… к старту игры был приписан это ключ, на который, и доложена была сработать, последняя команда -

taskkill /F /IM (taskkill /F /IM (exe фикса /T (чтоб закрыть всё)/T (чтоб закрыть всё)

… только там был, опять же — не exe фикса, а exe  эмулятора (в том случае — всё было, как нельзя, удачно, потому как: дошёл до этого не я сам, своими «куринными мозгами», а помог мне, опять же здесь же: в СГ, как я понял, очень компетентный в этой теме чел, под ником - pancor12  — ХВАЛА И УВАЖУХА ЕМУ! (вот он бы точно разобрался, в этой теме — но, к сожалению он не откликнулся)))))

А в данном случае (как и в случае с прошлым фиксом и игрой), такая пропись bat-файла была бы невозможна (т. е. — неминуема ошибочна). Хотя бы, только потому, что старт фикса (как этого, так и того (с той игрой)), ни как не может быть прописан первым, ибо фикс, обязательно должен быть запушен, при, уже, запущенной игре (именно так: вторым он и был прописан, в bat-файле, прошлой игры и фикса (и после команда nircmd.exe sendkey F1 press (в том случае надо было F1, не F8) — всё срабатывало (не додумано, как раз было дело с закрытием всего, после выхода из игры)))

В этом случае: тут даже, не до закрытия — не срабатывает команда nircmd.exe sendkey F8 press (не работаю, вообще, любые команда nircmd.exe — как выяснилось: именно после старта фикса (всё тормозится на нём: такой ощущение, что фикс, в батнике, не как не может стартануть, хотя, в реальности давно запушен)))

Читай также