我想在窗口8中禁用触摸屏,但是在更改注册表时我遇到了一些麻烦。
更改注册表后,我必须重新启动计算机。如果没有重新启动计算机我无法禁用触摸屏。但我希望在不重启计算机的情况下禁用触摸屏。 这是我的代码:
int EnableTouchScreen(bool enable)
{
EnableMulTouch(enable);
EnableTouch(enable);
DWORD dwRet = 0;
SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, NULL, NULL, SMTO_NORMAL,1,&dwRet);
return 0;
}
int EnableMulTouch(bool enable)
{
HKEY hkey;
LONG lResult;
DWORD dwtype;
if(IsWin64())
{
lResult = RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("SOFTWARE\\Microsoft\\Wisp\\MultiTouch\\"), 0, KEY_WOW64_64KEY | KEY_ALL_ACCESS |KEY_WRITE, &hkey);
}
else
{
lResult = RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("SOFTWARE\\Microsoft\\Wisp\\MultiTouch\\"), 0, KEY_WOW64_32KEY | KEY_ALL_ACCESS |KEY_WRITE, &hkey);
}
if (lResult == ERROR_SUCCESS)
{
DWORD value = 0;
if(enable)
{
value = 1;
lResult = RegSetValueEx(hkey, _T("MultiTouchEnabled"), 0, REG_DWORD, (PBYTE)&value, sizeof(DWORD));
}
else
{
value = 0;
lResult = RegSetValueEx(hkey, _T("MultiTouchEnabled"), 0, REG_DWORD, (PBYTE)&value, sizeof(DWORD));
}
if (lResult != ERROR_SUCCESS)
{
char strErr[256];
sprintf(strErr, "SetMulTouch --- GetLastError(): %u\n", GetLastError() );
OutputDebugStringA(strErr);
return FALSE;
}
RegCloseKey(hkey);
}
return 0;
}
int EnableTouch(bool enable)
{
HKEY hkey;
LONG lResult;
DWORD dwtype;
if(IsWin64())
{
lResult = RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("SOFTWARE\\Microsoft\\Wisp\\Touch\\"), 0, KEY_WOW64_64KEY | KEY_ALL_ACCESS |KEY_WRITE, &hkey);
}
else
{
lResult = RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("SOFTWARE\\Microsoft\\Wisp\\Touch\\"), 0, KEY_WOW64_32KEY | KEY_ALL_ACCESS |KEY_WRITE, &hkey);
}
if (lResult == ERROR_SUCCESS)
{
DWORD value = 0;
if(enable)
{
value = 1;
lResult = RegSetValueEx(hkey, _T("TouchGate"), 0, REG_DWORD, (PBYTE)&value, sizeof(DWORD));
value = 0;
lResult = RegSetValueEx(hkey, _T("PanningDisabled"), 0, REG_DWORD, (PBYTE)&value, sizeof(DWORD));
}
else
{
value = 0;
lResult = RegSetValueEx(hkey, _T("TouchGate"), 0, REG_DWORD, (PBYTE)&value, sizeof(DWORD));
value = 1;
lResult = RegSetValueEx(hkey, _T("PanningDisabled"), 0, REG_DWORD, (PBYTE)&value, sizeof(DWORD));
}
if (lResult != ERROR_SUCCESS)
{
char strErr[256];
sprintf(strErr, "SetMulTouch --- GetLastError(): %u\n"GetLastError() );
OutputDebugStringA(strErr);
return FALSE;
}
RegCloseKey(hkey);
}
return 0;
}
答案 0 :(得分:0)
我不认为这对程序有帮助,但您可以使用此应用程序通过Windows 8中的快捷方式禁用/启用触摸屏。
http://www.nirsoft.net/utils/device_manager_view.html
以您的语言下载,您必须在创建快捷方式后使用控制台命令
当然你会想要两个,所以制作两个快捷方式。
**(它将是人机界面驱动程序之一,一次禁用一个,直到您发现哪个是触摸屏,如果您不确定,请注意不要一次禁用多个或冒险被锁在电脑外!!)
***不要加+,只是它们之间的什么
答案 1 :(得分:0)
Windows 8.1
DONE!
答案 2 :(得分:0)
感谢matscol,他在这里回答了他自己的类似问题:
How to turn off all touch input at application, window or control level?
仅在应用程序级别禁用它并且现在像注册表黑客那样系统范围内仍然是很好的。
我现在将使用此解决方案,但我会寻找更好的东西。