| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 947 人关注过本帖, 1 人收藏
标题:VB6获取汉字的五笔编码
只看楼主 加入收藏
yuma
Rank: 12Rank: 12Rank: 12
来 自:银河系
等 级:贵宾
威 望:37
帖 子:1934
专家分:3012
注 册:2009-12-22
结帖率:89.13%
收藏(1)
 问题点数:0 回复次数:5 
VB6获取汉字的五笔编码
这是ChatGPt给我写的,为什么无法获取到五笔编码啊?


在 VB6 中使用 Windows API 函数 ImmGetConversionList 来获取汉字的五笔编码,需要先声明该函数,然后调用它来获取五笔编码。
以下是一个示例代码,可以获取指定汉字的五笔编码:

Option Explicit

Private Declare Function ImmGetConversionList Lib "imm32.dll" Alias "ImmGetConversionListA" (ByVal hIMC As Long, ByVal dwSrc As Long, ByVal dwDst As Long, ByVal lpSrc As String, ByVal lpDst As Long, ByVal uBufLen As Long, ByVal uFlag As Long) As Long

Private Const GCL_REVERSECONVERSION = &H2
Private Const GCL_REVERSE_LENGTH = 256

Public Function GetWbCode(ByVal str As String) As String
    Dim hIMC As Long
    Dim dwSrc As Long
    Dim dwDst As Long
    Dim lpSrc As String
    Dim lpDst As Long
    Dim uBufLen As Long
    Dim uFlag As Long
    Dim lRet As Long
    Dim sWbCode As String
   
    ' 初始化参数
    hIMC = 0
    dwSrc = 0
    dwDst = GCL_REVERSECONVERSION
    lpSrc = str
    lpDst = StrPtr(sWbCode)
    uBufLen = GCL_REVERSE_LENGTH
    uFlag = 0
   
    ' 调用 ImmGetConversionList 函数
    lRet = ImmGetConversionList(hIMC, dwSrc, dwDst, lpSrc, lpDst, uBufLen, uFlag)
   
    ' 如果返回值大于 0,则表示获取成功
    If lRet > 0 Then
        ' 截取五笔编码
        sWbCode = Left(sWbCode, lRet)
        ' 返回五笔编码
        GetWbCode = sWbCode
    Else
        ' 获取失败,返回空字符串
        GetWbCode = ""
    End If
End Function

Private Sub Form_Load()
Dim sWbCode As String
sWbCode = GetWbCode("汉")
MsgBox sWbCode
End Sub

搜索更多相关主题的帖子: ByVal Long Dim 编码 获取 
2023-03-16 18:44
独木星空
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:966
专家分:683
注 册:2016-6-29
收藏
得分:0 
回复 楼主 yuma
这种专业性很强的内容,不是非专业人能解决的问题。五笔编码,学都学不来,怎么会出源码?

素数问题的解决是我学习编程永恒的动力。
2023-03-16 22:34
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
代码测试结果:错误的 DLL 调用约定
查了一下 API  的说明,没看出毛病。
然后想到,是不是 与系统 有关。我测试用的系统    XP+VB6,只有一个输入法,极品五笔,未开其他输入法编码查询 。
猜测:需要安装二个输入法以上,其中一个是 微软全拼,另一个是 微软五笔,然后 微软全拼 里需要开 编码查询:微软五笔 ,OS 应该只能是 WINXP 和 WIN7,WIN8、WIN10、WIN11应该不行。
理由:记得只有 微软全拼 WINXP版和 WIN7版有编码查询,并且要另一个输入法也安装了才能查询样的。

授人于鱼,不如授人于渔
早已停用QQ了
2023-03-17 11:01
apull
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:三体星系
等 级:版主
威 望:216
帖 子:1509
专家分:9241
注 册:2010-3-16
收藏
得分:0 
查看 https://learn.
ImmGetConversionListA函数原型参数数量跟你上面代码中的对不上。
DWORD ImmGetConversionListA(
        HKL             unnamedParam1,
        HIMC            unnamedParam2,
  [in]  LPCSTR          lpSrc,
  [out] LPCANDIDATELIST lpDst,
  [in]  DWORD           dwBufLen,
  [in]  UINT            uFlag
);
2023-03-17 11:11
mrexcel
Rank: 6Rank: 6
等 级:贵宾
威 望:22
帖 子:126
专家分:480
注 册:2022-11-3
收藏
得分:0 
五筆編碼可以自己下载一个对照表,或者五笔输入法的数据文件自己读写即可
2023-03-19 16:51
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
以下是引用apull在2023-3-17 11:11:16的发言:

查看 https://learn.
ImmGetConversionListA函数原型参数数量跟你上面代码中的对不上。
DWORD ImmGetConversionListA(
        HKL             unnamedParam1,
        HIMC            unnamedParam2,
    LPCSTR          lpSrc,
  [out] LPCANDIDATELIST lpDst,
    DWORD           dwBufLen,
    UINT            uFlag
);



这里我看了,英文看不懂,所以不知道他哪里对不上。

授人于鱼,不如授人于渔
早已停用QQ了
2023-03-19 22:54
快速回复:VB6获取汉字的五笔编码
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026025 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved