【问题标题】:Bat File to Trigger a program hotkeyBat 文件触发程序热键
【发布时间】:2019-03-12 05:59:43
【问题描述】:

我必须记录一个程序的会话,并希望 Windows 任务(1 小时)运行一个 .Bat 文件,例如按“F1”停止录制,然后运行另一个 .bat 文件来关闭电脑。 我没有关闭电脑的问题,但“F1”的问题。

这是我认为可以工作的代码。

@echo off
cd "C:\Program Files\ShareX"
Start "" /b sharex.exe 
timeout /T 5 /nobreak >nul 
%SendKeys% "{F1}"
timeout /T 5 /nobreak >nul
taskkill /IM sharex.exe /F

谢谢

【问题讨论】:

  • “这是我认为它会工作的代码。”....我一直在寻找 30 秒,但我没有看到任何代码。
  • 我编辑了你的问题,请删除评论。
  • 好的,现在我们有了一些代码......你在哪里以及如何定义 %sendkeys% 你正在使用它,但从不显示你在哪里定义它?
  • 我认为通过我编写的代码将其转到 cmd。我不确定我在“ShareX 程序”中将 F1 指定为停止热键。当我运行 bat 文件时,它的响应 {{ '"{F1}"' 不被识别为内部或外部命令、可运行程序或批处理文件。}} 所以我不知道该怎么做。
  • 好的,但是您正在执行一个名为 %sendkeys% 的变量,这将是一个需要存在于某处的 vbs 脚本。%sendkeys% 不是一个神奇的函数,您实际上必须先创建变量你可以使用它。

标签: batch-file


【解决方案1】:

所以,如果我理解了这个问题... 这将为您创建 sendkey.vbs 并在您的代码中运行它...

{对不起我的有限英文}

@echo off & setlocal enabledelayedexpansion

set "_temp_vbs=%temp%\_temp_file_4vbs_.vbs"
>"!_temp_vbs!"^
    (
     echo/ Set WshShell = WScript.CreateObject^("WScript.Shell"^)
     echo/ Set objShell = WScript.CreateObject^("WScript.Shell"^)
     echo/ Wscript.Sleep 1500
     echo/ objShell.AppActivate "sharex.exe"
     echo/ Wscript.Sleep 1500
     echo/ WshShell.SendKeys "({F1})"
    )

cd /d "C:\Program Files\ShareX" & Start "" /b sharex.exe
timeout /t 3600 /nobreak && start "" /w "%Windir%\System32\wScript.exe" //nologo "!_temp_vbs!" 

>nul 2>nul ((
tasklist | findstr /lic:"ShareX.exe" 
) && ( 
timeout /t 5 /nobreak >nul & taskkill /f /im "ShareX.exe" &  del /q /f "!_temp_vbs!"
) || (
call shotdown_pc.bat & exit /b
)) >nul 2>nul

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-04
    • 2013-10-21
    • 2018-03-04
    • 2017-08-27
    • 2016-02-28
    • 2014-05-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多