怎么用SendInput模拟CTRL+C按键

 我来答
匿名用户
2016-09-29
展开全部
INPUT input_Copy[4] = {0};
input_Copy[0].type = input_Copy[1].type = input_Copy[2].type = input_Copy[3].type = INPUT_KEYBOARD;

input_Copy[0].ki.wVk = input_Copy[3].ki.wVk = VK_CONTROL;
input_Copy[1].ki.wVk = input_Copy[2].ki.wVk = 'C';

input_Copy[2].ki.dwFlags = input_Copy[3].ki.dwFlags = KEYEVENTF_KEYUP;

input_Copy[0].ki.time = input_Copy[1].ki.time = GetTickCount();
Sleep(100);
input_Copy[2].ki.time = input_Copy[3].ki.time = GetTickCount();

SendInput(sizeof(input_Copy)/sizeof(input_Copy[0]), input_Copy, sizeof(INPUT));

写得不对吗???代码哪里出错了,麻烦高手指出来。3Q了!

------解决方案--------------------
这个问题,你不要这样写,单独处理才有调理。给你个函数,用它可以组合成你需要的

// 模拟一个键的动作。vKey 是键的虚拟码 Orientation 表示按下还是释放 , 1按下 0释放
void KeyAction( int vKey , int Orientation )
{
INPUT Inputs888;
SecureZeroMemory(&Inputs888,sizeof(INPUT));

Inputs888.type = INPUT_KEYBOARD;

// ki 共 5 个成员,仅3个需要赋值
if(Orientation)
Inputs888.ki.dwFlags = 0;
else
Inputs888.ki.dwFlags = KEYEVENTF_KEYUP;

Inputs888.ki.wScan = MapVirtualKey(vKey, 0);
if( Inputs888.ki.wScan == 0 ) // 失败就放弃这个
{

return;
}
Inputs888.ki.wVk = vKey;

UINT ret77 = SendInput( 1, &Inputs888,sizeof(INPUT));

ASSERT(1==ret77);
}
nXOE3441
2016-09-29 · TA获得超过475个赞
知道小有建树答主
回答量:342
采纳率:0%
帮助的人:152万
展开全部
INPUT input[4];
memset(input, 0, sizeof(input));

//设置模拟键盘输入
input[0].type = input[1].type = input[2].type = input[3].type = INPUT_KEYBOARD;
input[0].ki.wVk = input[2].ki.wVk = VK_MENU;
input[1].ki.wVk = input[3].ki.wVk = VK_F4;

// 释放按键,这非常重要
input[2].ki.dwFlags = input[3].ki.dwFlags = KEYEVENTF_KEYUP;

SendInput(4,input,sizeof(INPUT));
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式