LabVIEW-用win32 api關閉輸入法(上)

更新於 2023/02/20閱讀時間約 3 分鐘
  Windows系統帶GUI的程式在使用時最大的困擾之一就是開啟之後輸入方式是輸入法而不是英文數字,特別是在用在工業生產時。網路上可以找到非常多關於如何用win32 api關閉輸入法的文章,但是這些方法在win10和win11有點小問題(win8未知),就是得要用滑鼠點工作列右邊的ENG才能切換回輸入法,雖然有快速鍵alt+shift可以用,但知道的人不多。在win7之前是可以直接ctrl+空白鍵直接切回輸入法,操作的流暢度差了不少。
  我另外找到一個較細膩的方法,可以直接控制目標的輸入法狀態。上篇紀錄兩種作法和所有語言都通用的流程(大概),下篇紀錄如何在LabVIEW上實現這些功能。
  一般看到關閉輸入法的流程是這樣,先取得hwnd也就是視窗控制碼,可以經由user32.dll的兩個函式之一取得:(1)取得最上層視窗,
HWND GetForegroundWindow();
或(2)取得指定title名稱的視窗(函式結尾A是ANSI,W是unicode)。
HWND FindWindowA(
  [in, optional] LPCSTR lpClassName,
  [in, optional] LPCSTR lpWindowName
);
  接著載入英文鍵盤配置,這邊msdn提到win8後如果目前的進程沒有擁有具有鍵盤焦點的視窗,此函式就不會有任何作用,要先用GetFocus()取得焦點。我用第一種方法得到hwnd沒遇到函式失效,但是全部的視窗鍵盤配置都一起被改變,而不是只有指定hwnd的視窗。
HKL LoadKeyboardLayoutA(
  [in] LPCSTR pwszKLID,
  [in] UINT   Flags
);
  最後對hwnd指向的視窗傳送WM_INPUTLANGCHANGEREQUEST指令(對應的機碼是0x0050),把鍵盤配置改成英文(機碼0x0409)。
LRESULT SendMessage(
  [in] HWND   hWnd,
  [in] UINT   Msg,
  [in] WPARAM wParam,
  [in] LPARAM lParam
);
  要確認是否切換完成可以用GetKeyboardLayout()來確認。
  另一個方法是透過imm32.dll的函式關閉同PID的視窗的輸入法,如果要關其他PID的輸入法會更複雜點,暫時不在我的應用範圍先不管。首先一樣要取得目前視窗的控制碼hwnd,然後取得輸入法控制碼HIMC。
HIMC ImmGetContext(
       HWND unnamedParam1
);
   然後設定輸入法的狀態。正確的關閉輸入法後工具列輸入法旁的icon會變成"A"或"英"。另外也可以用ImmGetOpenStatus()來取得輸入法狀態,開啟會回傳,關閉回傳0。
BOOL ImmSetOpenStatus(
       HIMC unnamedParam1,
       BOOL unnamedParam2
);
  這個方法在鍵盤配置為日文時也有作用,應該是通用在各種鍵盤配置。
