精華區beta Liu 關於我們 聯絡資訊
※ 引述《ChrisTorng (ChrisTorng)》之銘言: : Dev 0624 在 Vista 下,目前發現有 : Windows Live Messenger 8.5.1238.0601 英文版與 : Visual Studio 2005 SP1 繁體中文版 : 任何一個送字方法均無效,包括剪貼簿。 : 另外印象中,以前開啟偽蝦米時, : 按 Ctrl-Shift 可切到系統的官蝦與新注音,而偽蝦自己會關掉。 : 現況是按 Ctrl-Shift 時,官蝦/新注音會出來, : 但偽蝦還是在,而偽蝦會攔截掉所有的按鍵,官蝦/新注音並不會收到按鍵。 經測試 在 Vista 的 Windows Live Messenger 8.1.0178 中文版上是可以正常輸入的 另 Space 和 Backspace 鍵的作用亦是正常的 但目前手邊沒有 8.5 版和 VS2005 可以測試 不確定問題所在,有機會會再測試 至於和系統輸入法衝突的問題 是因為我還沒有測試關於在 Vista 下控制系統輸入法的這個部份 (不過初步測試發現,原本在 XP 下控制的方式在 Vista 下行不通 ><) * * * * 目前已知的 Bug,是 Dev0624 在剪貼簿送字時 會有目標視窗尚未執行貼上的動作前,剪貼簿的內容就被復原了 因此會貼上先前剪貼簿內的文字,而非想輸入的文字 (以下是和程式設計有關的內容,沒有興趣的人可以跳過 ^^) 問題發生的原因是這樣的 Vista 非常神奇的禁止了 VB 的 Sendkeys 函數的運作 因此,為了修正這個問題 我改成使用 Windows API : SendInput 函數來實作 Sendkeys 但是目前遇到的瓶頸是,原本的 VB Sendkeys 有第二個參數 Wait 可以在確認送出的按鍵已經被處理後才返回函數 但使用 SendInput 實作時,卻做不到一樣的效果 因此我查了很多文件,是有找到一些解決辦法,可是不知道為什麼我做出來就是不能用 比方說 ----------------------- If Wait Then Do While PeekMessage(KeyboardMsg, 0, WM_KEYFIRST, WM_KEYLAST, PM_REMOVE) TranslateMessage KeyboardMsg DispatchMessage KeyboardMsg Loop End If ---------------------- 這個解決方法最常見,但一樣沒用 ^^" 還有一個解決辦法是用 SendMessage 來實作,但是這個函數的相容性較差 我會繼續查查看有沒有什麼好的解決辦法(當然,也希望有前輩可以提示一些作法) 但是在這個問題還沒有解決之前,我目前的折衷辦法是 只好讓 Vista 下的剪貼簿送字不會自動還原原本剪貼簿的內容 心得...Vista 真是麻煩 >"< -- ╭═╮ ╭═╮ ║▌║ ╭═╮╭╮║▌╭═╮╭═══╮ ║▌║ ║▌║║║║▌ ╮║▌╭╮║ ║˙╰═╮║˙╰╯║║˙╭╮║║˙╰╯╯ ╰═══╯╰═══╯╰═╯╰╯╰═══╯ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.73.172.87 ※ 編輯: luke1209 來自: 203.73.172.87 (06/30 18:08)
linpien:先推再說了! 06/30 18:38