游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1118|回复: 0

如何模?M??送出 Shift + Insert

[复制链接]

414

主题

611

帖子

621

积分

高级会员

Rank: 4

积分
621
发表于 2006-3-26 15:24:00 | 显示全部楼层 |阅读模式
我?L?使用 SendInput ??一??通用的模?M送出?合?的函? SendKey

目前的?y?下,大部份的?合?都可以正常送出,除了 Shift + Insert
我是以 SendKey(MOD_SHIFT, VK_INSERT); 的方式呼叫
可是送出去的效果只有 VK_INSERT,而?]有按下 Shift 的作用
也就是??o法正常?绦形蚁胍?摹纲N上」的效果
但 SendKey(MOD_SHIFT, VK_SPACE); 等等其它的?合?都是 OK 的

所以想???前???有?]有解?Q的?法
或是其??如果想送出 Shift + Insert 可以不用透? SendInput ??? API ?

PS. 我使用 VC6.0 SP6 + WinXP SP2 CHT

以下是我的程式?
--------------------------------------------------------------------------
#define _WIN32_WINNT 0x0501
#include <windows.h>

Uint SendKey(Uint fuModifiers, Uint uVirtKey) {
  INPUT KBInput[8];
  long MEI = GetMessageExtraInfo();
  int i, cnt=0;

  ZeroMemory(KBInput, sizeof(KBInput));

  if(fuModifiers & MOD_ALT)   KBInput[cnt++].ki.wVk = VK_MENU;
  if(fuModifiers & MOD_CONTROL) KBInput[cnt++].ki.wVk = VK_CONTROL;
  if(fuModifiers & MOD_SHIFT) KBInput[cnt++].ki.wVk = VK_SHIFT;

  if(uVirtKey) KBInput[cnt++].ki.wVk = uVirtKey;

  for(i=0; i<cnt; i++) {
    KBInput[cnt+i].type = KBInput[cnt-i-1].type = INPUT_KEYBOARD;
    KBInput[cnt+i].ki.dwExtraInfo = KBInput[cnt-i-1].ki.dwExtraInfo = MEI;

    KBInput[cnt+i].ki.wVk = KBInput[cnt-i-1].ki.wVk;
    KBInput[cnt+i].ki.dwFlags = KEYEVENTF_KEYUP;
  }

  return SendInput(cnt * 2, KBInput, sizeof(INPUT));
}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-24 01:06

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表