VB2005 ImeMode 屬性 關於 USB 病毒兩三事...
5月 02

VB2005 會自動切換成全形

VB2005 .Net.瀏覽:[ 259user+133機器人 ]給個回應

我相信應該有些人會遇到跟我一樣的問題

從vb2005編譯出來的textbox,使用者在輸入時會自動切換成全型

甚至在開發視窗裡也會有這樣的問題,這的確是一件很煩人的事

輸入中文倒是沒影響,不過輸入英數就會變成全形

ABCD → ABCD
1234 → 1234

問GOOGLE大神,他說要裝修補程式:KB925488

不過我裝了也沒啥差別,沒有放上來,有需要的人在寫信給我吧!

在藍色小舖上有看到一個解決的方法,有需要的人拿去用看看

我自己呢?跟著做了之後,有些有用有些無用

先宣告一各類別

Visual Basic:
  1. Public Class ImeForm
  2.  
  3.     Inherits System.Windows.Forms.Form
  4.  
  5.     Private Declare Function ImmGetContext Lib "imm32.dll" (ByVal hwnd As Integer) As Integer
  6.     Private Declare Function ImmGetConversionStatus Lib "imm32.dll" (ByVal himc As Integer, ByRef lpdw As Integer, ByRef lpdw2 As Integer) As Integer
  7.     Private Declare Function ImmSimulateHotKey Lib "imm32.dll" (ByVal hwnd As Integer, ByVal dw As Integer) As Integer
  8.  
  9.     Private Sub Form_Load(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Load
  10.         For Each objCtl As Control In Me.Controls
  11.             AddHandler objCtl.GotFocus, AddressOf ControlIME
  12.         Next
  13.     End Sub
  14.  
  15.     Private Sub Form_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
  16.         ControlIME(Me, Nothing)
  17.     End Sub
  18.  
  19.     Private Shared Sub ControlIME(ByVal sender As Object, ByVal e As System.EventArgs)
  20.         Dim lngStatus As Long, lngSt As Long, h As IntPtr = sender.Handle
  21.         ImmGetConversionStatus(ImmGetContext(h), lngStatus, lngSt)
  22.         If lngStatus = 9 Then ImmSimulateHotKey(h, 113)
  23.     End Sub
  24.  
  25. End Class

之後再每一個 Form 中繼承這一個類別

Visual Basic:
  1. Inherits ImeForm

之後再將 Form 中的IME 模式開啟 ON

大家試試看吧!

我之後是將 XP 內建的新注音換成自然輸入,這問題才解決,不過這不是解決事情的辦法啊!

這篇文章沒有標籤..
    

本篇文章引用網址:

其他隨機文章:
  • 使用 CommandBuilder 來自動產生 SQL 陳述式
  • 徵性感清潔女工(女僕)!?
  • [C] 亂數陣列產生器
  • 物件導向無痛入門(3)-屬性(Property)的概念
  • [軟體] FSCapture 超好用又免費的抓圖軟體



  • 寫下回應