本帖最后由 feiyu2005 于 2024-3-1 17:04 编辑
梦总语录——慢慢来,先能用,再好用。
小白语录——我只要写的代码能编译执行,不管资源泄漏(什么内存泄露、句柄未关闭等),那不是现阶段的我考虑的事情。
——————————————————————————
本人编程小白,连易语言都不太懂,只会下载别人写好的例子代码,磕磕绊绊的修修改改。从精易论坛看到炫语言的介绍知道了炫语言,接触炫语言一段时间了,天气回暖了马上要回工地搬砖了,所以赶紧在论坛灌水一下,作为小白的学习记录。
曾经在群里看到有群友询问怎么实现DOS命令回显,今天就尝试来实现这个功能。
炫语言移植了易语言核心支持库,在易语言核心支持库中有“运行()”函数,可以运行DOS命令,但是没有回显模式;移植过来的精易模块(精炫模块、易炫彩)还不完全,“系统_取DOS执行结果”貌似还没有移植过来。
由于炫语言支持C++代码嵌入,尝试采用函数内嵌入C++代码方式来实现。小白不会C++怎么实现呢?现在进入了AI时代,AI会C++等于小白会C++。问AI得到如下回复。
得到的代码如下:
[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生成的代码嵌入进去。
在按钮点击事件里面添加执行代码
[C++] 纯文本查看 复制代码 函数 UI事件 整型 按钮点击_按钮1(元素句柄 来源句柄, 逻辑型 *是否拦截)
_编辑框1.置文本(到文本(执行DOS命令("dir c:\ /p")))//使用到文本()函数将文本A型转成文本型,以便置文本()函数自动转成字符型字符串.
返回 0
炫彩IDE v3.3.8.2(20240228)的x86和x64模式下调试编译均正常通过,执行程序得到结果如图:
项目源代码见附件压缩包。
DOS回显.zip
(63.38 KB, 下载次数: 23)
——————————————
哈哈,使用中文编程语言,编写一个64位的自绘UI窗口程序,去执行一个16位的DOS命令,这是什么骚操作!!
骚年们,骚语言...不!炫语言,值得你来学习!!
|