2013-08-28 42 views
2

我正在使用摩托羅拉MC67與Windows Mobile 6.0和寫在C#精簡版框架。我如何禁用Windows移動或MC67鍵重複

我想禁用鍵重複,所以如果你長按「enter」例如,我不會得到更多的一個「進入」按。我搜查了摩托羅拉手冊,並嘗試給出的建議here,做:

Registry.SetValue(@"HKCU\ControlPanel\Keybd", "RepeatRate", "1000000"); 

但沒有用。

任何人都可以幫助我嗎?

只是要清楚:我有權從我的代碼中更改註冊表,但即使在將速率更改爲最大可能值後,它也會忽略註冊表中的值。

回答

1

如果這個密鑰是一個軟件按鈕,您可以禁用按鈕:

private void btnOK_Clicked(object sender, EventArgs e) { 
    btnOK.Enabled = false; 
    try { 
    // Your code here 
    } finally { 
    btnOK.Enabled = true; 
    } 
} 

如果這是您的設備上的物理按鍵,我真的不知道該怎麼去和設置「點擊率「(或任何它被稱爲),但你可以嘗試在你的例程周圍添加一個lock

private object m_lock = new object(); 

private void textbox_Changed(object sender, EventArgs e) { 
    lock (m_lock) { 
    // Your code here 
    } 
} 

但我不知道這是否有幫助。我無法測試,因爲我的設備似乎沒有這個問題。

+0

謝謝jp2code,但是如果我要做到這一點,我將不得不做到每一個我建立的形式,或每一個控制,這不是一個新的項目,這是一個10年的項目被移動支持MC67 ......很多工作,但這將是一個不錯的最後的手段。謝謝你的努力 –

1

硬件鍵盤可能不在乎註冊表設置,硬件驅動程序是OEM特定的。

RepeatRate是a)從高到高(外部規格),b)將在重新啓動後首先進行,c)可能只能控制軟件鍵盤。

這是一個長長的線索,最終來到一個IOCtl解決方案:http://social.msdn.microsoft.com/Forums/en-US/5f322f80-1dba-477e-a77e-d667e8f2031f/keyboard-repeat-rate

+0

謝謝你josef,儘管它沒有幫助,我已經發布了這個鏈接在我的問題:)謝謝你的努力無論如何 –

+0

因此,你已經閱讀:「延遲之前第一延遲 - 最小值:250,最大值: 1000(InitialDelay) 重複速率 - MIN:0,MAX:30(RepeatRate) 如果重複速率在CP中設置爲0,則不會在標準鍵盤或d-pad的CP圖標選擇中重複,因此它必須是它。」然後使用10000重複?!如果您將RepeatRate設置爲0,則重複功能將被禁用。您是否還嘗試過IOCtl? – josef