<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE rss PUBLIC "-//Netscape Communications//DTD RSS 0.91//EN" "http://my.netscape.com/publish/formats/rss-0.91.dtd">
<rss version="0.91">
<channel>
<title>「フォームの「閉じる」ボタンを無効にする」へのコメント</title>
<link>http://dobon.net/cgi-bin/pc/pc.php?mode=v&amp;id=form%2Fdisabledclosebutton.html</link>
<description>「フォームの「閉じる」ボタンを無効にする」に投稿されたコメントの一覧</description>
<language>ja</language>
<image>
<url>https://dobon.net/banner/dbs1.gif</url>
<link>http://dobon.net/cgi-bin/pc/pc.php?mode=v&amp;id=form%2Fdisabledclosebutton.html</link>
<title>「フォームの「閉じる」ボタンを無効にする」へのコメント</title>
<width>88</width>
<height>31</height>
</image>
<item>
<title>通常のコメント</title>
<link>http://dobon.net/cgi-bin/pc/pc.php?mode=v&amp;id=form%2Fdisabledclosebutton.html#10</link>
<description><![CDATA[&gt; メニューのプロシージャでMe.Closeした場合には、m.Msg=70 となり、終了を検出できないようです<br><br>ここで紹介しているのはフォームの閉じるボタンを無効にする方法で、Closeメソッドが呼び出されても閉じないようにする方法ではありません。フォームが閉じられた原因を知る方法は、以下のページで説明しています。<br><br>http://dobon.net/vb/dotnet/form/unloadmode.html<br><br>&gt; FormClosingイベントで e.Cancel = True としたら、終了はしないのですが、タスクトレイのアイコンが消えてしまいました。<br><br>私が試した限りでは、消えませんでした。]]></description>
</item>
<item>
<title>通常のコメント</title>
<link>http://dobon.net/cgi-bin/pc/pc.php?mode=v&amp;amp;id=form%2Fdisabledclosebutton.html#9</link>
<description><![CDATA[タスクトレイに常住するプログラムで、ContextMenuStripによるメニューから終了する仕組みにしています。<br>そのメニューのプロシージャでMe.Closeした場合には、m.Msg=70 となり、終了を検出できないようです(Win7 x64 VB2010 対象フレームワーク:.NetFramewok4)<br><br>終了するかどうかの確認をするのが目的です。<br><br>FormClosingイベントで e.Cancel = True としたら、終了はしないのですが、タスクトレイのアイコンが消えてしまいました。<br><br>何か対策はありますでしょうか。]]></description>
</item>
<item>
<title>評価の理由</title>
<link>http://dobon.net/cgi-bin/pc/pc.php?mode=v&amp;amp;id=form%2Fdisabledclosebutton.html#7</link>
<description><![CDATA[評価：良い<br>ずっと探していたものがこんなところにあったとは…<br>やった～]]></description>
</item>
<item>
<title>通常のコメント</title>
<link>http://dobon.net/cgi-bin/pc/pc.php?mode=v&amp;amp;id=form%2Fdisabledclosebutton.html#6</link>
<description><![CDATA[&gt; 『 m.WParam.ToInt32() = SC_CLOSE 』だと６４ビット環境で System.OverflowException を起こしてしまいますね。<br><br>0xFFF0とAndして比較すべきでした。修正しておきます。ご報告ありがとうございました。]]></description>
</item>
<item>
<title>通常のコメント</title>
<link>http://dobon.net/cgi-bin/pc/pc.php?mode=v&amp;amp;id=form%2Fdisabledclosebutton.html#5</link>
<description><![CDATA[＞ 閉じられる原因を調べて判断する方法<br>こちらの<br>＞     Const SC_CLOSE As Integer = &amp;HF060<br>＞     If m.Msg = WM_SYSCOMMAND And m.WParam.ToInt32() = SC_CLOSE Then<br>ですが、これ『 m.WParam.ToInt32() = SC_CLOSE 』だと<br>６４ビット環境で System.OverflowException を起こしてしまいますね。<br>こちらの環境だとウィンドウ上部を右クリックした時に発生しました。<br><br>なので、以下のように修正すると良いかと。<br><br>    &lt;System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.LinkDemand, Flags:=System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode)&gt; _<br>    Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)<br>        Const WM_SYSCOMMAND As Integer = &amp;H112<br>        Dim SC_CLOSE As IntPtr = New IntPtr(&amp;HF060) '修正箇所１<br>        If m.Msg = WM_SYSCOMMAND And m.WParam = SC_CLOSE Then '修正箇所２<br>            Return<br>        End If<br>        MyBase.WndProc(m)<br>    End Sub<br><br>基本IntPtrをIntegerに合わせるのではなく、<br>IntegerをIntPtrにして比較する方針が得策かと。<br>なるべくIntPtrに合わせる方向で。]]></description>
</item>
<item>
<title>通常のコメント</title>
<link>http://dobon.net/cgi-bin/pc/pc.php?mode=v&amp;amp;id=form%2Fdisabledclosebutton.html#4</link>
<description><![CDATA[困っていたので大変助かりました。<br>どうもありがとうございました。]]></description>
</item>
<item>
<title>評価の理由</title>
<link>http://dobon.net/cgi-bin/pc/pc.php?mode=v&amp;amp;id=form%2Fdisabledclosebutton.html#2</link>
<description><![CDATA[評価：良い<br>業務で役立つ情報なので助かりました。]]></description>
</item>
<item>
<title>通常のコメント</title>
<link>http://dobon.net/cgi-bin/pc/pc.php?mode=v&amp;amp;id=form%2Fdisabledclosebutton.html#1</link>
<description><![CDATA[別件ですが、解決しました。]]></description>
</item>
</channel>
</rss>