C# ホットキーの登録時に発生する例外について
- 環境
OS:Windows10 Pro 64bit
VisualStudio:Community 2017
RegisterHotKey/UnregisterHotKeyを使用して、ホットキーの登録/解除を行おうとしているのですが、
プロジェクト作成後、2回目以降に起動(デバッグ)すると例外が発生します。
原因がいまいちわからず、解決に至っていません。
お手数ですが、アドバイス等をいただければ、幸いです。
当方、Javaの経験は長いのですが、C#でのプロジェクト経験はありません。
簡単なアプリケーションくらいは作れる程度のスキルは持っています。
- ソースコード
C#
1using System; 2using System.Collections.Generic; 3using System.ComponentModel; 4using System.Data; 5using System.Drawing; 6using System.Linq; 7using System.Runtime.InteropServices; 8using System.Text; 9using System.Windows.Forms; 10 11namespace ClipBoardViewer { 12 public partial class Form1 : Form { 13 14 // ホットキーID 15 const int HOTKEY_ID = 0x0003; 16 // キー(Shift) 17 const int KEY_MOD_SHIFT = 0x0004; 18 // キー(Alt) 19 const int KEY_MOD_ALT = 0x0001; 20 // キー(Cntrol) 21 const int KEY_MOD_CONTROL = 0x0002; 22 23 // キー 24 const Keys KEY = Keys.A; 25 26 [DllImport("user32.dll")] 27 extern static int RegisterHotKey(IntPtr HWnd, int ID, int MOD_KEY, int KEY); 28 [DllImport("user32.dll")] 29 extern static int UnregisterHotKey(IntPtr HWnd, int ID); 30 31 public Form1() { 32 InitializeComponent(); 33 try { 34 RegisterHotKey(this.Handle, HOTKEY_ID, KEY_MOD_SHIFT | KEY_MOD_ALT, (int)KEY); 35 } catch ( Exception e ) { 36 Console.Write(e.StackTrace); 37 } 38 } 39 40 private void Form1_Load(object sender, EventArgs e) { 41 RegisterHotKey(this.Handle, HOTKEY_ID, KEY_MOD_SHIFT | KEY_MOD_ALT, (int)KEY); 42 } 43 44 private void Form1_FormClosing(object sender, FormClosingEventArgs e) { 45 UnregisterHotKey(this.Handle, HOTKEY_ID); 46 } 47 48 protected override void WndProc(ref Message m) { 49 const int WM_HOTKEY = 0x312; 50 51 if (m.Msg == WM_HOTKEY && (int)m.WParam == HOTKEY_ID) { 52 Show(); 53 Activate(); 54 } 55 } 56 } 57}
- 標準出力
'ClipBoardViewer.exe' (CLR v2.0.50727: DefaultDomain): 'C:\WINDOWS\assembly\GAC_64\mscorlib\2.0.0.0__b77a5c561934e089\mscorlib.dll' が読み込まれました。シンボルの読み込みをスキップしました。モジュールは最適化されていて、デバッグ オプションの [マイ コードのみ] 設定が有効になっています。 'ClipBoardViewer.exe' (CLR v2.0.50727: DefaultDomain): 'D:\Users\Hanbe.T\Documents\02.Develop\C#\ClipBoardViewer\ClipBoardViewer\bin\Debug\ClipBoardViewer.exe' が読み込まれました。シンボルが読み込まれました。 'ClipBoardViewer.exe' (CLR v2.0.50727: ClipBoardViewer.exe): 'C:\WINDOWS\assembly\GAC_MSIL\System.Windows.Forms\2.0.0.0__b77a5c561934e089\System.Windows.Forms.dll' が読み込まれました。シンボルの読み込みをスキップしました。モジュールは最適化されていて、デバッグ オプションの [マイ コードのみ] 設定が有効になっています。 'ClipBoardViewer.exe' (CLR v2.0.50727: ClipBoardViewer.exe): 'C:\WINDOWS\assembly\GAC_MSIL\System\2.0.0.0__b77a5c561934e089\System.dll' が読み込まれました。シンボルの読み込みをスキップしました。モジュールは最適化されていて、デバッグ オプションの [マイ コードのみ] 設定が有効になっています。 'ClipBoardViewer.exe' (CLR v2.0.50727: ClipBoardViewer.exe): 'C:\WINDOWS\assembly\GAC_MSIL\System.Drawing\2.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll' が読み込まれました。シンボルの読み込みをスキップしました。モジュールは最適化されていて、デバッグ オプションの [マイ コードのみ] 設定が有効になっています。 'ClipBoardViewer.exe' (CLR v2.0.50727: ClipBoardViewer.exe): 'C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\Remote Debugger\x64\Runtime\Microsoft.VisualStudio.Debugger.Runtime.dll' が読み込まれました。シンボルの読み込みをスキップしました。モジュールは最適化されていて、デバッグ オプションの [マイ コードのみ] 設定が有効になっています。 'ClipBoardViewer.exe' (CLR v2.0.50727: ClipBoardViewer.exe): 'C:\WINDOWS\assembly\GAC_MSIL\System.Windows.Forms.resources\2.0.0.0_ja_b77a5c561934e089\System.Windows.Forms.resources.dll' が読み込まれました。モジュールがシンボルなしでビルドされました。 例外がスローされました: 'System.ComponentModel.Win32Exception' (System.Windows.Forms.dll の中) プログラム '[4492] ClipBoardViewer.exe' はコード -1 (0xffffffff) で終了しました。
お手数ですが、よろしくお願いいたします。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/02/25 08:26