程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB綜合教程 >> 用API函數定義熱鍵又一法

用API函數定義熱鍵又一法

編輯:VB綜合教程
土人的拙作《如何用API函數定義熱鍵》在VB編程樂園發表後,很多網友紛紛來信,有的指出其中存在的問題並提出解決方的案(土人在此表示感謝!);有的則詢問可不可以定義組合鍵等問題。土人不才,通過多方查找資料,才找到另一種定義熱鍵的方法,在此把心得寫出來,請各位網友指正!
  三個API函數是必須的:
  RegisterHotKey——用於定義熱鍵
  UnregisterHotKey——用於注銷熱鍵
  PeekMessage——用於檢測熱鍵(尚有其它的主要用途)
  這裡舉個實例:程序啟動後窗體不可見,按下Ctrl F12窗體彈出來。本例僅需要一個窗體,在PWin98、VB6.0企業版下調試通過。
  
  '申明API函數
  PrivateDeclareFunctionRegisterHotKeyLib"user32"(ByValhWndAsLong,ByValidAsLong,ByValfsModifiersAsLong,ByValvkAsLong)AsLong
  PrivateDeclareFunctionUnregisterHotKeyLib"user32"(ByValhWndAsLong,ByValidAsLong)AsLong
  PrivateDeclareFunctionPeekMessageLib"user32"Alias"PeekMessageA"(lpMsgAsMsg,ByValhWndAsLong,ByValwMsgFilterMinAsLong,ByValwMsgFilterMaxAsLong,ByValwRemoveMsgAsLong)AsLong
  
  PrivatebCancelAsBoolean'用於熱鍵有效與否的變量
  
  '全局變量
  PrivateConstMOD_ALT=&H1
  PrivateConstMOD_CONTROL=&H2
  PrivateConstMOD_SHIFT=&H4
  PrivateConstPM_REMOVE=&H1
  PrivateConstWM_HOTKEY=&H312
  
  PrivateTypeMsg'定義Message類型
  hWndAsLong
  MessageAsLong
  wParamAsLong
  lParamAsLong
  timeAsLong
  EndType
  
  PrivateSubproMsg()'聲明進程
  DimMessageAsMsg
  '循環直到bCancel為真
  DoWhileNotbCancel
  '檢測到熱鍵被按下則令窗體隱藏
  IfPeekMessage(Message,Me.hWnd,WM_HOTKEY,WM_HOTKEY,PM_REMOVE)Then
  Me.Visible=True
  EndIf
  DoEvents
  Loop
  EndSub
  
  PrivateSubForm_Load()'窗體加載時初始化程序
  DimretAsLong
  bCancel=False
  '定義熱鍵為Ctrl F12
  ret=RegisterHotKey(Me.hWnd,&HBFFF&,MOD_CONTROL,vbKeyF12)
  Me.Visible=False'窗體不可見
  proMsg
  EndSub
  
  '退出時注銷熱鍵
  PrivateSubForm_Unload(CancelAsInteger)
  bCancel=True
  CallUnregisterHotKey(Me.hWnd,&HBFFF&)
  EndSub->

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved