Файл ярлыка не всегда запускается при нажатии клавиши быстрого доступа

в моей компании у нас есть небольшие рабочие станции ~13 дюймов с сенсорным экраном.


Операционная система:Microsoft Windows Embedded Standard 6.1.7601 Service Pack 1 Build 7601


Рабочие станции имеют 5 кнопок на их которые можно составить карту для любой комбинации клавиш. (пример ctrl+alt+shift+[any key on the keyboard])

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

Итак у меня:


- создан пакетный файл, который при запуске проверяет, запущены ли программы, если нет, то запускает их;


- создан ярлык пакетного файла (в %appdata%MicrosoftWindowsStart MenuPrograms как предложил здесь);


- добавлена клавиша быстрого доступа (ctrl + alt + s);


- назначена одна из кнопок на рабочей станции привязке клавиш.

это казалось хорошей идеей в теории, но и в практика привязки клавиш не работает должным образом.

после устранения неполадок, я понял, что одна из программ является причиной проблемы.


Назовем программы A и B. Когда B или рабочий стол находится впереди, комбинация клавиш работает правильно и запускает пакетный файл. A работает в полноэкранном режиме. Поэтому при нажатии комбинации клавиш while A впереди не работает.


Так что у меня назначена alt + tab ключ сочетание для другой кнопки, но это, где проблема ногами.

если я уже нажал ctrl + alt + S сочетания клавиш в то время как A был впереди, он не будет работать после этого, даже после того, как я переключился на B или на рабочем столе.

что делает его более интересным, так это то, что если я создаю другую комбинацию клавиш на другом файле ярлыка, скажем ctrl + alt + D и запустить его после ctrl + alt + S перестал работать, он фиксирует его и ctrl + alt + S начинает работать снова пока B или рабочий стол имеет фокус.

пробовал этой, не работал.


Red этой форум. Никакое решение.

я ищу решение / обходной путь / другой метод для решения этой проблемы.

я не хочу устанавливать какие-либо сторонние программы. Однако при необходимости я могу изменить параметры и реестр.

изменить:

пакетный файл

echo off
tasklist /FI "IMAGENAME eq progB.exe" 2>NUL | find /I /N "progB.exe">NUL
if "%ERRORLEVEL%"=="1" (
cd C:<progB path>
start /MAX progB.exe

)

tasklist /FI "IMAGENAME eq progA.exe" 2>NUL | find /I /N "progA.exe">NUL
if "%ERRORLEVEL%"=="1" C:<progA path>

exit
12
задан Divin3
27.02.2023 2:35 Количество просмотров материала 3345
Распечатать страницу

2 ответа

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

к сожалению, на этих медленных компьютерах под управлением Windows Embedded Standard 6, tasklist и его вариант слишком медленные, поэтому мы должны найти другой механизм проверки, работают ли программы. К счастью, кажется, что проверка существования файла все еще очень быстрый.

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

prog 2 >> \path\to\lockfile

параметр "2 >> file" означает, что файл ошибок prog перенаправляется в локфайл. Этот файл, также называемый stderr в Linux, обычно никогда не записывается в по большинству программ. Во время работы программы файл заблокирован и не может быть удален, так как он используется. Если программа остановлена, файл может существовать или не существовать, но его можно удалить.

здесь пример скрипта, который проверяет, существует ли файл и можно удаленный. Я добавил Эхо-команды, полезные при отладке такого скрипта.

@echo off
if exist \path\to\lockfile (
  echo lockfile exists
  del \path\to\lockfile
  if exist \path\to\lockfile (
    echo lockfile is locked - program is running
  ) else (
    echo lockfile was deleted - program is not running
    **launch program here**
  )
) else (
  echo lockfile doesn't exist - program is not running
  **launch program here**
)

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

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

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

pause 2 >> \path\to\lockfile

ссылки :

1
отвечен harrymc 2023-02-28 10:23

ваш подход к этой проблеме уникален, и звучит близко, но он убегает от вас. Думая по тому же пути, по которому вы шли до сих пор, вот предложение.

если безопасно, который вам придется тщательно определить, Вы можете выбрать, чтобы использовать клавишу привязки к Alt + F4 приложений. Было бы еще лучше, если бы вы могли сначала сделать комбинацию Alt+Tab, а затем Alt+F4. Теоретически, вы сможете закрыть оба приложения и вернуться на рабочий стол, нажав эту клавишу привязать максимум три раза.

это оставит вас в положении, когда вы знаете точное состояние обоих приложений-не работает. С помощью отредактированной версии привязки можно запускать приложения (больше не нужно проверять, запущены ли они).

пример (как приложения):

  • приложение A есть окно фокус
  • [нажать bind] B фокус и закрывается, фокус A
  • [нажать bind] desktop фокус, и ничего не закрывает
  • [нажать bind] A фокус и закрывается

Пример 2 (B был закрыт):

  • desktop фокус окна
  • [нажать bind] A (например) имеет фокус и закрывается, фокус desktop

кроме того, вы может иметь одну клавишу, чтобы сделать Alt + Tab и другую клавишу, чтобы сделать Alt+F4. Пользователям придется нажать клавишу 1, затем клавишу 2, в общей сложности 3 нажатия для каждой кнопки.

это до вас, чтобы определить, если Alt + F4ing ваши приложения является безопасным. Можно подумать, что это никогда не будет безопасным, но это абсолютно не safe, котор нужно сделать если ваши применения обрабатывают данные активно, то, отростчатые данные основанные на план-графике, имеют активное соединение базы данных, ect. если приложения выполняют свои функции только тогда, когда пользователь вмешивается с запросом, и Alt+F4ing каждое приложение не оставляет никаких незапятнанных временных данных или блокировок, не может быть никаких последствий.

как всегда, существует несколько подходов к вашей проблеме. Это конкретное решение придерживается вашего первоначального мыслительного процесса и общей темы.

0
отвечен root 2023-02-28 12:40

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх