Excel 2016で選択したアクティブセルが太枠表示されない原因調査ツールをGitHubにアップしました。
※詳細な経緯は「(続)Excel 2016で選択したアクティブセルが太枠表示されない原因と解決方法2」をご覧ください。
■GitHubのリポジトリ(URL)は下記になります。
https://github.com/hiro-753/ClipBoardInspector
■プログラム本体は下記のURLから直接ダウンロードできます。
https://github.com/hiro-753/ClipBoardInspector/tree/master/bin
ソースは現在コメントなど整理のため準備中です。
準備出来次第公開します。
実行環境は、Windows10 Home 1903 、.NET Framework 4.0 で動作確認しています。
※お約束ですが、重要なファイルは保存した後、実行は自己責任でお願いします。(^^)
ツールはインストールの必要はなく、実行方法はダウンロードした下記2つのファイルを同じフォルダにおいて、exeの方をダブルクリックするだけです。
・ClipBoardInspector.exe
・DllHookMessage.dll
ツールの仕様としては下記のような感じで原因を調べるのに最低限必要なメッセージのみが自動的に表示されます。
アクティブセルが太枠表示されない現象は、WM_PASTEメッセージが発生しないのにWM_RENDERFORMATメッセージが発生した時に起きることから、条件がマッチしたら自動的にモニタリングが停止するようになっています。
ツールを起動すると、下記のようにダイアログが表示されます。
グローバルフックという方法を使って、他の全プログラムのメッセージのモニタを開始するために「フック開始」ボタンを押します。
WM_RENDERFORMATメッセージやWM_CLIPBOARDUPDATEメッセージはクリップボード操作で発生するメッセージです。
モニタが開始されたので、実際にクリップボード操作(Excelからメモ帳へのコピー&ペースト)を行ってみます。
※テストなのでExcelの代わりにフリーのOfficeスプレッドシートアプリを使っています。
上記Officeの"テスト"のセルをコピーします。
ツールを確認すると、
上記のように、WM_CLIPBOARDUPDATEメッセージがDropbox(Dropbox.exe)とOffice(et.exe)に対して発生していることがわかります。
メモ帳に"テスト"を貼り付けます。
ツールを確認してみます。
WM_PASTE(貼り付け)メッセージがメモ帳(notepad.exe)に対して発生した後、WM_RENDERFORMATメッセージがOffice(et.exe)に対して発生しているのがわかります。
(※Officeは貼り付けが発生した後、遅延して"テスト"をクリップボードに置いていることになります)
WM_RENDERFORMATメッセージは全て赤色の太字で表示されます。
下記のようにフックを開始して、WM_PASTEメッセージが発生しないのにWM_RENDERFORMATメッセージが発生したら自動的にフックが解除されモニタリングが停止するようになっています。
これで操作中にExcel 2016でアクティブセルが太枠表示されない状態を捕獲しようという仕組みです。
後はゆっくりメッセージの履歴(WM_RENDERFORMATメッセージの前のWM_CLIPBOARDUPDATEメッセージ)を確認して、発生したプログラム(プロセス)を特定することができると想定しています。
WM_PASTEメッセージが発生しないのにWM_RENDERFORMATメッセージが発生しない場合は、フックが継続されメッセージのモニタリングが続きます。
終了したい時は、フックを解除した後、終了ボタンを押すとダイアログは閉じられます。
ツールの説明は以上です。
ソースコードをアップしました。
ツールの仕組みなど「Excel 2016で選択したアクティブセルが太枠表示されない原因調査ツールソースコード公開」で、紹介させていただいています。(^^)