Access编程交流网
  • 设为首页|收藏本站|繁体中文|手机版
  •     
  • Access培训-Access开发平台-Access行业开发

  • 首页
  • 资讯
  • 技巧
  • 源码
  • 行业
  • 资源
  • 活动
  • 关于

技巧

ACCESS数据库

启动/设置/选项/背景

修复/压缩

安全/加密/解密

快捷键

版本升级/其它等

数据表

命名方式/设计规范

表设计

查询

Sql语言基础

选择查询

更新查询

删除查询

追加查询

生成表查询

交叉表查询

SQL特定查询

查询参数

查询综合应用

界面/窗体/控件

标签

文本框

命令按钮

组合框/列表框

选项组/复选框/选项按钮

选项卡

子窗体

窗体本身/综合应用

其它

报表打印

报表设计

高级报表

模块/函数/VBA/API/系统

VBA基础

内置函数

调试/跟踪/Debug

模块/类模块

API/COM/系统相关

字符数字日期

网络通信游戏

加密解密安全

文件处理

经典算法

宏/菜单/工具栏/功能区

宏/脚本

菜单/工具栏

功能区/Ribbon

图表/图形/图像/多媒体

图表

图形/图像

音频

视频/动画

DAO/链接表/ADO/ADP

DAO/链接表/ODBC

ADO/RDO

ADP

ActiveX/第三方控件/插件

Treeview树控件

ListView列表控件

Toolbar工具栏控件

微软其它控件

Dbi-Tech

CodeJock

Grid++Report

FastReport

ComponentOne

加载项/插件/Addin

OFFICE集成/导入导出/交互

Excel导入导出/交互

Word导入导出/交互

PPT交互

Outlook控制/邮件

Text文本文件/INI/CSV

PDF/SWF/XML格式

CAD格式

Sharepoint/其它Office

SqlServer/其它数据库

表

视图

存储过程/触发器

函数

用户/权限/安全

调试/维护

SqlServer其它/综合

发布/打包/文档/帮助

开发版/运行时

打包/发布/部署

开发文档/帮助制作

Access完整行业系统

采购管理系统

销售管理系统

仓库管理系统

人力资源管理HRM

CRM管理系统

MRP/ERP管理系统

BRP/流程优化

其它管理系统

心得/经验/绝招
其它/杂项
Excel技巧

Excel应用与操作

Excel开发编程

Word技巧

Word应用与操作

Word开发编程

Outlook技巧

Outlook应用与操作

Outlook开发编程

热门文章

  • ACCESS数据表中数据类..
  • 利用winsock控件实现..
  • UTF-8 and Unicode FAQ
  • 足彩的复式-单注+过滤
  • 《Access 数据库表结..
  • Access七种提高代码的..

最新文章

  • Access数据库设计技巧..
  • Access数据库设计技巧..
  • Access数据库设计技巧..
  • Access数据库设计技巧..
  • Access数据库设计技巧..
  • 使用Access和Exce..

联系方式

Access交流网(免费Access交流)

QQ:18449932 

网  址:www.access-cn.com

当前位置:首页 > 技巧 > 心得/经验/绝招
心得/经验/绝招

再发一篇关于通过API利用输入法获取汉字拼音的源代码(带声调)

无意间发现的, 先转载过来

Option Compare Database

Const GCL_CONVERSION = 1
Const GCL_REVERSECONVERSION = 2

Const VER_PLATFORM_WIN32_WINDOWS = 1
Const VER_PLATFORM_WIN32_NT = 2

Private Const IME_ESC_MAX_KEY = &H1005
Private Const IME_ESC_IME_NAME = &H1006
Type CANDIDATELIST
  dwSize As Long
  dwStyle As Long
  dwCount As Long
  dwSelection As Long
  dwPageStart As Long
  dwPageSize As Long
  dwOffset(0) As Long
End Type
Declare Function ImmGetContext Lib "imm32" ( _
    ByVal hwnd As Long _
) As Long

Declare Function ImmReleaseContext Lib "imm32" ( _
    ByVal hwnd As Long, _
    ByVal hIMC As Long _
) As Long

Declare Function ImmGetConversionList Lib "imm32" Alias "ImmGetConversionListW" ( _
    ByVal hKL As Long, _
    ByVal hIMC As Long, _
    ByRef lpSrc As Byte, _
    ByRef lpDst As Any, _
    ByVal dwBufLen As Long, _
    ByVal uFlag As Long _
) As Long

Declare Function GetKeyboardLayout Lib "user32" ( _
    ByVal idThread As Long _
) As Long
Private Declare Function GetKeyboardLayoutList Lib "user32" _
   (ByVal nBuff As Long, _
    ByRef lpList As Long) As Long
   
Private Declare Function ImmEscape Lib "imm32.dll" _
    Alias "ImmEscapeA" _
   (ByVal hKL As Long, _
    ByVal hIMC As Long, _
    ByVal un As Long, _
    ByRef lpv As Any) As Long
   
Declare Function lstrlen Lib "kernel32" Alias "lstrlenW" ( _
    ByRef strString As Any _
) As Long

Type OSVERSIONINFO
  dwOSVersionInfoSize As Long
  dwMajorVersion As Long
  dwMinorVersion As Long
  dwBuildNumber As Long
  dwPlatformId As Long
  szCSDVersion(127) As Byte
End Type

Public Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" ( _
    ByRef VersionInfo As OSVERSIONINFO _
) As Long

Declare Sub MoveMemory Lib "kernel32" Alias "RtlMoveMemory" ( _
    ByRef Destination As Any, _
    ByRef Source As Any, _
    ByVal Length As Long _
)


Public Function ReverseConversionNew(hwnd As Long, strSource As String) As String

    Dim bySource() As Byte
   
    Dim i As Integer
    Dim arrKeyLayout() As Long
    Dim strIME As String
   
    Dim hIMC As Long
    Dim hKL As Long
    Dim lngSize As Long
    Dim lngOffset As Long
    Dim iKeyLayoutCount As Integer

    Dim byCandiateArray() As Byte
    Dim CandiateList As CANDIDATELIST

    Dim byWork() As Byte
    Dim lngResult As Long
   
    Const BUFFERSIZE As Integer = 255
    Dim osvi As OSVERSIONINFO

    Dim isChineseIme As Boolean
   
    If strSource = "" Then Exit Function

    'OS判別
    osvi.dwOSVersionInfoSize = Len(osvi)
    lngResult = GetVersionEx(osvi)

    If osvi.dwPlatformId = VER_PLATFORM_WIN32_NT Then
        'WindowsNT系:Unicode字符集
        bySource = strSource

        ReDim Preserve bySource(UBound(bySource) + 2)
    Else
        'Windows95系
        bySource = StrConv(strSource, vbFromUnicode)

        ReDim Preserve bySource(UBound(bySource) + 1)
    End If
   
        hIMC = ImmGetContext(hwnd)

    ReDim arrKeyLayout(BUFFERSIZE) As Long
    strIME = Space(BUFFERSIZE)
    iKeyLayoutCount = GetKeyboardLayoutList(BUFFERSIZE, arrKeyLayout(0))

    isChineseIme = False
    For i = 0 To iKeyLayoutCount - 1
        If ImmEscape(arrKeyLayout(i), hIMC, IME_ESC_IME_NAME, ByVal strIME) Then
            If Trim(UCase("微软拼音输入法")) = UCase(Replace(Trim(strIME), Chr(0), "")) Then
                isChineseIme = True
                Exit For
            End If
        End If
    Next i
 
    If isChineseIme = False Then Exit Function
    hKL = arrKeyLayout(i)
'    hKL = GetKeyboardLayout(0)

    lngSize = ImmGetConversionList(hKL, hIMC, bySource(0), Null, 0, GCL_REVERSECONVERSION)

    If lngSize > 0 Then

        ReDim byCandiateArray(lngSize)

        lngSize = ImmGetConversionList(hKL, hIMC, bySource(0), byCandiateArray(0), lngSize, _
                                       GCL_REVERSECONVERSION)

        MoveMemory CandiateList, byCandiateArray(0), Len(CandiateList)

        If CandiateList.dwCount > 0 Then

            lngOffset = CandiateList.dwOffset(0)

            ReverseConversionNew = MidB(byCandiateArray, lngOffset + 1, _
                                     lstrlen(byCandiateArray(lngOffset)) * 2)

        End If

    End If

    lngResult = ImmReleaseContext(hwnd, hIMC)

End Function


Sub Command1_Click()
    Dim strSource As String
    Dim strRev As Variant
    strSource = "中华人民共和国"
    strRev = ReverseConversionNew(Application.hWndaccessApp, strSource)
    MsgBox CStr(strRev)
End Sub

发布人:Squirm-blanksoft  
分享到:
点击次数:  更新时间:2004-10-09 14:34:05  【打印此页】  【关闭】
上一条:怎么让多个人同时打开Access数据库?  下一条:用WSH对象获取系统目录



相关文章

  • • Access数据库设计技巧-第五部分
  • • Access数据库设计技巧-第四部分
  • • Access数据库设计技巧-第二部分
  • • Access数据库设计技巧-第一部分
  • • Access数据库设计技巧-第三部分
  • • 使用Access和Excel之间的选择理由
  • • access开发应用程序的过程汇总
  • • ACCESS提示错误信息,自动崩溃,数据库损坏的问题与解决办法

热门文章

  • [2004-03-14] Access键盘快捷键大全[下]access数据库
  • [2009-11-05] (上)Access中神秘的Criteriaaccess数据库
  • [2009-08-14] 在ASP中使用ACCESS的“存储过程”技术access数据库
  • [2004-05-11] 利用存储过程向SQL Server 2000 的表中写入大二进制文件access数据库
  • [2009-11-21] 主子窗体查询定位access数据库
  • [2005-08-16] 为何窗体的键盘事件不响应?access数据库

热门产品

公司动态|在线留言|在线反馈|友情链接|会员中心|站内搜索|网站地图

中山市天鸣科技发展有限公司 版权所有 1999-2023 粤ICP备10043721号

QQ:18449932

Access应用 Access培训 Access开发 Access平台

access|数据库|access下载|access教程|access视频|access软件

Powered by MetInfo 5.3.12 ©2008-2025  www.metinfo.cn