我现在有几个问题:
1、char *bufferA与char bufferB[MAX_PATH]定义中,到底有什么区别,在引用两个buffer有什么不一样?最好能说明它们在存储的不同点。我如果想对两个buffer都赋一个字符串如:"www.csdn.net",具体应该怎么做?
2、我想用发消息控制office软件,如word,excel等,而不使用它提供的库,使用spy++,但是看到对所有菜单操作的消息都是一样的,而且都是用户自定义消息,怎么办?
3、这是一个小问题,得到键盘的状态,GetKeyState?如果上面是对的话,则GetKeyState
1,你应该理解一下指针,char *bufferA只是分配一个指针的存储地址,它并没有分配指针指向的内容的地址,所以你需要用自己来分配空间,如
char *bufferA = new[13];strcpy(bufferA,"www.csdn.net");
但 char bufferB[MAX_PATH],数组的长度是固定的,你申明以后就不能再变了。而指针可以指向不同的地方。
2,你可以试试用钩子函数。
3,不太了解,真感兴趣,你自己写程序试试就知道了!
3.
給你一個
void TurnCapsLockOn(bool bOn)
{
short keyState;
bool bToggle;
keyState = GetKeyState(VK_CAPITAL);
bToggle = (keyState & 0x0F) != 0;
if (bOn != bToggle)
{
keybd_event(VK_CAPITAL, 20, 0, 0);
keybd_event(VK_CAPITAL, 20, KEYEVENTF_KEYUP, 0);
}
}
对2感兴趣
beyondtkl(大龙驹<*是时候了...*>)
bToggle = (keyState & 0x0F) != 0;//为什么要用Ox0F,而且GetKeyState返回是什么啊>
MSDN讲了,我看不明白
贴出来吧
If the high-order bit is 1, the key is down; otherwise, it is up. If the low-order bit is 1, the key is toggled. A key, such as the CAPS LOCK key, is toggled if it is turned on. The key is off and untoggled if the low-order bit is 0. A toggle keys indicator light (if any) on the keyboard will be on when the key is toggled, and off when the key is untoggled.
1.bufferA是一个指针变量,储存的是内存地址,如果要给它赋值,要先分配空间,再用strcpy()函数
第二,三个要试试才能说清楚
晚上回家试试再说
针对第三个问题
GetKeyState返回指定按键的状态。shift只是普通按键,那么它被按下,返回的高位全置1,因此为小于0的数,否则就为0了。那么Caps Lock是属于开关键,他就有三种情况,一种情况是小于0,表明按下,大于0 Caps Lock开启,而没有被按下,等于0,Caps Lock关闭,而没有被按下
GetKeyState(VK_LCONTROL) == -128