前提・実現したいこと
現在C#でWPFのアプリを作成しているのですが、
同じ.netなので同様に動作するかと思い、以下のサイトを参考にして、
コントロール外でのマウスクリックをイベントとしてフックしようとした所、
ツールボックスからMouseHookを該当の画面に配置しようとした際にエラーが発生しました。
http://hongliang.seesaa.net/article/7651626.html
一先ず自分が調べた中で発生したエラーに対しての質問になってしまっていますが、
もし別の方法があるのであればそちらもご教授いただきたいです。
発生している問題・エラーメッセージ
コンポーネント'MouseHook'を生成できませんでした。エラーメッセージ: 'System.ComponentModel.Win32Exception(0x80004005):指定されたモジュールが見つかりません。 場所HongliangSoft.Utilities.Gui.MouseHook..ctor()場所 .......\MouseHook2.cs:行162'
該当のソースコード
C#
1///<summary> 2 ///インスタンスを作成する。 3 ///</summary> 4 ///<exception cref="Win32Exception">フックに失敗しました。原因の詳細はエラーコードを参照してください。</exception> 5 public MouseHook() { 6 if (Environment.OSVersion.Platform != PlatformID.Win32NT) 7 throw new PlatformNotSupportedException("Windows 98/Meではサポートされていません。"); 8 MouseHookDelegate handler = new MouseHookDelegate(CallNextHook); 9 this.hookDelegate = GCHandle.Alloc(handler); 10 IntPtr module = Marshal.GetHINSTANCE(typeof(MouseHook).Assembly.GetModules()[0]); 11 this.hook = SetWindowsHookEx(MouseLowLevelHook, handler, module, 0); 12 if (hook == IntPtr.Zero) // こちらのif文に入り、エラーが発生します。 13 throw new Win32Exception(Marshal.GetLastWin32Error()); 14 }
試したこと
1.サイト上に載っている旧ソースでは動くのか試したところ、
ツールボックス上からドラッグ&ドロップし、配置することには成功したのですが、
イベントをフックした際にMessageBox.Show("test")を実行するようにしたところ、
永遠とイベントが発生し、メッセージウィンドウが大量に出てきてしまいました。
2.該当のエラー箇所(if文)をコメントアウトし、実行した所上記と同じ事象が発生しました。
C#についても、WPFについてもまだまだ無知なため、
ご教授いただきたいです。
補足情報(FW/ツールのバージョンなど)
VisualStudio Community 2019 Version 16.4.2
.Net Framework 4.7.2
Windows10
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/21 12:32
2021/03/21 12:58