「フォームの「閉じる」ボタンを無効にする」へのコメント https://dobon.net/cgi-bin/pc/pc.php?mode=v&id=form%2Fdisabledclosebutton.html 「フォームの「閉じる」ボタンを無効にする」に投稿されたコメントの一覧 ja https://dobon.net/banner/dbs1.gif https://dobon.net/cgi-bin/pc/pc.php?mode=v&id=form%2Fdisabledclosebutton.html 「フォームの「閉じる」ボタンを無効にする」へのコメント 88 31 通常のコメント https://dobon.net/cgi-bin/pc/pc.php?mode=v&id=form%2Fdisabledclosebutton.html#10
ここで紹介しているのはフォームの閉じるボタンを無効にする方法で、Closeメソッドが呼び出されても閉じないようにする方法ではありません。フォームが閉じられた原因を知る方法は、以下のページで説明しています。

http://dobon.net/vb/dotnet/form/unloadmode.html

> FormClosingイベントで e.Cancel = True としたら、終了はしないのですが、タスクトレイのアイコンが消えてしまいました。

私が試した限りでは、消えませんでした。]]>
Mon, 22 Jun 2015 01:19:21 +0900 https://dobon.net/cgi-bin/pc/pc.php?mode=v&id=form%2Fdisabledclosebutton.html#10
通常のコメント https://dobon.net/cgi-bin/pc/pc.php?mode=v&id=form%2Fdisabledclosebutton.html#9 そのメニューのプロシージャでMe.Closeした場合には、m.Msg=70 となり、終了を検出できないようです(Win7 x64 VB2010 対象フレームワーク:.NetFramewok4)

終了するかどうかの確認をするのが目的です。

FormClosingイベントで e.Cancel = True としたら、終了はしないのですが、タスクトレイのアイコンが消えてしまいました。

何か対策はありますでしょうか。]]>
Thu, 30 Apr 2015 20:24:17 +0900 https://dobon.net/cgi-bin/pc/pc.php?mode=v&id=form%2Fdisabledclosebutton.html#9
評価の理由 https://dobon.net/cgi-bin/pc/pc.php?mode=v&id=form%2Fdisabledclosebutton.html#7 ずっと探していたものがこんなところにあったとは…
やった~]]>
Wed, 05 Sep 2012 22:32:15 +0900 https://dobon.net/cgi-bin/pc/pc.php?mode=v&id=form%2Fdisabledclosebutton.html#7
通常のコメント https://dobon.net/cgi-bin/pc/pc.php?mode=v&id=form%2Fdisabledclosebutton.html#6
0xFFF0とAndして比較すべきでした。修正しておきます。ご報告ありがとうございました。]]>
Mon, 09 Apr 2012 21:56:11 +0900 https://dobon.net/cgi-bin/pc/pc.php?mode=v&id=form%2Fdisabledclosebutton.html#6
通常のコメント https://dobon.net/cgi-bin/pc/pc.php?mode=v&id=form%2Fdisabledclosebutton.html#5 こちらの
> Const SC_CLOSE As Integer = &HF060
> If m.Msg = WM_SYSCOMMAND And m.WParam.ToInt32() = SC_CLOSE Then
ですが、これ『 m.WParam.ToInt32() = SC_CLOSE 』だと
64ビット環境で System.OverflowException を起こしてしまいますね。
こちらの環境だとウィンドウ上部を右クリックした時に発生しました。

なので、以下のように修正すると良いかと。

<System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.LinkDemand, Flags:=System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode)> _
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
Const WM_SYSCOMMAND As Integer = &H112
Dim SC_CLOSE As IntPtr = New IntPtr(&HF060) '修正箇所1
If m.Msg = WM_SYSCOMMAND And m.WParam = SC_CLOSE Then '修正箇所2
Return
End If
MyBase.WndProc(m)
End Sub

基本IntPtrをIntegerに合わせるのではなく、
IntegerをIntPtrにして比較する方針が得策かと。
なるべくIntPtrに合わせる方向で。]]>
Thu, 26 Jan 2012 01:30:54 +0900 https://dobon.net/cgi-bin/pc/pc.php?mode=v&amp;id=form%2Fdisabledclosebutton.html#5
通常のコメント https://dobon.net/cgi-bin/pc/pc.php?mode=v&amp;id=form%2Fdisabledclosebutton.html#4 どうもありがとうございました。]]> Mon, 16 Jan 2012 10:22:29 +0900 https://dobon.net/cgi-bin/pc/pc.php?mode=v&amp;id=form%2Fdisabledclosebutton.html#4 評価の理由 https://dobon.net/cgi-bin/pc/pc.php?mode=v&amp;id=form%2Fdisabledclosebutton.html#2 業務で役立つ情報なので助かりました。]]> Wed, 08 Apr 2009 21:43:17 +0900 https://dobon.net/cgi-bin/pc/pc.php?mode=v&amp;id=form%2Fdisabledclosebutton.html#2 通常のコメント https://dobon.net/cgi-bin/pc/pc.php?mode=v&amp;id=form%2Fdisabledclosebutton.html#1 Sun, 15 Mar 2009 03:48:13 +0900 https://dobon.net/cgi-bin/pc/pc.php?mode=v&amp;id=form%2Fdisabledclosebutton.html#1