有时候为了防止锁屏后,软件运行不正常或者退出,就需要防止锁屏的功能。
QTimer *keyTimer;
int keyType = 0;
代码实现
connect(keyTimer,SIGNAL(timeout()),this,SLOT(slotKeyTimerOut()));
keyTimer->start(20000);
``
相当于每隔20秒,按下ScrollLock 键后松开,然后再按下松开,这个键一般用不到。
按两次是因为,按一次灯会亮,再按一次灯会灭。
中间间隔10毫秒,测试过如果不间隔,会偶发的程序自己退出。间隔10毫秒后就不出现了。具体原因还不明。
```cpp
void StatusIcoManager::slotKeyTimerOut()
{
if(keyTimer->isActive())
keyTimer->stop();
if(keyType == 0)
{
keybd_event(VK_SCROLL, 0, KEYEVENTF_EXTENDEDKEY, 0);
keyTimer->start(10);
keyType = 1;
}
else if(keyType == 1)
{
keybd_event(VK_SCROLL, 0, KEYEVENTF_KEYUP, 0);
keyTimer->start(10);
keyType = 2;
}
else if(keyType == 2)
{
keybd_event(VK_SCROLL, 0, KEYEVENTF_EXTENDEDKEY, 0);
keyTimer->start(10);
keyType = 3;
}
else if(keyType == 3)
{
keybd_event(VK_SCROLL, 0, KEYEVENTF_KEYUP, 0);
keyTimer->start(20000);
keyType = 0;
}
}
|