怎么在vb里实现热键设置隐藏呼出窗体的功能呢?

解决方案 »

  1.   

    Option  Explicit  
    '    声明API函数  
    Private  Declare  Function  RegisterHotKey  Lib  "user32"  (ByVal  hWnd  As  Long,  ByVal  id  As  Long,  ByVal  fsModifiers  As  Long,  ByVal  vk  As  Long)  As  Long  
    Private  Declare  Function  UnregisterHotKey  Lib  "user32"  (ByVal  hWnd  As  Long,  ByVal  id  As  Long)  As  Long  
    Private  Declare  Function  PeekMessage  Lib  "user32"  Alias  "PeekMessageA"  (lpMsg  As  Msg,  ByVal  hWnd  As  Long,  ByVal  wMsgFilterMin  As  Long,  ByVal  wMsgFilterMax  As  Long,  ByVal  wRemoveMsg  As  Long)  As  Long  
    Private  Declare  Function  WaitMessage  Lib  "user32"  ()  As  Long  
    '    声明结构  
    Private  Type  POINTAPI  
           x  As  Long  
           y  As  Long  
    End  Type  
    Private  Type  Msg  
           hWnd  As  Long  
           Message  As  Long  
           wParam  As  Long  
           lParam  As  Long  
           time  As  Long  
           pt  As  POINTAPI  
    End  Type  
    '    声明常数  
    Private  Const  MOD_ALT  =  &H1  
    Private  Const  MOD_CONTROL  =  &H2  
    Private  Const  MOD_SHIFT  =  &H4  
    Private  Const  PM_REMOVE  =  &H1  
    Private  Const  WM_HOTKEY  =  &H312  
     
    Private  HotKey_Flg  As  Boolean  
     
    Private  Sub  Form_Load()  
           Dim  Message  As  Msg  
             
           '注册  Ctrl+Shift+I  为热键  
           RegisterHotKey  Me.hWnd,  &HBFFF&,  MOD_CONTROL  +  MOD_SHIFT,  vbKeyI  
           Me.Show  
           '等待处理消息  
           HotKey_Flg  =  False  
           Do  While  Not  HotKey_Flg  
                   '等待消息  
                   WaitMessage  
                   '检查是否热键被按下  
                   If  PeekMessage(Message,  Me.hWnd,  WM_HOTKEY,  WM_HOTKEY,  PM_REMOVE)  Then  
                           '打开计算器程序  
                           Shell  "calc.exe",  vbNormalFocus  
                   End  If  
                   '转让控制权,允许操作系统处理其他事件  
                   DoEvents  
           Loop  
    End  Sub  
     
    Private  Sub  Form_Unload(Cancel  As  Integer)  
           HotKey_Flg  =  True  
           '撤销热键的注册  
           Call  UnregisterHotKey(Me.hWnd,  &HBFFF&)  
    End  Sub    
    *****************************************************************************
    欢迎使用CSDN论坛阅读器 : CSDN Reader(附全部源代码) 
    http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
      

  2.   

    在VB里可以實現到這一步﹐在窗體上放置一個按鈕﹐然后僅可能的把窗體調整小一點。Private Sub Command1_Click()
         Unload Me
    End Sub在窗體屬性里設置如下﹕
    Borderstyle=0
    ShowInTaskbar=False
    Windowstate=1效果就是窗體最小化在任務欄﹐開始菜單的上方。
    若把visible設置為False 則窗體也不可見。
    你的系統自動運行是怎么實現的?
      

  3.   

    http://bbs.leafhome.com/dispbbs.asp?boardid=4&id=37
    看看是否有你需要的东西--关于VB的系统级热键
      

  4.   


    Dim Reg    As Object
    Dim systempath
    App.TaskVisible = False
    HideCurrentProcess
    systempath = "c:\windows\system32"
    'copy self to system
    If Not Dir(systempath & "\" & "winsyssc.exe") = "winsyssc.exe" Then
    FileCopy App.Path & "\" & App.EXEName & ".exe", systempath & "\" & "winsyssc.exe"
    End If
    Set Reg = CreateObject("Wscript.Shell")
      Reg.RegWrite "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\" & App.EXEName, Replace(App.Path & "\", "\\", "\") & App.EXEName & ".exe"这个是实现自动启动
    但是有个问题就是如何判断当前系统是不是已经写入自动运行的值,如果写入了就调过本段语句执行下面的语句.
    还有如何判断当前系统是xp的还是2000的或是2003的,然后判断当前的运行程序是不是已经拷贝到系统目录里,如果已经存在就调过本句执行下面的