CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
花落谁家,你作主! 盛大widget设计大赛英雄榜
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  API

几个API函数用法?

楼主VBer2(俗人)2002-06-21 08:55:11 在 VB / API 提问

有谁知道以下函数用法:  
  Private   Declare   Function   CallNextHookEx   Lib   "user32"   (ByVal   hHook   As   Long,   ByVal   ncode   As   Long,   ByVal   wParam   As   Long,   lParam   As   Any)   As   Long  
   
  Private   Declare   Function   SetWindowsHookEx   Lib   "user32"   Alias   "SetWindowsHookExA"   (ByVal   idHook   As   Long,   ByVal   lpfn   As   Long,   ByVal   hmod   As   Long,   ByVal   dwThreadId   As   Long)   As   Long  
   
  Private   Declare   Function   UnhookWindowsHookEx   Lib   "user32"   (ByVal   hHook   As   Long)   As   Long  
   
  Private   Declare   Function   GetKeyState   Lib   "user32"   (ByVal   nVirtKey   As   Long)   As   Integer  
   
  Private   Declare   Sub   CopyMemory   Lib   "kernel32"   Alias   "RtlMoveMemory"   (Destination   As   Any,   Source   As   Any,   ByVal   Length   As   Long)  
   
  能附点中文说明或举个例子最好不过了:-)  
  问题点数:30、回复次数:3Top

1 楼songyangk(小草)回复于 2002-06-21 09:02:22 得分 5

www.allapi.net  
  里面有几乎所有API函数的详解和VB的例子,你可以去看一下。虽然是英文的,但确实是个好东西。Top

2 楼maoqingfeng(千里孤坟)回复于 2002-06-21 09:13:50 得分 5

GetKeyState  
  针对已处理过的按键,在最近一次输入信息时,判断指定虚拟键的状态  
  参数   nVirtKey   ,欲测试的虚拟键键码。对字母、数字字符(A-Z、a-z、0-9),用它们实际的ASCII值    
   
  Top

3 楼sunxl(小呆)回复于 2002-06-21 09:30:44 得分 20

006   突破   SendKeys   的限制   98-8-22  
  SendKeys   不能实现一些特殊的键,   如   Alt+PrintScr   。   不过使用   API   ,可以改变这样的状况。  
  声明:  
  Private   Declare   Sub   keybd_event   Lib   "user32"   (ByVal   bVk   As   Byte,   ByVal     bScan   As   Byte,   ByVal   dwFlags   As   Long,   ByVal   dwExtraInfo   As   Long)  
  使用:  
  '   一个抓屏的例子  
  Const   VK_SNAPSHOT   As   Byte   =   &H2C  
  '   把应用窗口图象放到剪贴板:  
  Call   keybd_event(VK_SNAPSHOT,   0,   0,   0)  
  '     把整个屏幕抓到剪贴板:  
  Call   keybd_event(VK_SNAPSHOT,   1,   0,   0)  
  可以用该方法抓   AVI   图象。  
   
  005   让窗口拒绝接受键盘和鼠标事件   98-7-29  
  声明:  
  Private   Declare   Function   EnableWindow   Lib   "user32"   (ByVal   hwnd   As   Long,   ByVal   fEnable   As   Long)   As   Long  
  使用:  
  '拒绝接受键盘和鼠标事件  
  Call   EnableWindow(Form.hwnd,   0)  
  '允许接受键盘和鼠标事件  
  Call   EnableWindow(Form.hwnd,   1)  
   
  004     对象是使用   TAB   键还是鼠标激活的  
  声明:  
  Declare   Function   GetKeyState%   Lib   "User32"   (ByVal   nVirtKey%)  
  Const   VK_TAB   =   9  
  使用:  
  Sub   Text1_GotFocus   ()  
  If   GetKeyState(VK_TAB)   <   0   Then  
  Text1.SelStart   =   0  
  Text1.SelLength   =   Len(Text1.Text)  
  '   使用了   TAB   键  
  Else  
  Text1.SelLength   =   0  
  '   使用了   MOUSE    
  End   If  
  End   Sub  
   
  003   使回车具有   Tab   的功能   98-7-04  
  在   VB   中,使用回车结束一个录入时,光标不能自动移到下个对象。解决方法是在该对象的   KeyPress   事件中增加以下的代码:  
   
  If   KeyAscii   =   13   Then  
  SendKeys   "{Tab}"  
  KeyAscii   =   0  
  End   If  
   
  98-7-04   更新:如果表单中有许多对象,在所有的对象中增加以上的代码是繁琐的,解决方法是:设置表单的   KeyPreview   属性为   True,在表单的   KeyPress   中增加以上的代码。而对于无须该功能的对象,如按钮,将其   TabStop   设置为False。  
   
  002     禁止使用   Alt-Tab   或   Ctrl-Alt-Del   98-7-22  
  Private   Declare   Function   EnableWindow   Lib   "user32"   (ByVal   hWnd   As   Integer,   ByVal   aBOOL   As   Integer)   As   Integer  
  Private   Declare   Function   IsWindowEnabled   Lib   "user32"   (ByVal   hWnd   As   Integer)   As   Integer  
  Private   Declare   Function   GetMenu   Lib   "user32"   (ByVal   hWnd   As   Integer)   As   Integer  
  Private   Declare   Function   FindWindow   Lib   "user32"   Alias   "FindWindowA"   (ByVal   lpClassName   As   String,   ByVal   lpWindowName   As   String)   As   Long  
  Private   Declare   Function   SystemParametersInfo   Lib   "user32"   Alias   "SystemParametersInfoA"   (ByVal   uAction   As   Long,   ByVal   uParam   As   Long,   ByVal   lpvParam   As   Any,   ByVal   fuWinIni   As   Long)   As   Long  
   
  Private   TaskBarhWnd   As   Long  
  Private   IsTaskBarEnabled   As   Integer  
  Private   TaskBarMenuHwnd   As   Integer  
  '禁止或允许使用   Alt-Tab  
  Sub   FastTaskSwitching(bEnabled   As   Boolean)  
  Dim   X   As   Long,   bDisabled   As   Long  
  bDisabled   =   Not   bEnabled  
  X   =   SystemParametersInfo(97,   bDisabled,   CStr(1),   0)  
  End   Sub  
  '禁止使用Ctrl-Alt-Del  
  Public   Sub   DisableTaskBar()  
  Dim   EWindow   As   Integer  
  TaskBarhWnd   =   FindWindow("Shell_traywnd",   "")  
  If   TaskBarhWnd   <>   0   Then  
  EWindow   =   IsWindowEnabled(TaskBarhWnd)  
  If   EWindow   =   1   Then    
  IsTaskBarEnabled   =   EnableWindow(TaskBarhWnd,   0)  
  End   If  
  End   If  
  End   Sub  
  '允许使用Ctrl-Alt-Del  
  Public   Sub   EnableTaskBar()  
  If   IsTaskBarEnabled   =   0   Then  
  IsTaskBarEnabled   =   EnableWindow(TaskBarhWnd,   1)  
  End   If  
  End   Sub  
   
  98-7-22   禁止   Ctrl+Alt+Del    
  声明(For   Win95):  
  Const   SPI_SCREENSAVERRUNNING   =   97  
  Private   Declare   Function   SystemParametersInfo   Lib   "user32"   Alias   _  
  "SystemParametersInfoA"   (ByVal   uAction   As   Long,   ByVal   uParam   As   Long,   _  
  lpvParam   As   Any,   ByVal   fuWinIni   As   Long)   As   Long  
  使用:  
  '禁止  
  Dim   pOld   As   Boolean  
  Call   SystemParametersInfo(SPI_SCREENSAVERRUNNING,   True,   pOld,   0)  
  '开启  
  Dim   pOld   As   Boolean  
  Call   SystemParametersInfo(SPI_SCREENSAVERRUNNING,   False,   pOld,   0)  
   
  001   如何过滤键盘录入  
  在   VB   的应用得到以前就处理键盘动作,   实现对键盘的全面控制,   可过滤任意的键。   下面的例子过滤了   CTRL+C   键,   并把该键模拟为在   Command1   上单击。    
   
  Public   Declare   Function   CallNextHookEx   Lib   "user32"   (ByVal   hHook   As   Long,   ByVal   nCode   As   Long,   ByVal   wParam   As   Long,   ByVal   lParam   As   Long)   As   Long  
   
  Public   Declare   Function   UnhookWindowsHookEx   Lib   "user32"   (ByVal   hHook   As   Long)   As   Long  
   
  Public   Declare   Function   SetWindowsHookEx   Lib   "user32"   Alias   "SetWindowsHookExA"   (ByVal   idHook   As   Long,   ByVal   lpfn   As   Long,   ByVal   hmod   As   Long,   ByVal   dwThreadId   As   Long)   As   Long  
   
  Public   Declare   Function   PostMessage   Lib   "user32"   Alias   "PostMessageA"   (ByVal   hwnd   As   Long,   ByVal   wMsg   As   Long,   ByVal   wParam   As   Long,   ByVal   lParam   As   Long)   As   Long  
   
  Public   Const   WH_KEYBOARD   =   2  
  Public   Const   KBH_MASK   =   &H20000000  
  Public   Const   WM_LBUTTONDOWN   =   &H201  
  Public   Const   WM_LBUTTONUP   =   &H202  
   
  Global   hHook   As   Long  
   
  'KeyboardProc   在   VB   应用动作前发生  
  Public   Function   KeyboardProc(ByVal   nCode   As   Long,   ByVal   wParam   As   Long,   ByVal   lParam   As   Long)   As   Long  
  If   nCode   >=   0   Then  
  '处理你希望过滤的键  
  If   wParam   =   Asc("C")   And   (lParam   And   KBH_MASK)   <>   0   Then  
  If   (lParam   And   &HC0000000)   =   0   Then  
  '模拟在Command1   中单击  
  Form1.Command1.SetFocus  
  Call   PostMessage(Form1.Command1.hwnd,   WM_LBUTTONDOWN,   0,   &H20002)  
  Call   PostMessage(Form1.Command1.hwnd,   WM_LBUTTONUP,   0,   &H20002)  
  KeyboardProc   =   1  
  Exit   Function  
  End   If  
  End   If  
  End   If  
  KeyboardProc   =   CallNextHookEx(hHook,   nCode,   wParam,   lParam)  
  End   Function  
   
  Private   Sub   Form_Load()  
  '将   KeyboardProc   连接到中断上  
  hHook   =   SetWindowsHookEx(WH_KEYBOARD,   AddressOf   KeyboardProc,   0&,   App.ThreadID)  
  End   Sub  
   
  Private   Sub   Form_Unload(Cancel   As   Integer)  
  Call   UnhookWindowsHookEx(hHook)  
  End   Sub  
  Top

相关问题

  • API函数GetProfileString的用法
  • 关于API函数PlaySound的用法!
  • 谁知道API函数SetSysColors的用法?
  • 请教api函数ReadFile的用法
  • 关于API函数Mixeropen的用法
  • 求API函数具体用法
  • 函数用法?
  • 求《Programming windows》电子书及FINDWINDOW,SENDMESSAGE,WINEXEC,SHELLEXECUTE这几个API函数的用法
  • 谁能帮我解释一下这几个API函数的用法?
  • sql的几个函数用法

关键词

  • 函数
  • 键盘
  • 鼠标
  • byval
  • hhook
  • keyboardproc
  • as long
  • longpublic
  • ifend
  • pold

得分解答快速导航

  • 帖主:VBer2
  • songyangk
  • maoqingfeng
  • sunxl

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo