小编Han*_*les的帖子

防止在Fn已经运行时再次调用它

我正在使用inputbot编写一个程序,为我的计算机提供一些全局宏.例如,当我按下h键时,它应该执行宏输入

你好,世界

进入当前的应用程序.我试图像这样实现它:

extern crate inputbot;

fn main() {
    let mut callback = || {
        inputbot::KeySequence("Hello World").send();
    };

    inputbot::KeybdKey::HKey.bind(callback);

    inputbot::handle_input_events();
}
Run Code Online (Sandbox Code Playgroud)

然而,当我按下h键时我实际得到的是:

hHHHHHHHHHHHHHHHHHHHHHHHHHEHEHhEhEEHHhEhEhEHhEHHEHHEEHhEHlhEHEHHEHLEHLHeeleleelelelllelelleelehlhehlleeheehelheelleeleelhllllllellelolelellelleoleloloelellololol olollollelllolllol lloo醇○◎升LO lolooloooloo厕所LOWOLO OL OLW WOWO大号WLLOLOW LOOOOöWOWW低öoOow WWW WOW wowooWWWO oOWRWOoorW¯¯行oOWorororWRRWLR rLROwoRWLWOworo WorrrRWl流öWRLR OLWöOWLDol rollWWLDWowDLlroWWořoWDWOL dorRrwrolrdrrorlrLWDRdodRLowdllrllolrdlrddolrdlrldowldorowlrdlrorloLDLWDLoddlrddlrdldldldrrdordldrlrddrodlrrldoldlrlddldlrdlldlrdlddrlddldddlddlddd

每次发送h密钥事件时,宏都会触发它自己.

如何Fn在另一个实例仍在运行时阻止再次调用?这是小型应用程序的主要功能,因此没有什么可以真正担心兼容性.


我天真地尝试修复此问题是添加一个mut running变量main,在运行时callback设置为true,或者immediately如果已经为真则返回:

extern crate inputbot;

use std::time::Duration;
use std::thread::sleep;

fn main() {
    let mut running = false;
    let …
Run Code Online (Sandbox Code Playgroud)

macros concurrency keyboard-shortcuts rust

2
推荐指数
2
解决办法
124
查看次数

标签 统计

concurrency ×1

keyboard-shortcuts ×1

macros ×1

rust ×1