中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-01 03:34
中国DOS联盟论坛 » DOS开发编程 & 发展交流 (开发室) » 程序退出后写键盘缓冲区的源程序 查看 1,444 回复 8
楼 主 程序退出后写键盘缓冲区的源程序 发表于 2003-09-23 00:00 ·  中国 湖北 宜昌 电信
高级用户
★★
积分 677
发帖 194
注册 2003-09-13 00:00
22年会员
UID 9778
性别 男
状态 离线
唉!我发的帖子太菜了,都没有人看,真伤心啊!
呜呜呜。。。。。。。。。。。。。。!

就只有ATLaS回了一篇,真感动咧!
呜呜呜。。。。。。。。。。。。。。。。!

如果没人回,程序还是不发了,免得丢人哪!!!
呜呜呜。。。。。。。。。。。。。。
2 发表于 2003-09-23 00:00 ·  新加坡 星和视界(StarHub)宽带
初级用户
积分 169
发帖 29
注册 2003-07-09 00:00
23年会员
UID 6654
性别 男
状态 离线
呵呵,不要灰心,鼓励一下。
不过我很久没用过basic了,那时用的还是gwbasic,更老的还是apple ii自带的basic。
不一定要发源代码上来,有时候讲讲思路,给出个伪码,大家的联想可能会更多些,讨论也就积极了。
3 发表于 2003-09-30 00:00 ·  中国 湖北 宜昌 移动
高级用户
★★
积分 677
发帖 194
注册 2003-09-13 00:00
22年会员
UID 9778
性别 男
状态 离线
谢谢啦!
你说的对!我就讲个思路吧!反正大家又不会BASIC 。实际上QB4。5编译成EXE文件并不需要库的支持,是可以编译成单独的一个EXE文件的(提外话了)
我还是讲讲则个程序把!
操作系统从41A的地址起有32个字节的键盘缓冲区。当你的程序运行结束后如果往此处写了内容,(例如“MENU。BAT”当然是ASC码直而非字符)系统就会执行MENU。BAT这个命令!
4 发表于 2003-10-04 00:00 ·  中国 湖北 武汉 联通
银牌会员
★★★
积分 1,681
发帖 512
注册 2003-08-02 00:00
22年会员
UID 7953
性别 男
状态 离线
还是给部分关键源码吧
Somehow somewhere I've got to choose.
No matter if it is win or lose.
5 发表于 2003-10-04 00:00 ·  中国 福建 福州 电信
元老会员
★★★
农民
积分 2,903
发帖 991
注册 2003-07-23 00:00
23年会员
UID 7391
性别 男
来自 福建省
状态 离线
呵呵,偶可是有看到帖子就回啊!
艰难奋长戟,万古用一夫

中国DOS联盟 http://www.cn-dos.net 欢迎大家来共同学习
我的MSN&E-Mail cn_archer@hotmail.com QQ 56049418
6 发表于 2003-10-08 00:00 ·  中国 湖北 武汉 联通
高级用户
★★
积分 677
发帖 194
注册 2003-09-13 00:00
22年会员
UID 9778
性别 男
状态 离线
写入键盘缓冲区的源程序
请看例程(请编译后执行,不要在编程环境中执行)
bat$ = "DIR/P" + CHR$(13) ''在本程序中此句是模拟键盘输入DIR/P然后按回车键
DEF SEG = &H40 ''''定义起始地址
FOR i = 1 TO 6
batAsc = ASC(MID$(bat$, i, 1)) ''''将字符转换成ASC码值
POKE &h1d+(i-1)*2, batAsc ''''将值写入键盘缓冲区
NEXT i
POKE &H1A, &h1d ''''键盘缓冲区的头
POKE &H1C, 11 ''''键盘缓冲区的尾
DEF SEG ''恢复段址

这个程序虽然代码不多,可是比我写的鼠标调用要难得多,在实验这个程序的时候不只死机了多少次!(并且在WINDOWS下死得很彻底!当然在DOS下也一样)才弄清楚键盘缓冲区的结构!这个结构可跟书上讲的不一样啊!因为书上没有讲操作系统是如何处理键盘缓冲区的!
这个程序可以用来写开机菜单!就向有些D版的光盘,开机后,有许多选项,例如当你选择了自动安装操作系统,菜单程序就会向键盘缓冲区写“SETUP”等等这样的内容,然后菜单程序结束,操作系统读键盘缓冲区的内容,并执行它!
如果你用SHELL “DIR/S”这个语句也能执行DIR命令!
它与SHELL语句最大的区别是
SHELL是在程序运行中执行,要占用系统内存!
而写键盘缓冲区后,DIR会在程序结束后执行!


注意:程序里面的DIR/P这个字符串可以是别的内容!

7 发表于 2003-12-09 00:00 ·  中国 湖北 武汉 联通
高级用户
★★
积分 677
发帖 194
注册 2003-09-13 00:00
22年会员
UID 9778
性别 男
状态 离线
如果大家结合我发过的调用鼠标按纽的那篇帖子,可以自己做一个图形界面的开机菜单,在AUTOEXEC。BAT里加载。
当然,你还可以做些别的功能在里面!

大家有好的想法和程序不要毒自想用!
8 发表于 2003-12-09 00:00 ·  中国 浙江 温州 电信
初级用户
积分 110
发帖 4
注册 2003-12-09 00:00
22年会员
UID 13913
性别 男
状态 离线
你能不能叙述的清楚点,我不知道你的那个有什么用?
9 发表于 2003-12-09 00:00 ·  中国 湖北 武汉 联通
高级用户
★★
积分 677
发帖 194
注册 2003-09-13 00:00
22年会员
UID 9778
性别 男
状态 离线
呵呵 :)
你这样问啊!我也不知道有什么用!不过我想你没有真正用过QB吧!你如果把字符“DIR/P”改成“FDISK”又会出现别的FDISK这个工具,如果改成“SETUP”,并且在WIN98安装目录下,那么会出现WIN98的安装界面!

我只用它做过开机菜单,当然还可以给GHOST做个壳!还有很多、很多,我只是从技术上讨论一下程序在退出后还能执行别的程序软件这个问题,给大家个我实验过、]可以用的例程。
程序很简短我又特地加了注释!我自己用的是做成子程序了,在这个基础上改进过的,可以是任意的16个字符
至于你用不用,或者是懂不懂这就不是我关心的了。(我怕我上面的讲解不够清楚,特地在QQ上问了刚刚学QB的,他说看得懂,很明白)
论坛跳转: