質問

最新のキーボードには、「Pause/Play」または「Open Webブラウザー」など、特別なマルチメディアキーがあります。これらのキーを「押す」プログラムを書くことは可能ですか?

私はCで解決策を好むでしょうが、言語不可知論の解決策も受け入れます。

役に立ちましたか?

解決

Win32の下でのプログラミングについて話している場合は、SendInput Windows APIを使用してください。

入力構造を構築し、型メンバーをinput_keyboardに設定する必要があります。 KIメンバー(keybdinputタイプ)では、VK(仮想キー)を目的のVKコード(たとえば、vk_media_next_track、vk_media_stop)に設定できます。

仮想キーコード: http://msdn.microsoft.com/en-us/library/dd375731(v=vs.85).aspx

sendinput関数: http://msdn.microsoft.com/en-us/library/ms646310(v=vs.85).aspx

私は以下をテストしていませんが、次のようにする必要があります。

KEYBDINPUT kbi;
kbi.wVk = VK_MEDIA_STOP; // Provide your own
kbi.wScan = 0;
kbi.dwFlags = 0;  // See docs for flags (mm keys may need Extended key flag)
kbi.time = 0;
kbi.dwExtraInfo = (ULONG_PTR) GetMessageExtraInfo();

INPUT input;
input.type = INPUT_KEYBOARD;
input.ki   = kbi;

SendInput(1, &input, sizeof(INPUT));

他のヒント

受け入れられている答えよりもさらに簡単です keybd_event. 数値パラメーターを備えた単なるコールはありません。

// C# example:
public const int KEYEVENTF_EXTENDEDKEY = 1;
public const int KEYEVENTF_KEYUP = 2;
public const int VK_MEDIA_NEXT_TRACK = 0xB0;
public const int VK_MEDIA_PLAY_PAUSE = 0xB3;
public const int VK_MEDIA_PREV_TRACK = 0xB1;

[DllImport("user32.dll", SetLastError = true)]
public static extern void keybd_event(byte virtualKey, byte scanCode, uint flags, IntPtr extraInfo);

keybd_event(VK_MEDIA_PREV_TRACK, 0, KEYEVENTF_EXTENDEDKEY, IntPtr.Zero);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top