即將進入廣告,捲動後可繼續閱讀
為什麼會看到廣告
avatar-img
6會員
63內容數
ktest
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
矢掛町位於岡山縣西南部,氣候溫暖​​,春天,您可以在小田川沿岸和嵐山欣賞櫻花和油菜花盛開的日本鄉村美景;夏日的夜晚,星田川沿岸、美山川沿岸的宇內螢火蟲公園裡,散發著微弱光芒的螢火蟲瘋狂地舞動;秋天,被譽為名勝的大通寺的池塘噴泉觀賞庭園,銀杏樹等紅葉點綴其間,景色十分美麗;冬天,從町內或附近的展望台可
Thumbnail
千萬不要覺得經濟獨立是一切解案,父母的無能正在藉由你的「懂事」來開脫。
Thumbnail
題目敘述 Triangle 題目會給我們一個三角形的二維陣列triangle ,每個元素分別代表每個格子的成本,請問我們從最頂端到底部的下墜路徑的最小成本總和是多少? 每次下墜到下一排的時候,可以有兩種選擇: 1.往左下方的格子點移動。 2.往右下方的格子點移動。 測試範例 Examp
Thumbnail
【日本旅遊】東京森呼吸~澀谷展望台、輕井澤慢漫遊、LAVIEW列車、乙晚五星飯店五日 ⬇️完整說明網址⬇️ 👉https://idragon.info/31jsX #Pp貓 #日本旅遊 #澀谷 #輕井澤慢 #LAVIEW列車 #東京 #東京旅遊 #澀谷天空展望台 #西湖
Thumbnail
LabVIEW FTP上傳檔案與建立資料夾
Thumbnail
生命要向前看,卻要向後才能夠理解。 《袒露的心》這本書陪伴我上週的整個週末。很適合每個內在還沒完全長大、渴望被愛的大人(或其實還是小孩)的書。 七月底的某個午後,和平路老師約在一間啤酒餐廳見面。還記
Thumbnail
真正的台灣編輯實際上又都在忙些什麼呢?任職於台灣某出版社的編輯小姐Yuli,透過部落格的圖文漫畫修改匯集成冊的輕鬆閱讀圖文作品《編輯小姐Yuli的繪圖日誌》,敘述活生生和血淋淋的台灣編輯生態,好的壞的;代理國外強作大賣或是步步耕耘本土作家之間存在著什麼不同點?讓Yuli用她多年的編輯經驗來告訴你。
Thumbnail
<p>被復仇蒙蔽雙眼的真由、被貪婪反將一軍的百合、被色慾絆倒的正吾及諒一、被上個世代的恩怨犧牲的直巳,在《賢者之愛》中每個人都被慾望弄得遍體鱗傷。有人取得過暫時的勝利、有人一夜之間報復成功,但沒有人真正地感到片刻的幸福。</p>
Thumbnail
<p>在山田詠美筆下,女性從來就不是配角、更無法視為弱者。即便一開始屈居下風,也會透過漫長的等待,用最細膩的方法溫柔地復仇。</p>
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
矢掛町位於岡山縣西南部,氣候溫暖​​,春天,您可以在小田川沿岸和嵐山欣賞櫻花和油菜花盛開的日本鄉村美景;夏日的夜晚,星田川沿岸、美山川沿岸的宇內螢火蟲公園裡,散發著微弱光芒的螢火蟲瘋狂地舞動;秋天,被譽為名勝的大通寺的池塘噴泉觀賞庭園,銀杏樹等紅葉點綴其間,景色十分美麗;冬天,從町內或附近的展望台可
Thumbnail
千萬不要覺得經濟獨立是一切解案,父母的無能正在藉由你的「懂事」來開脫。
Thumbnail
題目敘述 Triangle 題目會給我們一個三角形的二維陣列triangle ,每個元素分別代表每個格子的成本,請問我們從最頂端到底部的下墜路徑的最小成本總和是多少? 每次下墜到下一排的時候,可以有兩種選擇: 1.往左下方的格子點移動。 2.往右下方的格子點移動。 測試範例 Examp
Thumbnail
【日本旅遊】東京森呼吸~澀谷展望台、輕井澤慢漫遊、LAVIEW列車、乙晚五星飯店五日 ⬇️完整說明網址⬇️ 👉https://idragon.info/31jsX #Pp貓 #日本旅遊 #澀谷 #輕井澤慢 #LAVIEW列車 #東京 #東京旅遊 #澀谷天空展望台 #西湖
Thumbnail
LabVIEW FTP上傳檔案與建立資料夾
Thumbnail
生命要向前看,卻要向後才能夠理解。 《袒露的心》這本書陪伴我上週的整個週末。很適合每個內在還沒完全長大、渴望被愛的大人(或其實還是小孩)的書。 七月底的某個午後,和平路老師約在一間啤酒餐廳見面。還記
Thumbnail
真正的台灣編輯實際上又都在忙些什麼呢?任職於台灣某出版社的編輯小姐Yuli,透過部落格的圖文漫畫修改匯集成冊的輕鬆閱讀圖文作品《編輯小姐Yuli的繪圖日誌》,敘述活生生和血淋淋的台灣編輯生態,好的壞的;代理國外強作大賣或是步步耕耘本土作家之間存在著什麼不同點?讓Yuli用她多年的編輯經驗來告訴你。
Thumbnail
<p>被復仇蒙蔽雙眼的真由、被貪婪反將一軍的百合、被色慾絆倒的正吾及諒一、被上個世代的恩怨犧牲的直巳,在《賢者之愛》中每個人都被慾望弄得遍體鱗傷。有人取得過暫時的勝利、有人一夜之間報復成功,但沒有人真正地感到片刻的幸福。</p>
Thumbnail
<p>在山田詠美筆下,女性從來就不是配角、更無法視為弱者。即便一開始屈居下風,也會透過漫長的等待,用最細膩的方法溫柔地復仇。</p>