2012-10-02 72 views
0

我試圖在Windows 7或8上爲我的WPF繪圖應用程序啓用/禁用觸摸功能。使用C更新WISP(Windows墨水服務平臺)的註冊表更改

據我搜索,鏈接How to turn off all touch input at application, window or control level?給出了觸摸功能狀態的註冊表的正確位置。

但是,它並沒有受到影響,因爲Windows系統可能沒有被確認的變化。

在我的設想中,User32.dll刷新與SystemParametersInfo需要進行更改而不重新啓動。 但很難弄清楚如何做到這一點,因爲我不知道哪一個SPI_something與WISP有關。

有沒有其他的方法,或者你能幫我做到這一點?

的代碼示例是如下(非常相似於上述的StackOverflow引用鏈路)

  RegistryKey regKey = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Wisp\Touch", true); 
     if (regKey != null) 
     { 
      regKey.SetValue("TouchGate", 0x00000000); // Turn off touch. 
      regKey.Close(); 

      // NOTIFY REGISTRY CHANGES TO WINDOWS 
     } 

回答

1

當前問題的答案如何在應用程序,窗口或對照水平關閉所有觸摸輸入?也給出了一種讓Windows重新讀取註冊表的方法。參見:the answer's internal static void Notify_SettingChange()方法。

SystemParametersInfo中沒有記錄的SPI_ *常量用於觸摸禁用。此外,所有SPI_常量都與可訪問性功能相關 - 而不是像觸摸一般的功能。

+1

感謝您的回答。我沒有意識到Notify_SettingChange是由interop提供的。奇怪的是,它不適用於我(Win8),但它在我手動編輯註冊表值時起作用。 – Youngjae