PublicModule.bas
上传用户:hyb6888
上传日期:2016-01-24
资源大小:5186k
文件大小:8k
源码类别:

输入法编程

开发平台:

Visual C++

  1. Attribute VB_Name = "PublicModule"
  2. Public Const REG_SZ = 1
  3. Public Const REG_BINARY = 3
  4. Public Const REG_DWORD = 4
  5. Public Const REG_STRING = 7
  6. Public Const HKEY_CURRENT_USER = &H80000001
  7. Public Const KLF_REORDER = &H8
  8. Public Const WM_IME_CHAR = &H286
  9. Public Const WM_CHAR = &H102
  10. Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
  11. Public Declare Function GetFocus Lib "user32" () As Long
  12. Public Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
  13. Public Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
  14. Public Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
  15. Public Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
  16. Public Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
  17. Const MAX_FILENAME_LEN = 260
  18. Public Declare Function FindExecutable Lib "shell32.dll" Alias "FindExecutableA" (ByVal lpFile As String, ByVal lpDirectory As String, ByVal lpResult As String) As Long
  19. Public Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
  20. Public Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long
  21. Public Declare Function GetKeyboardLayoutList Lib "user32" (ByVal nBuff As Long, lpList As Long) As Long
  22. Public Declare Function ImmGetDescription Lib "imm32.dll" Alias "ImmGetDescriptionA" (ByVal hkl As Long, ByVal lpsz As String, ByVal uBufLen As Long) As Long
  23. Public Declare Function ImmIsIME Lib "imm32.dll" (ByVal hkl As Long) As Long
  24. Public Declare Function ActivateKeyboardLayout Lib "user32" (ByVal hkl As Long, ByVal flags As Long) As Long
  25. Public Declare Function GetKeyboardLayout Lib "user32" (ByVal dwLayout As Long) As Long
  26. Public Declare Function GetKeyboardLayoutName Lib "user32" Alias "GetKeyboardLayoutNameA" (ByVal pwszKLID As String) As Long
  27. Public Declare Function LoadKeyboardLayout Lib "user32" Alias "LoadKeyboardLayoutA" (ByVal pwszKLID As String, ByVal flags As Long) As Long
  28. Public KeyPross As Integer
  29. Public Declare Function outsource Lib "TranChiDll.dll" (ByVal code As String, ByVal userSources As String, ByVal base As Long, ByVal goldeNum As Long, ByVal goldeLen As Long) As Boolean
  30. Public Declare Function OutsourceOne Lib "TranChiDll.dll" (ByVal code As String, ByVal userSources As String, ByVal base As Long, ByVal goldeNum As Long, ByVal goldeLen As Long) As Boolean
  31. Public Declare Function ChissToCode Lib "TranChiDll.dll" (ByVal MainCodeLibName As String, ByVal chiss As String, codess As String) As Boolean
  32. Public Declare Function creat Lib "TranChiDll.dll" (ByVal CodeSources As String, ByVal userdefine As String, ByVal ExCodeSource As String, ByVal code As String, ByVal base As Long, ByVal goldeNum As Long, ByVal goldeLen As Long) As Boolean
  33. Public Declare Function creatNotest Lib "TranChiDll.dll" (ByVal CodeSources As String, ByVal userdefine As String, ByVal ExCodeSource As String, ByVal code As String, ByVal base As Long, ByVal goldeNum As Long, ByVal goldeLen As Long) As Boolean
  34. Public Declare Function TestLib Lib "TranChiDll.dll" (ByVal code As String, ByVal base As Long, ByVal goldeNum As Long, ByVal goldeLen As Long, ByVal enchar As String, showmsg As Long, rets As String) As Long
  35. Public Declare Function TestLibEx Lib "TranChiDll.dll" (ByVal code As String, ByVal base As Long, ByVal goldeNum As Long, ByVal goldeLen As Long) As Boolean
  36. Public Declare Function ToolTranChar Lib "TranChiDll.dll" (ByVal fileName As String, ByVal num As Long, ByVal cc As String, ByVal tranCh As String) As Long
  37. Public Declare Function SetOrderIME Lib "TranChiDll.dll" (ByVal instHKL As Long) As Integer
  38. Public Const MAX_PATH = 260
  39. Public Type FILETIME
  40.         dwLowDateTime As Long
  41.         dwHighDateTime As Long
  42. End Type
  43. Public Type WIN32_FIND_DATA
  44.         dwFileAttributes As Long
  45.         ftCreationTime As FILETIME
  46.         ftLastAccessTime As FILETIME
  47.         ftLastWriteTime As FILETIME
  48.         nFileSizeHigh As Long
  49.         nFileSizeLow As Long
  50.         dwReserved0 As Long
  51.         dwReserved1 As Long
  52.         cFileName As String * MAX_PATH
  53.         cAlternate As String * 14
  54. End Type
  55. Public Function myfindfile(sFile As String) As String
  56.    Dim i As Integer, hfind As Long
  57.    Dim s2 As WIN32_FIND_DATA
  58.    'Check if the file exists
  59.    If Dir(sFile) = "" Or sFile = "" Then
  60.         myfindfile = ""
  61.     End If
  62.    'Create a buffer
  63.    'Retrieve the name and handle of the executable, associated with this file
  64.    hfind = FindFirstFile(sFile, s2)
  65.    If hfind = INVALID_HANDLE_VALUE Then
  66.        myfindfile = ""
  67.    Else
  68.        myfindfile = sFile
  69.         FindClose hfind
  70.    End If
  71. End Function
  72. '测试字符串的长度,中文占两个,英文一个
  73. Function MyLen(ss As String) As Integer
  74. Dim lon As Integer
  75. Dim s1 As String
  76. Dim i As Integer, t As Integer
  77. i = 0
  78. t = 0
  79. lon = Len(ss)
  80. While i < lon
  81.  s1 = MyGetchar(ss, i)
  82.  If Asc(s1) < 0 Or Asc(s1) > 257 Then
  83.   t = t + 2
  84.  Else
  85.   t = t + 1
  86.  End If
  87.  i = i + 1
  88. Wend
  89. MyLen = t
  90. End Function
  91. Function MyGetchar(ss As String, i As Integer) As String
  92.  Dim st As String
  93.   st = Chr(Asc(Right(ss, Len(ss) - i))) '从0开始
  94.  MyGetchar = st
  95. End Function
  96. Function RegQueryStringValue(ByVal hKey As Long, ByVal strValueName As String) As String
  97.     Dim lResult As Long, lValueType As Long, strBuf As String, lDataBufSize As Long
  98.     
  99.     lResult = RegQueryValueEx(hKey, strValueName, 0, lValueType, ByVal 0, lDataBufSize)    '查询类型
  100.     If lResult = 0 And (REG_SZ = lValueType Or REG_STRING = lValueType) And lDataBufSize > 0 Then
  101.             strBuf = String(lDataBufSize, Chr$(0))
  102.             lResult = RegQueryValueEx(hKey, strValueName, 0, 0, ByVal strBuf, lDataBufSize)
  103.             If lResult = 0 Then
  104.                 RegQueryStringValue = Left$(strBuf, InStr(1, strBuf, Chr$(0)) - 1)
  105.             End If
  106.     End If
  107. End Function
  108. Public Sub SaveRegLong(hKey As Long, strPath As String, strValue As String, strData As String)
  109.     Dim ret
  110.     RegCreateKey hKey, strPath, ret
  111.     RegSetValueEx ret, strValue, 0, REG_DWORD, CLng(strData), 4
  112.     RegCloseKey ret
  113. End Sub
  114. Function ReadRegString(hKey As Long, strPath As String, strValue As String)
  115.     Dim ret
  116.     RegOpenKey hKey, strPath, ret
  117.     ReadRegString = RegQueryStringValue(ret, strValue)
  118.     RegCloseKey ret
  119. End Function
  120. Function WriteRegString(hKey As Long, strPath As String, ByVal strValueName As String, strData As String)
  121.     Dim ret
  122.     RegCreateKey hKey, strPath, ret
  123.     RegSetValueEx ret, strValueName, 0, REG_SZ, ByVal strData, MyLen(strData)
  124.     RegCloseKey ret
  125. End Function
  126. Sub CheckAdd(ms As Integer)
  127. Dim EnC As String, ChiC As String, ss As String, temss As String
  128. Dim path As String
  129. ChiC = ReadRegString(HKEY_CURRENT_USER, "Softwarejsime", "ChiCodeEnd")
  130. EnC = ReadRegString(HKEY_CURRENT_USER, "Softwarejsime", "EnCodeEnd")
  131. If (ChiC <> "") Then
  132.     
  133.     temss = "               "
  134.     ChissToCode App.path & "MainCode.txt", ChiC, temss
  135.     ss = ChiC + "  (  " + Left(temss, 4) + "  )"
  136.      
  137.      EnC = InputBox("是否要把下面的词语加入库中" + Chr(13) + Chr(13) + ss, "增加词库", temss)
  138.      If (EnC <> "") Then
  139.          path = App.path & "userSource.txt"
  140.          Open path For Append As #1      ' 打开输入文件。
  141.          Print #1, EnC & " " & ChiC
  142.          Close #1    ' 关闭文件。
  143.             
  144.          If (creatNotest(App.path & "CodeSource.txt", App.path & "userSource.txt", App.path & "winpy.txt", App.path & "Code.txt", 64, 27, 4)) Then
  145.             MsgBox "生成词典失败"
  146.             End
  147.          Else
  148.             SaveRegLong HKEY_CURRENT_USER, "Software\jsime", "jsime", "55"
  149.          End If
  150.     
  151.      End If
  152.      
  153.      WriteRegString HKEY_CURRENT_USER, "Softwarejsime", "ChiCodeEnd", ""
  154.      WriteRegString HKEY_CURRENT_USER, "Softwarejsime", "EnCodeEnd", ""
  155.      If (ms = 1) Then MsgBox "新增词可用了", , EnC & " --" & ChiC
  156.      End
  157. End If
  158. End Sub