炫彩界面库论坛

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 244|回复: 2

[炫源码] 小白学习笔记(1)——实现执行DOS命令并回显

[复制链接]
  • TA的每日心情
    无聊
    9 小时前
  • 发表于 2024-3-1 17:04:47 | 显示全部楼层 |阅读模式
    本帖最后由 feiyu2005 于 2024-3-1 17:04 编辑

    梦总语录——慢慢来,先能用,再好用。
    小白语录——我只要写的代码能编译执行,不管资源泄漏(什么内存泄露、句柄未关闭等),那不是现阶段的我考虑的事情。
    ——————————————————————————
    本人编程小白,连易语言都不太懂,只会下载别人写好的例子代码,磕磕绊绊的修修改改。从精易论坛看到炫语言的介绍知道了炫语言,接触炫语言一段时间了,天气回暖了马上要回工地搬砖了,所以赶紧在论坛灌水一下,作为小白的学习记录。

    曾经在群里看到有群友询问怎么实现DOS命令回显,今天就尝试来实现这个功能。

    炫语言移植了易语言核心支持库,在易语言核心支持库中有“运行()”函数,可以运行DOS命令,但是没有回显模式;移植过来的精易模块(精炫模块、易炫彩)还不完全,“系统_取DOS执行结果”貌似还没有移植过来。

    由于炫语言支持C++代码嵌入,尝试采用函数内嵌入C++代码方式来实现。小白不会C++怎么实现呢?现在进入了AI时代,AI会C++等于小白会C++。问AI得到如下回复。
    dos1.png
    dos2.png
    得到的代码如下:
    [C++] 纯文本查看 复制代码
    #include <iostream>  
    #include <string>  
    #include <vector>  
    #include <cstdlib> // 用于_popen和_pclose  
      
    // 执行DOS命令并获取输出的函数  
    std::string 执行DOS命令(const std::string& 命令) {  
        std::vector<char> 缓冲区(128 * 1024); // 用于存储命令输出的缓冲区  
        std::string 输出结果;  
          
        // 打开命令进行读取  
        FILE* 管道 = _popen(命令.c_str(), "r");  
        if (!管道) {  
            std::cerr << "无法执行命令: " << 命令 << std::endl;  
            return 输出结果;  
        }  
          
        // 读取命令的输出  
        while (fgets(缓冲区.data(), 缓冲区.size(), 管道) != nullptr) {  
            输出结果 += 缓冲区.data();  
        }  
          
        // 关闭命令  
        _pclose(管道);  
          
        return 输出结果;  
    }  
      
    int main() {  
        // 要执行的DOS命令  
        std::string DOS命令 = "dir";  
      
        // 调用函数执行命令并获取输出  
        std::string 命令输出 = 执行DOS命令(DOS命令);  
      
        // 打印命令的输出  
        std::cout << "命令输出:" << std::endl;  
        std::cout << 命令输出 << std::endl;  
      
        return 0;  
    }


    好了,开始实现它。

    打开炫语言IDE,新建一个窗口项目,进入界面后在IDE界面左上侧的项目视图中,双击main.xml,进入窗口UI设计界面,先调整窗口大小,然后在IDE右侧的工具箱中选择UI元素,选择创建一个编辑框和一个按钮,在它们上面鼠标右键绑定成员变量(或者绑定成员变量-全部UI对象),选中编辑框,调整大小后,在IDE界面右下角编辑框属性设置里面的“开关(启用与禁用)”里,设置编辑框的垂直滚动条和多行模式为真;再然后,在按钮上面鼠标右键“事件管理”,进入后设置事件里面选择“按钮点击事件”,点击添加事件相应代码。

    然后自定义一个炫语言的“执行DOS命令”函数,把AI生成的代码嵌入进去。
    AI代码.png

    在按钮点击事件里面添加执行代码
    [C++] 纯文本查看 复制代码
            函数 UI事件 整型 按钮点击_按钮1(元素句柄 来源句柄, 逻辑型 *是否拦截)
                    _编辑框1.置文本(到文本(执行DOS命令("dir c:\ /p")))//使用到文本()函数将文本A型转成文本型,以便置文本()函数自动转成字符型字符串.
                    返回 0


    炫彩IDE v3.3.8.2(20240228)的x86和x64模式下调试编译均正常通过,执行程序得到结果如图:
    结果.png
    项目源代码见附件压缩包。
    DOS回显.zip (63.38 KB, 下载次数: 21)
    ——————————————
    哈哈,使用中文编程语言,编写一个64位的自绘UI窗口程序,去执行一个16位的DOS命令,这是什么骚操作!!
    骚年们,骚语言...不!炫语言,值得你来学习!!


    该用户从未签到

    发表于 2024-3-10 17:34:15 | 显示全部楼层
    支持,加油加油,共同学习。
  • TA的每日心情
    开心
    2024-4-18 22:15
  • 发表于 2024-3-14 11:17:08 | 显示全部楼层
    AI是趋势 一切变的轻松简单
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    QQ|Archiver|手机版|小黑屋|炫彩界面库 ( 鄂ICP备2023014763号-1 )

    GMT+8, 2024-4-27 19:06 , Processed in 0.071402 second(s), 21 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

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