매크로/모듈(Module)

입력 모드를 영문(알파벳)으로 설정

고추탄 2025. 5. 9. 14:52

 

 

한영 전환, 입력 모드 반환 사용자 정의 함수

Chat-GPT o4-mini-high 버전을 이용해 생성한 코드다. 한글/영문 입력 모드를 반환하거나, 영문 모드, 한글 모드, 영문은 한글로, 한글은 영문으로 토글하는 코...

cafe.naver.com

Option Explicit

#If VBA7 Then

    Private Declare PtrSafe Function GetForegroundWindow Lib "user32" () As LongPtr
    Private Declare PtrSafe Function ImmGetContext Lib "imm32.dll" (ByVal hWnd As LongPtr) As LongPtr
    Private Declare PtrSafe Function ImmReleaseContext Lib "imm32.dll" (ByVal hWnd As LongPtr, ByVal hIMC As LongPtr) As Long
    Private Declare PtrSafe Function ImmGetConversionStatus Lib "imm32.dll" (ByVal hIMC As LongPtr, ByRef lpfdwConversion As Long, ByRef lpfdwSentence As Long) As Long
    Private Declare PtrSafe Function ImmSetConversionStatus Lib "imm32.dll" (ByVal hIMC As LongPtr, ByVal fdwConversion As Long, ByVal fdwSentence As Long) As Long
    
#Else

    Private Declare Function GetForegroundWindow Lib "user32" () As Long
    Private Declare Function ImmGetContext Lib "imm32.dll" (ByVal hWnd As Long) As Long
    Private Declare Function ImmReleaseContext Lib "imm32.dll" (ByVal hWnd As Long, ByVal hIMC As Long) As Long
    Private Declare Function ImmGetConversionStatus Lib "imm32.dll" (ByVal hIMC As Long, ByRef lpfdwConversion As Long, ByRef lpfdwSentence As Long) As Long
    Private Declare Function ImmSetConversionStatus Lib "imm32.dll" (ByVal hIMC As Long, ByVal fdwConversion As Long, ByVal fdwSentence As Long) As Long

#End If


Private Sub UserForm_Initialize()
  
 '입력 모드를 영문(알파벳)으로 설정
  SetInputMode 0

End Sub


Private Sub SetInputMode(ByVal mode As Long)
    #If VBA7 Then
        Dim hWnd         As LongPtr
        Dim hIMC         As LongPtr
    #Else
        Dim hWnd         As Long
        Dim hIMC         As Long
    #End If
    Dim convMode     As Long
    Dim sentenceMode As Long

    hWnd = GetForegroundWindow()
    hIMC = ImmGetContext(hWnd)
    If hIMC <> 0 Then
        ImmGetConversionStatus hIMC, convMode, sentenceMode
        ImmSetConversionStatus hIMC, mode, sentenceMode
        ImmReleaseContext hWnd, hIMC
    End If
End Sub

LIST