怎么让程序隐藏了后再显示

如何让程序隐藏了后再显示?
我想让程序隐藏起来然后判断用户按了键盘的alt+g键就显示出来,改如何实现呢?

------解决方案--------------------
这里上次有人问过,用registerhotkey(),在函数中处理显示或者隐藏
RegisterHotKey(
HWND hWnd, // 指明要接受热键(也就是接受WM_HOTKEY消息)的窗体句柄
int id, // 热键id
UINT fsModifiers, //键盘的附加值,例如是否有alt、shift、ctrl等被按下
UINT vk // 具体的键盘码
);
可以注册全局热键,注册成功返回真,可用下面的函数解除注册
UnregisterHotKey(
HWND hWnd, // 指明接受热键(也就是接受WM_HOTKEY消息)的窗体句柄

int id // 热键id



http://community.csdn.net/Expert/topic/5477/5477457.xml?temp=.7977869

------解决方案--------------------
给你一段参考代码,无论窗体是在隐藏或显示状态都能相应你注册的热键

1.先声明如下api函数及常量,同时声明一个类变量HotKeyID用于记录热键ID
Public Declare Auto Function RegisterHotKey Lib "user32.dll " Alias _
"RegisterHotKey " (ByVal hwnd As IntPtr, ByVal id As Integer, _
ByVal fsModifiers As Integer, ByVal vk As Integer) As Boolean
Public Declare Auto Function UnRegisterHotKey Lib "user32.dll " Alias _
"UnregisterHotKey " (ByVal hwnd As IntPtr, ByVal id As Integer) As Boolean
Public Declare Auto Function GlobalAddAtom Lib "kernel32 " Alias _
"GlobalAddAtomA " (ByVal lpString As String) As Short
Public Const MOD_ALT As Integer = &H1
Public Const MOD_CONTROL As Integer = &H2
Public Const MOD_SHIFT As Integer = &H4
Public Const MOD_WIN As Integer = &H8
Public Const WM_HOTKEY As Integer = &H312
Private HotKeyID As Short = -1

2.然后在窗体类的初始化函数中注册热键

Public Sub New()
MyBase.New()
'该调用是 Windows 窗体设计器所必需的。
InitializeComponent()
HotkeyId = GlobalAddAtom( "TestHotkey ")
If RegisterHotKey(Me.Handle, HotkeyId, MOD_ALT, Keys.G) = False Then
MessageBox.Show( "注册热键失败 ")
End If
'在 InitializeComponent() 调用之后添加任何初始化
End Sub

3.然后重载窗体类的wndpro方法

Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
Select Case m.Msg
Case WM_HOTKEY '这里仅仅给出一个示例,实际的代码根据实际情况改变
Me.Visible = Not Me.Visible
Case Else
MyBase.WndProc(m)
End Select
End Sub

4.重写窗体类的Dispose方法

Protected Overrides Sub Dispose(ByVal disposing As Boolean)
If HotKeyID <> -1 Then
UnRegisterHotKey(Me.Handle, HotKeyID)
End If
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
------解决方案--------------------
以上是maybelian(maybelian)的回复。

我试过可以。将代码复制入您的窗体,在运行时会提示Dispose重复定义,用这个替换原来那个就好了。
------解决方案--------------------
碰巧他的这段代码也是 alt + g 作热键的。
------解决方案--------------------
这个问题应该从Windows系统的快捷键从发考虑,而不是从应用程序本身来处理.