我一直在使用以下代码来捕获控制中断,但没有得到任何回报:
程序执行过程中的控制中断导致以下情况发生:
1)Invokes interrupt trap 1Bh
2)Places 00:00 into keyboard buffer
3)Sets flag 80h at memory 40:71h检测“控制中断”(已编译)的示例:
DO
X$=INKEY$
IF X$=CHR$(0)+CHR$(0) THEN
PRINT "*break*"
END
END IF
LOOP另一个检测“控制中断”(已编译)的示例:
DEF SEG = &H40
POKE &H71, 0
DEF SEG
DO
DEF SEG = &H40
X = PEEK(&H71)
DEF SEG
IF X = 128 THEN
PRINT "*break*"
END
END IF
LOOP我遗漏了什么吗?
发布于 2020-12-23 05:53:35
我在qb64中找到了以下代码来捕获ctrl中断:
ON TIMER(1) GOSUB breaktrap
TIMER ON
x = _EXIT ' disable break
DO
_LIMIT 50
x$ = INKEY$
LOOP
breaktrap:
v = _EXIT
IF v THEN
PRINT "*break*"
SLEEP 5
SYSTEM
END IF
RETURN发布于 2020-12-10 10:20:29
我编写了下面的代码(QB64),用于拦截按键和密钥释放。
在我的Linux操作系统上,这个程序运行,但它不拦截键压或密钥释放的中断键。
我不知道上述行为是否是由于我的操作系统,操作系统配置或我的键盘(罗技无线)。我认为这是由于QB64函数的_KEYHIT行为。
PRINT "Hit Esc to exit"
DO
_LIMIT 20
x& = _KEYHIT
IF x& <> x1& THEN
IF x& < 0 THEN
PRINT "-"; HEX$(-x&)
ELSE
PRINT "+"; HEX$(x&); " [";
y& = x&
WHILE y& > 256
PRINT CHR$(y& MOD 256); "] [";
y& = y& \ 256
WEND
PRINT CHR$(y&); "]"
END IF
x1& = x&
END IF
IF x = 27 THEN EXIT DO
LOOP
PRINT "Escape pressed."https://stackoverflow.com/questions/65212126
复制相似问题