【】Top

【】VB.NET
【】VB6.0

【】メールマガジンの購読
【】メールマガジンの解除






【】会社概要

【】お問い合わせ


姉妹サイト「バーチャルコネクション!」はこちらです。

姉妹サイト「七福神のメールでビンゴ!」はこちらです。

アイネットマコト

●24時間365日の安心をあなたにAT-LINK専用サーバ・サービスお勧めのサーバです。






閉じるボタンを無効化する


【注意書き】
●VB.NET を使っているものとします。
●動作環境は、Windows XX を使用しているとします。


.NET でも、閉じるボタンを無効化することが可能です。

この機能を使えば、簡単に、
閉じるボタンを無効化して
アプリケーション上でのユーザーの操作によって
なるべく終了することが難しいように考慮されたアプリケーション
を作成することが可能です。

ただし、タスクマネージャなどの外部アプリケーションからの
終了は、本サンプルでは終了を許しています。


フォームに次の様なコードを記述します


-----------VB.NETコーディングここから-------------------


1.フォームに、ボタンコントロール
    を配置します。
    下記は、デフォルトのオブジェクトの名前と配置を示しています。

   ┏━━━━━━━━┓
   ┃Button1      ┃
   ┗━━━━━━━━┛


2.ボタンコントロールの
    Button1 text プロパティに「終了」と記述します。

  ※説明用のためです。必須ではありません。

   ┏━━━━━━━━┓
   ┃終了         ┃
   ┗━━━━━━━━┛



3.フォームをダブルクリックして、
    フォームロードイベントのコード編集を開始して、
    次のコードを記述します。


    'APIの宣言(ハンドル部分のlong型を IntPtr に書き直してあります)
    Public Declare Function GetSystemMenu Lib "user32.dll" _
    Alias "GetSystemMenu" (ByVal hwnd As IntPtr, _
    ByVal bRevert As Long) As IntPtr

    Public Declare Function RemoveMenu Lib "user32.dll" _
    Alias "RemoveMenu" (ByVal hMenu As IntPtr, _
    ByVal nPosition As Long, ByVal wFlags As Long) As Long


    Public Const SC_CLOSE As Long = &HF060
    Public Const MF_BYCOMMAND As Long = &H0

    Dim infEndflg As Integer

    Private Sub Form1_Load(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles MyBase.Load

        'ウィンドウハンドルもともにメニューを無効化
        Dim lngH As IntPtr
        lngH = GetSystemMenu(Me.Handle, 0)
        RemoveMenu(lngH, SC_CLOSE, MF_BYCOMMAND)

    End Sub


    Private Sub Button1_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles Button1.Click

        'アプリケーションの終了ボタンによる制御
        infEndflg = True
        Me.Close()

    End Sub

    Private Sub Form1_Closing(ByVal sender As Object, _
    ByVal e As System.ComponentModel.CancelEventArgs) _
    Handles MyBase.Closing
        'フォームが閉じられるときにチェック
        If Not infEndflg Then e.Cancel = True
    End Sub




4.ビルドして実行します。

5.フォームが表示されますが、
    右上にあるクローズボックス(×)が
    無効になっていることを確認できます。

6.フォームの左上にあるコントロールボックスを
    マウスでクリックすると、
    コントロールメニューが表示されます。

7.表示されたコントロールメニューからも
    「閉じる」メニューがなくなっていることが確認できます。

8.終了するショートカットキーである
    Altキーを押しながら F4キーを押します。(ALT + F4)

9.このフォームを終了できないことが確認できます。

10.フォームに表示されたボタン「終了」を押します。

11.このフォームを終了できることが確認できます。






-----------VB.NETコーディングここまで-------------------

本サンプルでは、WIn32APIを使用しています。

APIビューア等を使用されております場合は、
ByVal hwnd As Long といった ハンドル部分が Long 型と
なっている場合がありますようですが、
本サンプルでは、
ByVal hwnd As IntPtr といった具合に
IntPtr 型へ書き直しています。

本サンプルでは、
フォームロード時に、クローズボックスを無効化する
処理を実行しています。

また、フォームが閉じられる際に
本アプリケーションで用意している終了ボタンによる
終了であるかどうかをチェックして終了の
可否を判断しています。




 

http://anetm.com/dev/d.cgi?SC=DTDTL&o=Oul

Copyright(c)2001-2004 Ai Net Makoto 記事・情報の無断転載を禁止します。

「これがほしかった!厳選サンプルツール集」の注意点
●当サイトはリンクフリーです。
2018/08/22(水)00:05 更新