中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 搜索 | 上传 | 帮助 »
English/Chinese Fix Translation
作者:
标题: 求图形化选单工具 上一主题 | 下一主题
proof
高级用户





积分 687
发帖 222
注册 2005-8-21
状态 离线
『楼 主』:  求图形化选单工具 [已使用 LLM 解释]

原因:
几百个DOS游戏。
命令行方式,进入目录,运行exe。太麻烦。

求助:
有没有这样一种软件:满屏 5×4 / 8×6 截图(程序/游戏),支持滚动条。方向键、鼠标选择,执行。
实质就是:截图+子目录+exe(bat) 相互绑定。并且显示到屏幕上,供用户选择。

用户数据库:
       截图1.jpg 对应目录C:\DOS\mario mario.exe
       截图2.jpg 对应目录D:\GAME\Goldenaxe gold.exe
       ……

必须是纯DOS软件。Windows版、DosBOX 无视。
LLM 解释

1. 分析需求本质

用户需要一个纯DOS环境下的图形化选单工具,能够以特定的截图展示形式(如满屏 5×4 / 8×6 截图)来呈现程序或游戏相关信息,包括对应目录、可执行文件(exe或bat)等,并且支持滚动条、方向键和鼠标选择来执行相关程序或进入子目录。

2. 可能的技术实现思路及解决方案

(1)图形绘制与界面布局

  • 图形绘制基础: 在纯DOS环境下,要实现图形绘制可以利用BIOS中断或直接操作显存。例如,使用BIOS中断INT 10h来进行字符和简单图形的绘制。对于截图的展示,需要将图片数据转换为DOS下可处理的格式,比如将JPG等格式转换为DOS下能显示的原始像素数据形式。但直接处理JPG等格式比较复杂,可能需要先将截图转换为简单的点阵格式。
  • 界面布局规划: 需要预先设计好5×4或8×6的布局结构。可以通过计算屏幕坐标来确定每个截图显示区域的位置。例如,假设屏幕分辨率是标准的640×480(在DOS常见分辨率中),要实现5×4的布局,需要将屏幕横向分为5等份,纵向分为4等份,计算每个区域的起始行和列坐标。

(2)文件与目录信息的管理

  • 目录遍历: 使用DOS的文件操作功能,通过INT 21h中断来实现目录遍历。例如,使用AH=4Eh功能号来查找第一个匹配的文件,然后使用AH=4Fh功能号来查找下一个匹配的文件,从而遍历指定目录下的所有相关文件(如exe、bat文件)以及对应的截图文件。
  • 数据关联存储: 可以建立一个数据结构来关联截图文件、目录路径和可执行文件。例如,可以用一个结构体数组,每个结构体包含截图文件名、目录路径、可执行文件名等信息。在程序初始化时,读取这些关联信息并存储到该数据结构中。

(3)输入处理

  • 键盘输入处理: 利用INT 16h中断来获取键盘输入。通过检测方向键(如上下左右方向键)的扫描码,来实现选单的上下左右移动选择功能。例如,当检测到上方向键时,将当前选中的项向上移动;检测到下方向键时向下移动等。
  • 鼠标输入处理: 在纯DOS环境下实现鼠标输入需要额外处理。可以通过读取鼠标硬件寄存器或者使用第三方的鼠标驱动相关的中断功能。例如,有些鼠标驱动会提供特定的中断服务来获取鼠标的位置和按键状态。当检测到鼠标点击时,根据鼠标所在的区域来确定选中的项并执行相应操作。

(4)程序执行

当用户通过选单选择了某个项后,需要执行对应的可执行文件。可以使用INT 21h中断的AH=4Bh功能号来执行程序。例如,构造一个EXEC参数块,将对应的可执行文件路径和参数等信息填入,然后调用INT 21h来执行该程序。

以下是一个简单的伪代码示例(用于大致展示逻辑):

