帮个忙,编个热键程序

要求,设定一个热键,然后执行一个批处理,
然后,在WIN。COM之前再KILL

具体说设定的热键是什么键

对呀,是不是在autoexec.bat中加载的?用来做系统锁的吗?
或类似doskey?

热键可以随便设,如CTRL+SHIFT之类,假如发现热键,则调用当前目录里的GO。BAT,文件名可以随便设。
这个热键在起动包中运行,用来恢复工作站目录,
我现在是用CHOICE命令,可是一但有人按ESC键,就不会动了,非得手工选择Y或N,不知ESC在CHOICE中的ERROR代码是多少,我是用Y和N来的,如果按Y就执行跳转,
choice /c:yn /n /t:n,1
if errorlevel 2 goto ndis5

;3秒内,按f10,自动运行auto.bat

setblc macro seg_adr,parag
push es
mov ax,seg_adr
mov es,ax
mov bx,parag
mov ah,4ah
int 21h
pop es
endm

exec macro path,comline,parblk
mov dx,offset path
mov bx,offset parblk
mov word ptr parblk[2],offset comline
mov word ptr parblk[4],cs
mov word ptr parblk[6],5ch
mov word ptr parblk[8],es
mov word ptr parblk[10],6ch
mov word ptr parblk[12],es
mov ax,4b00h
int 21h
endm

code segment
assume cs:code,ds:code
org 100h
start:
jmp begin
path db “command.com”,0
para db 16,“/c call auto.bat”,0dh
parblk db 14 dup(0)
time0 dw 0
begin:
xor ah,ah
int 1ah
mov time0,dx
lop:
mov ah,1
int 16h
jz skip
xor ah,ah
int 16h
cmp ax,4400h
jne skip
setblc cs,1000h
exec path,para,parblk
jmp exit
skip:
xor ah,ah
int 1ah
sub dx,time0
cmp dx,55
jnc exit
jmp lop
exit:
int 20h
code ends
end start

做好的程序没法上传!!!

请自行使用tasm汇编成目标程序,
然后用tlink /t 连接成.com文件.
运行时,当前目录下必须有command.com和自编的auto.bat文件.

哦,原来老胡需要的是自己在dos下定制功能键,那很简单.用dos命令就可以解决,并且可以自己任意设定每个功能键的作用.教你一招:

在config.sys文件里加载ansi.sys
delvice=ansi.sys

然后在自动批处理autoexec.bat里这么干:

PROMPT $e[0;66;“go.bat”;13p (最好放在比较靠前的位置哟)
(上面这一句的功能是按f8键就调用go.bat,66代表f8键)

下面在给你些其它键值:
f7:65
shift+f1:84
shift+f2:85
shift+f3:86
shift+f4:87
shift+f5:88
shift+f6:89
shift+f7:90
shift+f8:91
shift+f9:92
shift+f10:93
ctrl+f1:94
ctrl+f2:95
ctrl+f3:96
ctrl+f4:97
ctrl+f5:98
ctrl+f6:99
ctrl+f7:100
ctrl+f8:101
ctrl+f9:102
ctrl+f10:103
呵呵,当然还有更多,就不一一列举了.
根据上面的举例,你随便换个键值数字和要调用的批处理或程序名就可以了.
当然了,定义一个功能键执行多个命令也是可以的,中间用13(代表回车)隔开就行了.最后用13p结尾就可以了,比如
PROMPT $e[0;66;“go.bat”;13;“go2.bat”;13;“dir /w”;13p

老胡,你明白了吗.ansi.sys是dos下自带的键盘定制程序.

胡兄好象不是要自定义dos功能键,而是hotkey.

哦^-^,那在autoexec.bat里的prompt语句运行之后,用上面的那些定义过的键也可以随时调用go.bat呀.
这样做还有个好处,老胡可以自己定义热键或多个热键,以及想要调用的程序.自由呀.

1.你这样定义的热键只能在autoexec.bat执行完毕,回到dos提示符下才有效.
启动包不会设计成启动到dos,然后等待你按键吧.
2.不能定时.我想,在启动包里应该是几秒钟不按键,正常启动系统.
3.还有就是胡兄说的要kill掉热键程序,总不能带着它进入98吧.

哦,你说的是对的.我手上只有2k系统,没有办法测试,也没有办法写dos下的程序.只是依稀记得当初dos下的这个定义键盘程序,贴出来让他试试.

汇编连接好的F10.com文件.
[url]http://www.huangyh.net/bbs/UpLoadFile/2003121620153078845.rar[/url]

zY兄的,DOS东东,让我长知识了,谢谢啊
XFWHG兄的程序非常好啊,我一定试试,
还有一位兄弟传了我明智里的热键程序,按热键后,出来菜单,可以选择,是恢复目录,或恢复下载,恢复删除,恢复注册表之类的,
我只要个简单的,XFWHG兄的,会常驻内存吗?怎么KILL,还是3秒过后自动消失?

不常驻,3秒后自动退出,不过你的启动速度要比原来慢3秒了,你也可以改成1秒,只要将原程序的cmp dx,55改为cmp dx,18就行了.

在下受教了。谢谢各位!

XFWHQ兄,假如我把GO。BAT转换成EXE文件,用BAT2EXE,是不是就不要COMMAND。COM?

对的,但要将
path db “command.com”,0
para db 16,“/c call auto.bat”,0dh
改为
path db “go.com”,0
para db 0,0dh

前面的程序,我用内部命令call调用auto.bat,是为了防止执行完auto.bat,不能返回原来的主批文件继续执行,而内部命令不好直接调用,只好作为command.com的参数来调用了.如果将auto.bat编译成.com文件就不要这么麻烦了.

顺便说一声,别老是把我的名字弄错了,哈哈…

XHWFQ老兄,谢谢你了,今天用了你的F10。COM程序,很爽啊,自动调用AUTO。BAT,不错,高手。