RawInput能區分哪個硬體產生的訊息
SetHook WH_KEYBOARD_LL 能截獲按鍵,并不再傳下去
但這兩種事件產生的先后次序不定,而且很多時候本行程內無法獲得Hook訊息.
這樣就無法達到禁止某鍵的功能.
請問,如何才能保證總是先RawInput到資料,再Hook得到按鍵資訊?
uj5u.com熱心網友回復:
把那個鍵扣掉
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
其實先后關系不大,系統速度遠快于人機界面回應。如果后者先到,你就存起來等待前者好了。
uj5u.com熱心網友回復:
WinAPIOverride http://jacquelin.potier.free.fr/winapioverride32/?
uj5u.com熱心網友回復:
HOOK為主,只有它才能禁止按鍵,Raw為輔,僅用來判斷是否符合條件的硬體
但實際情況是HOOK經常收不到任何資訊,這時還談什么等待
uj5u.com熱心網友回復:
觸摸鍵盤,難道用刀刻掉觸摸板?況且 鍵盤布局還是動態的
uj5u.com熱心網友回復:
老大,真的沒辦法了嗎?
或者這條路走不通?
網上看到一條資訊說 Raw和Hook同時用 會有沖突,但作者卻原因不明,
在MSDN上微軟也沒有提到沖突問題
不知道還有其它什么思路嗎?
uj5u.com熱心網友回復:
當然有辦法,而且很多種。例如,在設備端,硬體方式,將此鍵印刷連接線切斷;軟體方式,在鍵盤掃描代碼中將此鍵忽略。
在主機端,藍牙鍵盤驅動程式中,忽略此簡碼。
……
不要相信什么唯一方法,不可解的說詞。
uj5u.com熱心網友回復:
硬體方式: 觸摸鍵盤,鍵盤布局還是動態的,就是說一個鍵的物體位置,在不同設定狀態下,會發出不同的按鍵虛擬碼,
而我需要的是禁止它的某個按鍵虛擬碼,而不是要禁止這個位置的鍵!
軟體方式,要是我能在HOOK鍵盤鉤子中得到這個按鍵,那就不存在本版問題了!
在單獨的HOOK下是可以得到的,但無法區分硬體ID,所以要加上Raw,
但加了Raw,HOOK程序又經常得不到資料,那還談什么忽略呢!
即使偶爾得到資料,卻在Raw前得到,若是長時間等待Raw的資料,很容易掛掉.
理想的程序,應該是Raw先得到資料,立即重繪ID,再Hook得到鉤子訊息,根據RawID來進行處理
至于修改藍牙驅動....這個感覺好像用VB做不合適吧?俺對硬體不太懂 :(
本主題的目的是希望找一種通用的做法,能在Windows API級別就能實作的方法.
既然現有API兩個功能都已經能實作,
那剩下的問題就是如何保證處理次序的問題了.
uj5u.com熱心網友回復:
覺得你這件事情根本的應該是在外圍設備上進行改造,用過單片機或者別的什么獲取輸入資訊然后再以網路或者串口之類的,定義通訊協議協議告訴windows程式。windows本來就沒打算區分鍵盤和滑鼠的輸入設備。我曾經天真的想,接入兩個滑鼠,是不是會有兩個指標?
uj5u.com熱心網友回復:
這里是API板塊啊,不是硬體區!
藍牙,藍牙,藍牙設備!
觸摸,觸摸,觸摸動態鍵盤!
動手能力強的小伙伴們,怎么改造???
uj5u.com熱心網友回復:
兩個滑鼠,為什么不能有兩個指標?要敢于想啊!uj5u.com熱心網友回復:
4樓可能是正解。
uj5u.com熱心網友回復:
咱想,但微軟不這么做,能咋整?
uj5u.com熱心網友回復:
建議你重新看一下帖子,Raw!
雖然俺自己因為不感興趣所以沒做個,但感覺自繪多個滑鼠應該不是很難吧?網上C的例子很多啊
uj5u.com熱心網友回復:
兩個滑鼠,為什么不能有兩個指標?要敢于想啊!
咱想,但微軟不這么做,能咋整?
建議你重新看一下帖子,Raw!
雖然俺自己因為不感興趣所以沒做個,但感覺自繪多個滑鼠應該不是很難吧?網上C的例子很多啊
我說的是微軟本身沒打算這么玩,當然,咱不理會微軟自繪不是做不到,條條大路通羅馬,再不行自己寫底層驅動了。但是如果有這個普遍需求微軟早實作了,之所以現在這個樣子就是基本沒人有這個需求。
我的意見不是說你做不到,是說有沒有必要用這么小眾化的方案做。
uj5u.com熱心網友回復:
兩個滑鼠,為什么不能有兩個指標?要敢于想啊!
咱想,但微軟不這么做,能咋整?
建議你重新看一下帖子,Raw!
雖然俺自己因為不感興趣所以沒做個,但感覺自繪多個滑鼠應該不是很難吧?網上C的例子很多啊
我說的是微軟本身沒打算這么玩,當然,咱不理會微軟自繪不是做不到,條條大路通羅馬,再不行自己寫底層驅動了。但是如果有這個普遍需求微軟早實作了,之所以現在這個樣子就是基本沒人有這個需求。
我的意見不是說你做不到,是說有沒有必要用這么小眾化的方案做。
不明白你的意思,是說我的帖子發的沒意義?
還是說多滑鼠的顯示對微軟來說沒意義?
微軟提供了工具,但想要用工具做什么,這是看你自己的想法啊
有想法的話,也可以不去做,但不能就此武斷的認為肯定做不到.
微軟的功能早已提供,可惜現在的谷歌不能用,否則的話,你要想多滑鼠,上面一大把現成的例子,
當然,VB版沒人想這樣做(偶也是),所以VB的例子幾乎看不到,呵呵:)
同樣悲催的,我現在本帖的想法有了,但同樣沒見到有誰用VB做過,
所以自己嘗試做,出了這么多問題,才來這里與大家交流一番,
看看問題到底出在哪里?或者有沒有新的思路.
在這里,若得到"做得到"的答復,是最開心的,朝聞道,夕可死啊 :)
但任何"肯定做不到的"答復,俺會持保留意見(留個希望的火種,呵呵)
uj5u.com熱心網友回復:
兩個滑鼠,為什么不能有兩個指標?要敢于想啊!
咱想,但微軟不這么做,能咋整?
建議你重新看一下帖子,Raw!
雖然俺自己因為不感興趣所以沒做個,但感覺自繪多個滑鼠應該不是很難吧?網上C的例子很多啊
我說的是微軟本身沒打算這么玩,當然,咱不理會微軟自繪不是做不到,條條大路通羅馬,再不行自己寫底層驅動了。但是如果有這個普遍需求微軟早實作了,之所以現在這個樣子就是基本沒人有這個需求。
我的意見不是說你做不到,是說有沒有必要用這么小眾化的方案做。
不明白你的意思,是說我的帖子發的沒意義?
還是說多滑鼠的顯示對微軟來說沒意義?
微軟提供了工具,但想要用工具做什么,這是看你自己的想法啊
有想法的話,也可以不去做,但不能就此武斷的認為肯定做不到.
微軟的功能早已提供,可惜現在的谷歌不能用,否則的話,你要想多滑鼠,上面一大把現成的例子,
當然,VB版沒人想這樣做(偶也是),所以VB的例子幾乎看不到,呵呵:)
同樣悲催的,我現在本帖的想法有了,但同樣沒見到有誰用VB做過,
所以自己嘗試做,出了這么多問題,才來這里與大家交流一番,
看看問題到底出在哪里?或者有沒有新的思路.
在這里,若得到"做得到"的答復,是最開心的,朝聞道,夕可死啊 :)
但任何"肯定做不到的"答復,俺會持保留意見(留個希望的火種,呵呵)
沒有什么做不到的,前面說了,不論是利用windows的一些底層api還是自己寫驅動甚至拋棄windows自己寫一套,都行,條條道路通羅馬。主要看做這件事情的成本以及解決的問題,或者說解決問題帶來的收益。前面舉雙滑鼠這個例子,不是為了挑戰技術實作,只是為了說實作它的意義不大成本偏高,實作它基本沒有收益。所以微軟沒干這件事情,我曾經想了想后面也沒打算做,甚至連研究怎樣能實作的時間成本都懶得花。
我的思維還是比較看重做一件事情的經濟性。當然,很多人鄙視我的這種思維方式。
uj5u.com熱心網友回復:
沒有什么做不到的,前面說了,不論是利用windows的一些底層api還是自己寫驅動甚至拋棄windows自己寫一套,都行,條條道路通羅馬。主要看做這件事情的成本以及解決的問題,或者說解決問題帶來的收益。前面舉雙滑鼠這個例子,不是為了挑戰技術實作,只是為了說實作它的意義不大成本偏高,實作它基本沒有收益。所以微軟沒干這件事情,我曾經想了想后面也沒打算做,甚至連研究怎樣能實作的時間成本都懶得花。
我的思維還是比較看重做一件事情的經濟性。當然,很多人鄙視我的這種思維方式。
可惜,本帖的功能,到現在就做不到.
用的都是微軟的,但問題到底出在哪里完全沒思路,MSDN上也找不到.
難道每次都是我第一個遇到的問題?
請教各位老大,是否知道問題出在哪里?或是我思路根本不對?
uj5u.com熱心網友回復:
沒有什么做不到的,前面說了,不論是利用windows的一些底層api還是自己寫驅動甚至拋棄windows自己寫一套,都行,條條道路通羅馬。主要看做這件事情的成本以及解決的問題,或者說解決問題帶來的收益。前面舉雙滑鼠這個例子,不是為了挑戰技術實作,只是為了說實作它的意義不大成本偏高,實作它基本沒有收益。所以微軟沒干這件事情,我曾經想了想后面也沒打算做,甚至連研究怎樣能實作的時間成本都懶得花。
我的思維還是比較看重做一件事情的經濟性。當然,很多人鄙視我的這種思維方式。
可惜,本帖的功能,到現在就做不到.
用的都是微軟的,但問題到底出在哪里完全沒思路,MSDN上也找不到.
難道每次都是我第一個遇到的問題?
請教各位老大,是否知道問題出在哪里?或是我思路根本不對?
至少有一個方法肯定可以做到:
就是從“鍵盤驅動”層截獲按鍵資訊,然后攔截或屏蔽某些需要處理的按鍵資訊。
uj5u.com熱心網友回復:
可惜,本帖的功能,到現在就做不到.
用的都是微軟的,但問題到底出在哪里完全沒思路,MSDN上也找不到.
難道每次都是我第一個遇到的問題?
請教各位老大,是否知道問題出在哪里?或是我思路根本不對?
至少有一個方法肯定可以做到:
就是從“鍵盤驅動”層截獲按鍵資訊,然后攔截或屏蔽某些需要處理的按鍵資訊。
嗯,偶很肯定一個方法能做到:
就是從"鍵盤驅動"撰寫人員層截獲按鍵資訊,然后攔截或屏蔽某些需要處理的按鍵資訊。
等偶有錢,就讓寫驅動的家伙直接給我定制一套,哈哈
可惜,俺請不起寫驅動的,俺也不懂他寫的驅動啊 :(
這次是這個藍牙鍵盤,下次要是換一個其它的呢?
總不能每次都寫一套驅動吧?
所以,希望找一種通用的辦法...
uj5u.com熱心網友回復:
沒有什么做不到的,前面說了,不論是利用windows的一些底層api還是自己寫驅動甚至拋棄windows自己寫一套,都行,條條道路通羅馬。主要看做這件事情的成本以及解決的問題,或者說解決問題帶來的收益。前面舉雙滑鼠這個例子,不是為了挑戰技術實作,只是為了說實作它的意義不大成本偏高,實作它基本沒有收益。所以微軟沒干這件事情,我曾經想了想后面也沒打算做,甚至連研究怎樣能實作的時間成本都懶得花。
我的思維還是比較看重做一件事情的經濟性。當然,很多人鄙視我的這種思維方式。
可惜,本帖的功能,到現在就做不到.
用的都是微軟的,但問題到底出在哪里完全沒思路,MSDN上也找不到.
難道每次都是我第一個遇到的問題?
請教各位老大,是否知道問題出在哪里?或是我思路根本不對?
也許真的是你第一個遇到,至少需要同時接入多個鍵盤,然后固定識別單個鍵盤輸入的需求目前我是第一次見到。都說了,微軟本身沒打算完美支持這個做法,你還硬要在微軟的基礎上做有點勉強了。這個實作建議視通過外部設備實作,比如單片機來對接多個鍵盤,然后再和你的PC以特定協議對接。或者的連接兩個樹莓派,分別接一個鍵盤,然后兩個派分別收到鍵盤輸入的時候再以一定的協議告訴主機,主機就能區分是哪個鍵盤的輸入了。
當然,這只是建議,不排除有我不知道的方法可以在windows平臺上完美解決這個問題。uj5u.com熱心網友回復:
沒有什么做不到的,前面說了,不論是利用windows的一些底層api還是自己寫驅動甚至拋棄windows自己寫一套,都行,條條道路通羅馬。主要看做這件事情的成本以及解決的問題,或者說解決問題帶來的收益。前面舉雙滑鼠這個例子,不是為了挑戰技術實作,只是為了說實作它的意義不大成本偏高,實作它基本沒有收益。所以微軟沒干這件事情,我曾經想了想后面也沒打算做,甚至連研究怎樣能實作的時間成本都懶得花。
我的思維還是比較看重做一件事情的經濟性。當然,很多人鄙視我的這種思維方式。
可惜,本帖的功能,到現在就做不到.
用的都是微軟的,但問題到底出在哪里完全沒思路,MSDN上也找不到.
難道每次都是我第一個遇到的問題?
請教各位老大,是否知道問題出在哪里?或是我思路根本不對?
也許真的是你第一個遇到,至少需要同時接入多個鍵盤,然后固定識別單個鍵盤輸入的需求目前我是第一次見到。都說了,微軟本身沒打算完美支持這個做法,你還硬要在微軟的基礎上做有點勉強了。這個實作建議視通過外部設備實作,比如單片機來對接多個鍵盤,然后再和你的PC以特定協議對接。或者的連接兩個樹莓派,分別接一個鍵盤,然后兩個派分別收到鍵盤輸入的時候再以一定的協議告訴主機,主機就能區分是哪個鍵盤的輸入了。
當然,這只是建議,不排除有我不知道的方法可以在windows平臺上完美解決這個問題。
老大,不是俺不想解決問題,
//單片機來對接多個鍵盤,然后再和你的PC以特定協議對接。
//或者的連接兩個樹莓派,分別接一個鍵盤,然后兩個派分別收到鍵盤輸入的時候再以一定的協議告訴主機
單片機讀藍牙鍵盤?寫驅動?
樹莓派?What?
這些...俺真心不懂啊!
uj5u.com熱心網友回復:
多輸入設備的識別功能,微軟是早在XP時代就加入的功能,
十幾年過去,現在國外那些編程語言.理念,概念什么的早已變成俺,不明白,看不懂,
不知道它們已經超脫時代多少年的發展了.
難道,連一個這么簡單的功能都沒人想到過去實作嗎?
可惜,谷歌用不了...
國內的百度翻來覆去,一直沒找到解決思路誒
uj5u.com熱心網友回復:
多輸入設備的識別功能,微軟是早在XP時代就加入的功能,
十幾年過去,現在國外那些編程語言.理念,概念什么的早已變成俺,不明白,看不懂,
不知道它們已經超脫時代多少年的發展了.
難道,連一個這么簡單的功能都沒人想到過去實作嗎?
可惜,谷歌用不了...
國內的百度翻來覆去,一直沒找到解決思路誒
沒有普遍應用場景的東西,再簡單也沒有人花成本去實作。既然是小眾需求注定不會得到主流支持,需要自己多花力氣。還有就是如果一條路花了一定時間和成本以后發現還是沒走通就要考慮其他路徑了,否則成本越來越高還解決不了問題。
搞技術的容易鉆牛角尖,還轉不過來。要增加一些商人的思維,盡管這種思維被技術人員所不齒。轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/55874.html
標籤:API
上一篇:VB 串口通信
下一篇:VB對話框

