1

TV が HDMI ケーブル経由でラップトップに接続されていることを検出しようとしています。WinAPI 関数RegisterDeviceNotification()を使用してデバイス メッセージを処理しています。

TV をラップトップに (HDMI ケーブル経由で) 接続すると、WM_DEVICE_ARRIVAL メッセージが表示されず、WM_DEVICE_CHANGE イベントが 3 つしか表示されません。これは正常ですか?

lParam(またはwParam、忘れました)には、接続されているデバイスのタイプとデバイス名を通知する構造が含まれているため、WM_DEVICE_ARRIVALイベントが本当に必要です。ただし、WM_DEVICE_CHANGEイベントにはこの構造が含まれていません。

HDMI ポートの挿入時に WM_DEVICE_ARRIVAL メッセージを受信しないのが通常の場合、接続時にデバイス名とタイプを特定するために使用できる他の方法はありますか?

私の唯一のアイデアは、アプリケーションの起動時にすべてのデバイスをリストし、デバイス接続時に WM_DEVICE_CHANGE イベントに反応して、デバイスのリストが増加したかどうかを確認することです。

4

1 に答える 1

0

ポーリングGetSystemMetrics(SM_CMONITORS)またはEnumDisplayMonitors.

メッセージは (通常) アプリケーションやサービスによって送信され、WM_SETTINGCHANGEデスクトップの解像度を含むシステム メトリックを変更します (デスクトップが拡張された場合に HDMI が接続されると変更されますが、ミラーリングには使用されません)。タイマーだけに頼るのではなく、これを使用して上記のポーリングをトリガーできます。

于 2013-02-22T23:08:16.360 に答える