.NET开发

本类阅读TOP10

·NHibernate快速指南(翻译)
·vs.net 2005中文版下载地址收藏
·【小技巧】一个判断session是否过期的小技巧
·VB/ASP 调用 SQL Server 的存储过程
·?dos下编译.net程序找不到csc.exe文件
·通过Web Services上传和下载文件
·学习笔记(补)《.NET框架程序设计(修订版)》--目录
·VB.NET实现DirectDraw9 (2) 动画
·VB.NET实现DirectDraw9 (1) 托管的DDraw
·建站框架规范书之——文件命名

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
将About加入系统菜单

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

在VB.net中想要实现这个也很简单,不过需要重载窗口的WndProc过程才能处理WM_SYSCOMMAND消息

具体代码:
    Private Declare Function GetSystemMenu Lib "user32" Alias "GetSystemMenu" (ByVal hwnd As Int32, ByVal bRevert As Int32) As Int32
    Private Declare Function InsertMenu Lib "user32" Alias "InsertMenuA" (ByVal hMenu As Int32, ByVal nPosition As Int32, ByVal wFlags As Int32, ByVal wIDNewItem As Int32, ByVal lpNewItem As String) As Int32
    Private Const MF_BYCOMMAND = &H0&
    Private Const MF_BYPOSITION = &H400&
    Private Const MF_STRING = &H0&
    Private Const MF_SEPARATOR = &H800&
    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
        InsertMenu(GetSystemMenu(Me.Handle.ToInt32, False), 6, MF_BYPOSITION Or MF_STRING, 8888, "关于我...  :)")
        InsertMenu(GetSystemMenu(Me.Handle.ToInt32, False), 7, MF_BYPOSITION Or MF_SEPARATOR, 8889, "")
    End Sub

   
    Private Const WM_SYSCOMMAND As Integer = 274
    Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
        If m.Msg = WM_SYSCOMMAND And m.WParam.ToInt32 = 8888 Then
            MsgBox(System.Environment.MachineName)
        End If
        MyBase.WndProc(m)
    End Sub




相关文章

相关软件