Claybirdの日記: コンテキストメニュー 右クリック/右ドラッグの区別
日記 by
Claybird
Windows上でのお話。
シェル拡張DLLを作って、右クリックメニューと右ドラッグメニューで表示するメニュー内容を切り替える方法。
QueryContextMenuの引数だけでは右クリックと右ドラッグの区別は出来ない(いままでこの方法でやろうとして失敗してきた;気づくのが遅い)。
どうやれば区別できるかというと、レジストリにハンドラを登録するときに複数のCLSIDを使って登録するようにすること。
こうすると、DllGetClassObject()の引数に渡ってくるCLSIDで右クリックか右ドラッグかが判別できる。あとは、この区別をそのままメニュー表示まで持ち込むだけである。
考えたらとっても簡単なことなのに、気づくまでに本当に時間がかかった。
シェル拡張DLLを作って、右クリックメニューと右ドラッグメニューで表示するメニュー内容を切り替える方法。
QueryContextMenuの引数だけでは右クリックと右ドラッグの区別は出来ない(いままでこの方法でやろうとして失敗してきた;気づくのが遅い)。
どうやれば区別できるかというと、レジストリにハンドラを登録するときに複数のCLSIDを使って登録するようにすること。
こうすると、DllGetClassObject()の引数に渡ってくるCLSIDで右クリックか右ドラッグかが判別できる。あとは、この区別をそのままメニュー表示まで持ち込むだけである。
考えたらとっても簡単なことなのに、気づくまでに本当に時間がかかった。
コンテキストメニュー 右クリック/右ドラッグの区別 More ログイン