2

AutoIt v3 にはHotKeySetという関数があります。押されたときにユーザー関数を呼び出すホットキーを設定します。これはシステム全体のホットキーです。つまり、ホットキーが設定されている場合、そのキーは他の目的には使用できません。

基本的に、キャッチしたい、または、 などEscの他のキーをユーザーが押すと、アプリケーションの外であっても、それを知らせる必要があります。$`

たとえば、ループ内で HotKeySet({ESC}) を実行すると、プログラムはそのキーが押されるのを待ちます。

public static void work() {
    while (true) {
        string task = null;
        lock (locker)
            if (tasks.Count > 0) {
                task = tasks.Dequeue();
                if (task == null) {
                    return;
                }
            }
        if (task != null) {
            //MessageBox.Show("Performing task: " + task);
            Program.mainAnnounceWindow.setLogTextBox(task);
            Program.mainAnnounceWindow.setLogTrayTip(task);
            Program.windowStateChange("Show");

            // Set the hotkey here
            SetHotkey(`);

            //Wait for hotkey to press when it's pressed... Execute some stuff
            Thread.Sleep(5000); // Simulate work...
            Program.windowStateChange("Hide");
        }
        else {
            wh.WaitOne(); // No more tasks - wait for a signal
        }
    }
}
4

2 に答える 2

4

user32.dllのRegisterHotKeyを確認する必要があります。pinvoke.net、RegisterHotKey (user32)に良い例があります。

于 2010-02-09T14:16:24.070 に答える
0

システムフックを設定する必要があると思います...

次に例を示します:http ://www.axino.net/tutorial/2009/02/keylogger-in-c-introduction

于 2010-02-05T10:05:56.440 に答える