Malcev, мне то это понятно, в новом потоке без изменяющих его команд ErrorLevel всегда будет 0, а значит !0=1
(а true это альтернативная запись для 1).
Просто becauseim не понимает, что он пишет/копирует, и похоже не собирается понимать. Отсюда множество скучных однотипных вопросов на форуме а-ля "Стол заказов".
Если в условном выражении If стоит функция, то для принятия решения используется возвращаемое ф-ей значение.
Если в конце функции поставить просто return, или вообще его не ставить, то она вернет пустое значение "".
Пустое значение "" интерпретируется аналогично 0, соответсвенно раз условие не выполнено, то и горячая клавиш не устанавливается. Чтобы условие выполнилось, надо возвращать что-то отличное от 0 и "". Return "Вроде того".