1

Alt+Shift+S をグローバルにインターセプトするアプリケーションを作成する必要があります。

私がしたことは、グローバル フックを設定する DLL を作成したことです。

namespace Hotkeydll
{
    public class MyHotKey
    {
        public static void setHooks()
        {
            KeyboardHookProcedure = new HookProc(KeyboardHookProc);
            hKeyboardHook = SetWindowsHookEx(WH_KEYBOARD_LL, KeyboardHookProcedure, Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0]), 0);
        }

        private int KeyboardHookProc(int nCode, Int32 wParam, IntPtr lParam)
        {
            //write something into file
        }


   }
}

次に、この DLL をロードしてフックを設定するプログラムを作成しました。

using Hotkeydll;
namespace IWFHotkeyStarter
{
    class Program
    {
        static void Main(string[] args)
        {
            MyHotKey.setHooks();
        }
    }
}

問題は、ホットキーが機能しないことです。

DLL がメモリに永続的に読み込まれていないようです。ファイルシステムからdllファイルを削除できることがわかりました。

私が間違っていることを教えてください。

別のアプローチを使用する必要がありますか?

ありがとうございました。

4

2 に答える 2

1

Your Main() method sets the hooks, then immediately exits and terminates the program. Furthermore, you need a message loop to make the hook callback work. That requires a Windows Forms or WPF app. Using a real hot key instead of a hook now also becomes an option. Check this thread for an example, C# is further down the page.

于 2010-12-10T18:41:21.977 に答える
0

キーボード フックは、通常、グローバル ホットキーを取得する正しい方法ではありません。

可能な限りRegisterHotkeyを使用してください。

于 2010-12-10T18:48:18.870 に答える