C#

ネイティブコードを呼び出す際の警告

C#

マネージコードから、DLLのネイティブコードを呼び出すことを、P/Invoke(Platform Invoke)という。stringやIntPtrなどはマネージコードとネイティブコードで表現方法が異なるため、CLIによって変換処理が行われる。 このように、異なるシステム間でデータを…

タスクトレイにアイコンを表示する

C#

タスクトレイにアイコンを表示するには、ツールバーのNotifyIconを用いる■手順 ツールバーのNotifyIconを、フォームにドラッグする NotifyIconのプロパティのIconに、適当なアイコンを設定する NotifyIconのイベントのMouseClickをダブルクリックする 自動生…

閉じるボタン等でのアプリ終了を無効化

C#

閉じるボタン等でアプリを終了するのを禁止するには、WndProcをオーバーライドしてWM_SYSCOMMANDのSC_CLOSEを無視すればよい。 この方法では、閉じるボタンは押せる状態だが、押してもアプリは終了しなくなる。 また、アプリ左上のアイコンをクリックして表…

特定のフォームにメッセージを送信する

C#

メッセージを送信したい相手のウインドウハンドルがわからない場合、FindWindowを用いれば特定の相手のウインドウハンドルを取得できる。 この取得したウインドウハンドルを指定してSendMessageを呼ぶことで、特定のウインドウにメッセージを送信する。■送信…

クライアント領域をドラッグしてフォームを移動する

C#

マウスイベントが発生するとWM_NCHITTESTメッセージがWindowsからフォームに投げられる。 このメッセージに対してフォームは、クリックされた場所がタイトルバーであればHTCAPTION、クライアント領域であればHTCLIENTを返す。 WndProcをオーバーライドすると…

ボタン押下時にメニューを表示する

C#

フォームのボタンを押したときに、ポップアップメニューを表示し詳細項目を選択できるようにする場合など。ツールボックス→すべてのWindowsフォーム→ContextMenuStripをフォームにドラッグする。 メニュー項目を入力する。 入力したメニュー項目をダブルクリ…

アプリの二重起動防止

ミューテックスに識別名(アプリ名)をつけて作成し、そのミューテックスを取得できる場合のみアプリを起動する。他のスレッドが実行中であればWaitOneメソッドは待ち状態となる。 タイムアウトを0にしているので、即座にfalseが返る。■C# // アプリケーショ…