1

私はいくつかのプロセスのキーボードをフックしました。ここで、プロセスに送信されるキー メッセージを変更する必要があります。

例: 小文字から大文字、およびその逆。

これどうやってするの?

4

1 に答える 1

0

関数プロトタイプが次のとおり LRESULT CALLBACK WndProc( HWND hWnd, UING uMsg, WPARAM wParam, LPARAM lParam )であると仮定すると、文字の値は wParam 内にあります。純粋な ASCII キーボード入力を想定すると、次を使用できます。

short newKeyCode = (char)wParam;
if (uMsg == WM_CHAR || uMsg == WM_SYSCHAR)
if (newKeyCode - 'a' < 26) {
  newKeyCode = newKeyCode - 'a' + 'A';
} else {
  newKeyCode = newKeyCode - 'A' + 'a';
}

もちろん、2000年以降のWindowsシステムを使用している場合(したがってNTアーキテクチャで実行している場合)、wParamはUnicode値(およびWindowsの規則と同様にUTF-16)になるため、プログラムをいじる必要がある場合がありますこれで良い状態になりますが、それ以外の場合はこれだけで十分です。

于 2011-04-09T06:34:18.770 に答える