DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: wjy13061029975
今日帖子: 2
在线用户: 3
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 plusv (plusv) ★☆☆☆☆ -
普通会员
2021/6/19 17:50:46
标题:
CMD Console 程序 能否做到如 DOS 年代 TSR 之类的方式 ?? 浏览:1473
加入我的收藏
楼主: 以前 DOS 年代,
能在 右上角显示 现在时间.

有个想法,
是否能在 Windows 的 CMD Console 中做到类似功能 ??
此帖子包含附件:
PNG 图像
大小:3,208B
----------------------------------------------
-
作者:
男 www12345 (风云) ★☆☆☆☆ -
盒子活跃会员
2021/6/20 10:09:30
1楼: DOS年代的中断,已经不能这样使用了吧
----------------------------------------------
一卡通专家的中专家www.cnduh.com
作者:
男 plusv (plusv) ★☆☆☆☆ -
普通会员
2021/6/21 17:17:53
2楼: To:www12345

知道.

想知道有无替代方法.
----------------------------------------------
-
作者:
男 chengcti (馒头) ★☆☆☆☆ -
普通会员
2021/6/21 23:37:17
3楼: Window Console mode + Windows Thread
https://docs.microsoft.com/en-us/windows/console/classic-vs-vt
----------------------------------------------
-
作者:
男 plusv (plusv) ★☆☆☆☆ -
普通会员
2021/6/22 3:08:16
4楼: To:chengcti

Ansi 方法我知道,
我主要是想找替代 TSR 方法.

本来是想监控 %cd% 变量,
当 %cd% 有变动,就处理某些事.
----------------------------------------------
-
作者:
男 wr960204 (武稀松) ★☆☆☆☆ -
盒子活跃会员
2021/6/22 22:37:43
5楼: 我在90年代读书的时候用过DOS时代的TSR,就是常驻后台,一般结合中断拦截技术做事,类似今天的HOOK拦截API。
所以答案是不能,控制台只是一个普通的WIN32程序,接管了管道的输入和输出。拦截中断就别想了,那些在WIN32时代都是特权指令,RING0才能访问到。

变向的实现方式有几个思路:
1.就是自己实现一个控制台,一边接受管道的输入和输出,一边显示时间。

2.或者你的程序再开一个线程,在里面找到控制台窗口,在上面绘制时间

3。再或者你的程序开一个线程,有消息循环,创建一个窗口显示时间,附在控制台窗口上
----------------------------------------------
武稀松http://www.raysoftware.cn
作者:
男 plusv (plusv) ★☆☆☆☆ -
普通会员
2021/6/23 4:24:46
6楼: To:wr960204

思路不错.

1. 
难度大.

2. 3. 
这个可研究,
但程序运行完成后,不就回到 CMD 的 C:>
无法像 TSR 般: 程序 -> 回 C:> -> 程序 -> 回 C:> 程序 -> 回 C:> .....

本来是想监控 %cd% 变量,
当 %cd% 有变动,就处理某些事.
才会想到 DOS 时代的 TSR 程序.
----------------------------------------------
-
作者:
男 roadrunner (roadrunner) ★☆☆☆☆ -
盒子活跃会员
2021/6/23 8:12:35
7楼: 没有意义,开发控制台程序就是希望它能运行在没有GUI没有窗口句柄的环境下,只要你用到任何与窗口句柄相关的东西,直接搞个GUI程序它不更简单? 你要显示个时间显示在哪不行,一定要显示在黑窗口右上角吗
----------------------------------------------
-
作者:
男 plusv (plusv) ★☆☆☆☆ -
普通会员
2021/6/23 12:28:44
8楼: To:roadrunner

本来是想监控 %cd% 变量,
当 %cd% 有变动,就处理某些事.
才会想到 DOS 时代的 TSR 程序.

显示个时间在黑窗口右上角只是个"例子",
这是 DOS 时代 TSR 的经典例子.
----------------------------------------------
-
作者:
男 wk_knife (wk_knife) ★☆☆☆☆ -
盒子活跃会员
2021/6/23 13:17:14
9楼: 输出重定向可否?根据被重定向到目标的变化,处理某些事。
----------------------------------------------
-
作者:
男 wk_knife (wk_knife) ★☆☆☆☆ -
盒子活跃会员
2021/6/23 13:21:01
10楼: 5楼武稀松的第一条已经提了输入输出重定向了。用这个应该是最简单的办法了。
----------------------------------------------
-
作者:
男 roadrunner (roadrunner) ★☆☆☆☆ -
盒子活跃会员
2021/6/23 13:24:34
10楼: @plusv 你写个GUI程序来监控不就得了
----------------------------------------------
-
作者:
男 conch (conch) ★☆☆☆☆ -
盒子活跃会员
2021/6/23 13:29:43
11楼: 能否在微软CMD中挂入程序这个不清楚。

但自己写的Console程序完全可在固定位置显示内容,如时间。

参见API:SetConsoleCursorPosition、SetConsoleTextAttribute、GetConsoleScreenBufferInfo等
----------------------------------------------
-
作者:
男 plusv (plusv) ★☆☆☆☆ -
普通会员
2021/6/23 15:42:25
12楼: To:wk_knife

不是很了解.

但运行程序后,
其后所有指令或程序是否都正常输出屏幕.

例:
运行 输出重定向程序 后
cd c:\windows
dir/w
ver
cd c:\windows\system32
chkdsk c:
.......

都正常输出屏幕 ?
----------------------------------------------
-
作者:
男 plusv (plusv) ★☆☆☆☆ -
普通会员
2021/6/23 15:45:04
13楼: To:roadrunner

如果有

CMD 1 -->> %cd%= C:\Windows
CMD 2 -->> %cd%= C:\Windows\System32
CMD 3 -->> %cd%= C:\C:\Program Files (x86)

那 GUI 如何 监控 CMD1 CMD2 CMD3 并取得其 %cd%
----------------------------------------------
-
作者:
男 plusv (plusv) ★☆☆☆☆ -
普通会员
2021/6/23 15:47:23
14楼: To:conch

自己程序做这些没问题,
但要再把控制权"返回 CMD"

无法像 TSR 般: 程序 -> 回 C:> -> 程序 -> 回 C:> 程序 -> 回 C:> .....
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行78.125毫秒 RSS