Читать нажатие клавиш с помощью JScript - PullRequest
0 голосов
/ 28 марта 2011

Я пытаюсь сделать простой JScript с помощью Windows Script Host (вне всякого браузера, это было моим намерением) для чтения нажатий клавиш пользователей, но не могу найти способ сделать следующее:

function tap(e) {
    ...code...
}
document.onkeypress = tap;

Я не специалист по системному программированию Windows (но опытный программист), поэтому я не знаком с гаджетами и сервисами ActiveX и тому подобным.Разве WScript или WSShell не предоставляют способ открыть окно (вместо «документа»)?

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

Ответы [ 3 ]

0 голосов
/ 28 марта 2011

Windows Scripting Host не предоставляет никакого пользовательского интерфейса, ну, по крайней мере, не GUI.

Если вы используете CScript.exe, то можете использовать StdIn, StdOut и т. Д. См. Wscript.StdIn.Read метод .

Это большинство объектов, доступных дляWindows Scripting Host: основные объекты WSH , словарь и объекты FileSystem пригодятся: Словарь и объекты FileSystem

Но если вам нужен графический интерфейс, вы можете запуститьHTA-файл в MSHTA.exe и используйте HTML / CSS / JavaScript для обработки ваших потребностей пользовательского интерфейса и при этом по-прежнему используйте объекты WSH.

Избыток?Ну, перечислите, что вы хотите от вашего интерфейса.Теперь вам нужно предоставить механизм доступа ко всем этим функциям.И ваш пример кода показывает, что вы хотите сделать это в стиле HTML-DOM-через-JavaScript.Итак, вам понадобится парсер HTML и поддержка DOM.Похоже, вы хотите получить доступ к большей части того, что предоставляет браузер на этом этапе.

0 голосов
/ 28 марта 2011

Я не думаю, что Windows Script Host предоставляет API для перехватов клавиатуры. Наиболее надежным способом сделать это может быть создание COM-компонента, который реализует хук клавиатуры (например, в C # / C ++) и при необходимости использовать экземпляр этого объекта в JScript.

0 голосов
/ 28 марта 2011

Попробуйте

var tap = function (e) {
  ...code...
}

document.onkeypress = tap;
...