找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
楼主: 0xAA55

【VB6】获取输入法候选词列表

[复制链接]
发表于 2024-7-7 16:27:16 | 显示全部楼层
直接运行您提供的 getime.exe 要闪退啊,在 IDE 中运行会抛出一个下标越界的错误,然后闪退。

测试环境:
Microsoft Windows [版本 10.0.19045.4529]
微软拼音
回复 赞! 靠!

使用道具 举报

发表于 2024-7-7 18:06:21 | 显示全部楼层
学学习习
回复

使用道具 举报

发表于 2024-7-8 22:06:59 | 显示全部楼层
本帖最后由 tlwh163 于 2024-7-8 22:49 编辑

    '候选词结构体的缓冲区
    Dim CandListBuffer() As Byte
    ReDim CandListBuffer(CandListSize - 1)
这个缓存区不管3721 多分配4字节 是不是就可以应对 dwStyle=IME_CAND_CODE And (CandListCount = 1) 的情况?
只要把最后的数据 向后移动4字节 然后把dwOffset(0)改成偏移 dwStyle改成IME_CAND_READ


    n = ImmGetCandidateListA(hImc, 0, 0, 0)
    If n Then m = malloc(n + SizeOf(DWORD))
    If m Then
        ImmGetCandidateListA(hImc, 0, m, n)
        If m->dwStyle = IME_CAND_CODE AndAlso m->dwCount = 1 Then
            memmove(@m->dwOffset(1), @m->dwOffset(0), n + SizeOf(DWORD) - SizeOf(CANDIDATELIST))
            m->dwOffset(0) = SizeOf(CANDIDATELIST) : m->dwStyle = IME_CAND_READ
        End If
回复 赞! 靠!

使用道具 举报

本版积分规则

QQ|Archiver|小黑屋|技术宅的结界 ( 滇ICP备16008837号 )|网站地图

GMT+8, 2024-9-8 09:37 , Processed in 0.025207 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表