开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 956|回复: 10
收起左侧

[求助] 求大神翻译这个易语言代码到C++,很短

[复制链接]
结帖率:91% (10/11)
发表于 2023-11-3 08:50:20 | 显示全部楼层 |阅读模式   湖北省荆门市
  
子程序名返回值类型公开备 注
判断鼠标是否隐藏逻辑型 
变量名类 型静态数组备 注
p字节集 
info1字节集 
info2字节集 
CS2逻辑型 
p = { 20 }取空白字节集 (19)
调试输出 (p)
GetCursorInfo (p)
调试输出 (p)
info1 = 取字节集中间 (p, 5, 4)
info2 = 取字节集中间 (p, 10, 3)
调试输出 (info1)
调试输出 (info2)
判断 (info2 ≠ { 0, 0, 0 } info2 ≠ { 0, 1, 0 })
CS2 = 真
CS2 = 假

如果 (CS2 = )
如果 (info2 ≠ { 0, 1, 0 })
返回 ()
返回 ()

如果 (info1 = { 0, 0, 0, 0 } info2 = { 0, 0, 0 })
返回 ()
返回 ()



i支持库列表   支持库注释   
spec特殊功能支持库

结帖率:91% (10/11)

签到天数: 25 天

 楼主| 发表于 2023-11-3 10:41:49 | 显示全部楼层   湖北省荆门市
小蜜蜂嗡嗡嗡啊 发表于 2023-11-3 10:41
已经自己解决,留个需要的人

留给需要的人
bool 判断鼠标是否隐藏() {

        CURSORINFO p;
        p.cbSize = sizeof(CURSORINFO);
        //std::cout << sizeof(CURSORINFO) << std::endl;
        GetCursorInfo(&p);
        bool CS2 = false;

        int cs2flag = 0x010000;

        DWORD info1 = p.flags;
        int info2 = int(p.hCursor) & 0xffff00;

        if (info2 != 0 && info2 != cs2flag)
        {
                CS2 = true;
        }
        else {
                CS2 = false;
        }


        if (CS2 == true)
        {
                if (info2 != cs2flag)
                {
                        return true;
                }
                return false;
        }
        else {
                if (info1 == 0 || info2 == 0)
                {
                        return true;
                }
                return false;
        }
        return true;
}
回复 支持 反对

使用道具 举报

结帖率:100% (30/30)

签到天数: 16 天

发表于 2023-11-3 09:04:57 | 显示全部楼层   四川省成都市

[C++] 纯文本查看 复制代码
#include <windows.h>  
  
bool isMouseHidden()  
{  
    // 调用Windows API函数来获取鼠标的状态  
    return GetSystemMetrics(SM_MOUSEVISIBLE) == 0;  
}
回复 支持 反对

使用道具 举报

签到天数: 21 天

发表于 2023-11-3 09:05:43 | 显示全部楼层   广东省广州市
[C++] 纯文本查看 复制代码
    CURSORINFO ci = { 0 };
    ci.cbSize = sizeof(CURSORINFO);
    GetCursorInfo(&ci);
    if (ci.flags == 0) {
        // 隐藏
    }
    else
    {
        // 其他
    }
回复 支持 反对

使用道具 举报

结帖率:100% (56/56)
发表于 2023-11-3 09:06:21 | 显示全部楼层   浙江省杭州市
易语言中的字节集转换为C++中的std::vector<unsigned char>。

不过你还得改改才能运行

[C++] 纯文本查看 复制代码
#include <iostream>
#include <vector>

bool 判断鼠标是否隐藏() {
    std::vector<unsigned char> p(20, 0);
    std::vector<unsigned char> info1(4, 0);
    std::vector<unsigned char> info2(3, 0);
    bool CS2;

    for (int i = 0; i < 19; i++) {
        p = 0;
    }

    // 调试输出 (p)

    // GetCursorInfo (p)

    // 调试输出 (p)

    for (int i = 0; i < 4; i++) {
        info1 = p[i + 5];
    }

    for (int i = 0; i < 3; i++) {
        info2 = p[i + 10];
    }

    // 调试输出 (info1)
    // 调试输出 (info2)

    if ((info2 != std::vector<unsigned char>{0, 0, 0}) && (info2 != std::vector<unsigned char>{0, 1, 0})) {
        CS2 = true;
    } else {
        CS2 = false;
    }

    if (CS2 == true) {
        if (info2 != std::vector<unsigned char>{0, 1, 0}) {
            return true;
        } else {
            return false;
        }
    } else {
        if (info1 == std::vector<unsigned char>{0, 0, 0, 0} || info2 == std::vector<unsigned char>{0, 0, 0}) {
            return true;
        } else {
            return false;
        }
    }
}

int main() {
    bool result = 判断鼠标是否隐藏();
    std::cout << "鼠标是否隐藏: " << (result ? "是" : "否") << std::endl;
    return 0;
}
回复 支持 反对

使用道具 举报

结帖率:73% (37/51)

签到天数: 19 天

发表于 2023-11-3 09:24:25 | 显示全部楼层   浙江省宁波市
[C++] 纯文本查看 复制代码
#include <iostream>
#include <vector>

std::vector<int> getCursorInfo(std::vector<int> p) {
    std::vector<int> info1(4);
    std::vector<int> info2(3);
    info1 = std::vector<int>(p.begin() + 5, p.begin() + 9);
    info2 = std::vector<int>(p.begin() + 10, p.begin() + 12);
    return info1, info2;
}

bool isMouseHidden(std::vector<int> info2) {
    return info2[0] != 0 || info2[1] != 0;
}

bool isCursorValid(std::vector<int> info1, std::vector<int> info2) {
    return info1[0] == 0 && info1[1] == 0 && info1[2] == 0 && info2[0] == 0 && info2[1] == 0 && info2[2] == 0;
}

int main() {
    std::vector<int> p = {20};
    for (int i = 0; i < 19; i++) {
        p.push_back(0);
    }
    std::vector<int> info1, info2;
    info1 = info2 = p;
    std::cout << p << std::endl;
    std::cout << getCursorInfo(p) << std::endl;
    if (isMouseHidden(info2)) {
        if (isCursorValid(info1, info2)) {
            std::cout << "Mouse is hidden and cursor is valid." << std::endl;
        } else {
            std::cout << "Mouse is hidden but cursor is invalid." << std::endl;
        }
    } else {
        if (isCursorValid(info1, info2)) {
            std::cout << "Mouse is visible but cursor is invalid." << std::endl;
        } else {
            std::cout << "Mouse is visible and cursor is valid." << std::endl;
        }
    }
    return 0;
}

回复 支持 反对

使用道具 举报

结帖率:91% (10/11)

签到天数: 25 天

 楼主| 发表于 2023-11-3 09:40:52 | 显示全部楼层   湖北省荆门市
大司命 发表于 2023-11-3 09:05
[mw_shl_code=cpp,true]    CURSORINFO ci = { 0 };
    ci.cbSize = sizeof(CURSORINFO);
    GetCursorIn ...

这个失败了,我是判断FPS鼠标是否隐藏
回复 支持 反对

使用道具 举报

结帖率:91% (10/11)

签到天数: 25 天

 楼主| 发表于 2023-11-3 09:41:07 | 显示全部楼层   湖北省荆门市
zhongzutao 发表于 2023-11-3 09:04
[mw_shl_code=cpp,true]#include   
  
bool isMouseHidden()  

没有SM_MOUSEVISIBLE,报错
回复 支持 反对

使用道具 举报

结帖率:91% (10/11)

签到天数: 25 天

 楼主| 发表于 2023-11-3 09:44:39 | 显示全部楼层   湖北省荆门市
六安小朱 发表于 2023-11-3 09:24
[mw_shl_code=cpp,true]#include
#include

失败了,游戏内外都是Mouse is hidden but cursor is invalid.
回复 支持 反对

使用道具 举报

结帖率:91% (10/11)

签到天数: 25 天

 楼主| 发表于 2023-11-3 09:49:14 | 显示全部楼层   湖北省荆门市
晴雯晴雯 发表于 2023-11-3 09:06
易语言中的字节集转换为C++中的std::vector。

不过你还得改改才能运行

不能使用p<i>动态获取索引,改为p就好了,但是范围的一直是true
回复 支持 反对

使用道具 举报

结帖率:91% (10/11)

签到天数: 25 天

 楼主| 发表于 2023-11-3 10:41:07 | 显示全部楼层   湖北省荆门市
已经自己解决,留个需要的人
回复 支持 反对

使用道具 举报

  高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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