这样的话,要用到Hook程序,用来勾住系统的消息,这样的话,要做一个Dll
做这个钩子Dll程序,用VB不大方便,我给你一段Delphi写的钩子程序,你看看1. 将以下的文字剪贴存成 HKTest.DPR--- Cut Here ---
library HKTest;uses
  HKProc in 'HKProc.pas';exports
  EnableHotKeyHook,
  DisableHotKeyHook;begin
  hNextHookProc := 0;
  procSaveExit := ExitProc;
  ExitProc := @HotKeyHookExit;
end.
--- Cut Here ---
2. 将以下的文字剪贴存成 HKProc.PAS
   (Note: HKTest.DPR 与 HKProc.PAS 建议储存在同一个目录)--- Cut Here ---
unit HKProc;interfaceuses
  Windows, Messages;var
  hNextHookProc: HHook;
  procSaveExit: Pointer;function KeyboardHookHandler(iCode: Integer;
  wParam: WPARAM;
  lParam: LPARAM): LRESULT; stdcall; export;
function EnableHotKeyHook: BOOL; export;
function DisableHotKeyHook: BOOL; export;
procedure HotKeyHookExit; far;implementationfunction KeyboardHookHandler(iCode: Integer;
  wParam: WPARAM;
  lParam: LPARAM): LRESULT; stdcall; export;
const
  _KeyPressMask = $80000000;
begin
  Result := 0;
  If iCode < 0 Then
  begin
    Result := CallNextHookEx(hNextHookProc, iCode, wParam, lParam);
    Exit;
  end;
  // 侦测 Ctrl + B 组合键
  if ((lParam and _KeyPressMask) = 0) and
    (GetKeyState(vk_Control) < 0) and (wParam = Ord('B')) then
  begin
    Result := 1;
    WinExec('Notepad.exe', sw_Normal);  // 记事本
  end;
end;function EnableHotKeyHook: BOOL; export;
begin
  Result := False;
  if hNextHookProc <> 0 then Exit;
  // 挂上 WH_KEYBOARD 这型的 HOOK, 同时, 传回值必须保留下
  // 来, 免得 HOOK 呼叫链结断掉
  hNextHookProc := SetWindowsHookEx(WH_KEYBOARD,
    KeyboardHookHandler,
    HInstance,
    0);
  Result := hNextHookProc <> 0;
end;function DisableHotKeyHook: BOOL; export;
begin
  if hNextHookProc <> 0 then
  begin
    UnhookWindowshookEx(hNextHookProc);  // 解除 Keyboard Hook
    hNextHookProc := 0;
    MessageBeep(0);
    MessageBeep(0);
  end;
  Result := hNextHookProc = 0;
end;procedure HotKeyHookExit;
begin
  // 如果忘了解除 HOOK, 自动代理解除的动作
  if hNextHookProc <> 0 then DisableHotKeyHook;
  ExitProc := procSaveExit;
end;end.然后在VB中调用  EnableHotKeyHook,DisableHotKeyHook就可以设置钩子,这个钩子的作用是按Ctrl+B就可以启动Notepad