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

输入法编程

开发平台:

Visual C++

  1. Attribute VB_Name = "ISNTMD"
  2.      
  3. '带DLL与不带是不同的,不带DLL按常规查找,带DLL要到注册表中找相近的,
  4. '与到SYSTEM目录找,没找到则会出错
  5. '如果出现找不到.DLL文件可到把DLL去掉试试
  6. Public DilamicWin As myWinclass
  7. Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (lpVersionInformation As OSVERSIONINFO) As Long
  8. Public Type OSVERSIONINFO
  9.    dwOSVersionInfoSize As Long
  10.    dwMajorVersion As Long
  11.    dwMinorVersion As Long
  12.    dwBuildNumber As Long
  13.    dwPlatformId As Long
  14.    szCSDVersion As String * 128
  15. End Type
  16.    
  17. Public Const VER_PLATFORM_WIN32s = 0
  18. Public Const VER_PLATFORM_WIN32_WINDOWS = 1
  19. Public Const VER_PLATFORM_WIN32_NT = 2
  20. Public Const SW_SHOW = 5
  21. Public Const SW_SHOWDEFAULT = 10
  22. Public Const SW_SHOWMAXIMIZED = 3
  23. Public Const SW_SHOWMINIMIZED = 2
  24. Public Const SW_SHOWMINNOACTIVE = 7
  25. Public Const SW_SHOWNA = 8
  26. Public Const SW_SHOWNOACTIVATE = 4
  27. Public Const SW_SHOWNORMAL = 1
  28.   Declare Function GetParent Lib "user32" (ByVal hwnd As Long) As Long
  29.   Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
  30.  Declare Function SetFocus Lib "user32" (ByVal hwnd As Long) As Long
  31.  Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
  32.  Declare Function GetKeyboardState Lib "user32" (pbKeyState As KeyboardBytes) As Long
  33.  Declare Function UpdateWindow Lib "user32" (ByVal hwnd As Long) As Long
  34.  Declare Function SetActiveWindow Lib "user32" (ByVal hwnd As Long) As Long
  35.  Declare Function GetActiveWindow Lib "user32" () As Long
  36.  Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
  37.  Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
  38. Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
  39. Private Declare Function SetWindowRgn Lib "user32" (ByVal hwnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
  40. '建立隋圆形区域
  41. Private Declare Function CreateEllipticRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
  42. '建立矩形区域
  43. Private Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
  44. '建立一个由点构成的区域
  45. Private Declare Function CreatePolygonRgn Lib "gdi32" (lpPoint As POINTAPI, ByVal nCount As Long, ByVal nPolyFillMode As Long) As Long
  46. '合并两个区域
  47. Private Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long) As Long
  48. Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
  49. Declare Function GetDesktopWindow Lib "user32" () As Long
  50. Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
  51. Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
  52. Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hwnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
  53. Public Const GWL_EXSTYLE = (-20)
  54. Public Const WS_EX_TRANSPARENT = &H20
  55. Public Const LWA_ALPHA = &H2
  56. Public Const LWA_COLORKEY = &H1
  57. Public Const WS_EX_LAYERED = &H80000
  58. Public Const WS_POPUP = &H80000000
  59. Public Const WS_DISABLED = &H8000000
  60. Const VK_LEFT = &H25
  61. Type KeyboardBytes
  62.      kbByte(0 To 255) As Byte
  63. End Type
  64. Type POINTAPI
  65.     x As Long
  66.     y As Long
  67. End Type
  68. '定义一个矩形类型
  69. Type RECT
  70.   Left As Long  'x(横向)方向。
  71.   Top As Long   'Y(竖方)方向
  72.   right As Long ''x(横向)方向
  73.   bottom As Long ''y(横向)方向
  74. End Type
  75. Dim pp(10) As POINTAPI '定义一个数组
  76. Public act As Long     'form1 form4共用此变量
  77. Public myFullWinRect As RECT
  78. Public WinTogether As Boolean    '窗口跟随
  79. Public NumPicture As Long
  80. Public WorkPath As String
  81. Public oldhwnd As Long
  82. Public mySendKey As Long
  83. Public Form4Hight As Long
  84. Public Form5Hight As Long
  85. Public Function MySetActiveWindow(ByVal hwnd As Long) As Boolean
  86.    
  87.    SetActiveWindow hwnd
  88.   ' Form5.Label1.Caption = SetFocus(hwnd)
  89. End Function
  90. Public Function IsWinNT() As Boolean
  91.   'Returns True if the current operating system is WinNT
  92.    Dim osvi As OSVERSIONINFO
  93.    osvi.dwOSVersionInfoSize = Len(osvi)
  94.    GetVersionEx osvi
  95.    IsWinNT = (osvi.dwPlatformId = VER_PLATFORM_WIN32_NT)
  96.    
  97. End Function
  98. Sub windowsdraw() '为各点赋值,以绘制窗口
  99. Dim firtX As Long, firtY As Long
  100. firtX = 0
  101. firtY = 0
  102. pp(0).x = firtX
  103. pp(0).y = firtY
  104. pp(1).x = firtX + 240
  105. pp(1).y = firtY
  106. pp(2).x = firtX + 240
  107. pp(2).y = firtY + 300
  108. pp(3).x = firtX + 70
  109. pp(3).y = firtY + 300
  110. pp(4).x = firtX + 70
  111. pp(4).y = firtY + 30
  112. pp(5).x = firtX + 0
  113. pp(5).y = firtY + 30
  114. End Sub
  115. Sub ModifyWindow1(hwnd As Long)
  116. Dim R1 As Long
  117. '调用函数给各点赋值
  118.     windowsdraw
  119.     R1 = CreatePolygonRgn(pp(1), 6, 1)
  120.     SetWindowRgn hwnd, R1, True
  121.     DeleteObject R1
  122.     
  123. End Sub
  124. Sub ModifyWindow2(ww As Long)
  125. Dim Mrgn As Long
  126. Dim MyRec As RECT
  127.     
  128.     GetWindowRect ww, MyRec
  129.     
  130.     Mrgn = CreateEllipticRgn(0, 0, MyRec.right - MyRec.Left, MyRec.bottom - MyRec.Top)
  131.     SetWindowRgn ww, Mrgn, True
  132.     DeleteObject Mrgn
  133. End Sub
  134. '形状不规则的窗体
  135. Sub ShapeWindow(hwnd As Long, color As Long)
  136.     Dim rtn As Long
  137.     rtn = GetWindowLong(hwnd, GWL_EXSTYLE)
  138.     rtn = rtn Or WS_EX_LAYERED
  139.     SetWindowLong hwnd, GWL_EXSTYLE, rtn
  140.     If IsWinNT Then
  141.        SetLayeredWindowAttributes hwnd, color, 0, LWA_COLORKEY      '将扣去窗口中的蓝色
  142.     End If
  143. End Sub
  144. '透明窗体
  145. Sub WindowVisable(hwnd As Long)
  146.     Dim rtn As Long
  147.     rtn = GetWindowLong(hwnd, GWL_EXSTYLE)
  148.     rtn = rtn Or WS_EX_LAYERED Or WS_DISABLED Or WS_POPUP
  149.     SetWindowLong hwnd, GWL_EXSTYLE, rtn
  150.     If IsWinNT Then
  151.        SetLayeredWindowAttributes hwnd, 0, 150, LWA_ALPHA
  152.     End If
  153. End Sub