; 假设已经定义了相关的数据结构来存储选单项信息
; 数据结构示例:
; STRUCT MENU_ITEM
;     screenshot_name DB 20 DUP(0)  ; 截图文件名
;     dir_path DB 50 DUP(0)       ; 目录路径
;     exec_file DB 20 DUP(0)      ; 可执行文件名
; ENDS

.DATA
menu_items MENU_ITEM 10 DUP(<>)  ; 假设最多存储10个选单项
num_items DW 0                   ; 实际选单项数量

.CODE
START:
    ; 初始化,读取目录信息,填充menu_items等
    CALL READ_DIRECTORY_INFO
    ; 绘制选单界面
    CALL DRAW_MENU_INTERFACE
    ; 输入处理循环
INPUT_LOOP:
    CALL GET_INPUT
    CMP AL, KEY_ENTER  ; 检测是否按下回车键
    JE EXECUTE_SELECTED_ITEM
    JMP INPUT_LOOP

READ_DIRECTORY_INFO:
    ; 使用INT 21h中断进行目录遍历,填充menu_items等
    RET

DRAW_MENU_INTERFACE:
    ; 使用INT 10h中断进行图形绘制和界面布局
    RET

GET_INPUT:
    ; 使用INT 16h中断获取键盘输入,检测方向键等
    RET

EXECUTE_SELECTED_ITEM:
    ; 根据选中的项,构造参数并调用INT 21h的AH=4Bh执行程序
    RET
END START

总之,要实现这样一个纯DOS的图形化选单工具,需要综合运用DOS下的文件操作、图形绘制、输入处理等多方面的技术,通过合理的程序设计来满足用户的需求。



2018-10-2 20:41
查看资料  发短消息  网志   编辑帖子  回复  引用回复
proof
高级用户





积分 687
发帖 222
注册 2005-8-21
状态 离线
『第 2 楼』:   使用 LLM 解释/回答一下

实在没有的话。

求助高手开发一个。


2018-11-6 22:24
查看资料  发短消息  网志   编辑帖子  回复  引用回复
proof
高级用户





积分 687
发帖 222
注册 2005-8-21
状态 离线
『第 3 楼』:   使用 LLM 解释/回答一下


现在有现成的DOS版图形引擎。
像Allegro ,或者VC6.0+图形库

求助高手编写一个。



2018-11-27 21:46
查看资料  发短消息  网志   编辑帖子  回复  引用回复
zzz19760225
超级版主




积分 3673
发帖 2020
注册 2016-2-1
状态 离线
『第 4 楼』:   使用 LLM 解释/回答一下

我是外行,谈谈外行的看后想法。
1楼主的做法类似XP下的桌面快捷方式
2软件截图功能实现,图片在文件夹里排列显示,批处理将图片和执行程序连起来,选择A=B
3估计目前仍然使用DOS程序的,都懒得做了吧,至少习惯的要考虑自己愿不愿,时间值不值得
所以反过来,楼主可以自己试一试,因为愿意和值得


附件 1: DOS游戏快捷方式.png (2018-12-8 20:15, 31.14 KiB, 下载附件所需积分 1 点 ,下载次数: 1)




1<词>,2,3/段\,4{节},5(章)。
2018-12-8 20:15
查看资料  发短消息  网志   编辑帖子  回复  引用回复
birdbird
初级用户





积分 44
发帖 22
注册 2024-12-17
状态 离线
『第 5 楼』:   使用 LLM 解释/回答一下

你这样的程序叫前端,就是个管理程序,现在有了,还可以管理游戏机平台的游戏,截图 视频和简介都有。


2024-12-19 07:55
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
hwei1001
初级用户




积分 39
发帖 5
注册 2025-6-23
状态 离线
『第 6 楼』:   使用 LLM 解释/回答一下

我 1996 年就开发过这样的工具,不过没有截图的显示,当时的CPU太慢了,其他功能都有。

看到你的帖子,想起来这个工具,特意发出来:
https://www.cn-dos.net/forum/viewthread.php?tid=71244&fpage=1

希望对大家有帮助!<img src="images/smilies/face-cool.png" align="absmiddle" border="0">


2025-6-25 23:49
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: