【问题标题】:Windows Batch file launch a gui with buttonsWindows 批处理文件启动带有按钮的 gui
【发布时间】:2016-04-24 08:23:45
【问题描述】:

如何创建一个带有多个按钮的窗口,在其中单击它们时不会消失。我正在尝试制作一个带有可以打开程序的按钮的简单窗口框。我一直在为我的 gui 使用 WBox.exe,但是当您按下任何按钮时,它会在程序启动之前关闭窗口。 HTML 闪过我的脑海,但我不知道如何制作按钮,甚至不知道它是否可以在点击时启动程序。

【问题讨论】:

  • 这是我唯一一次在带有 [batch-file] 标签的问题上推荐 PowerShell。
  • 如何使用 PowerShell?它是什么?
  • 如果您需要 GUI 并希望在某些脚本环境中使用它,那么 PowerShell 确实是一个可行的选择。它提供对 .NET 框架的访问,包括 Windows Forms。写一个HTML Application (HTA) 可能是另一种选择。
  • @ZombieWaffles - 有办法,办法 太多信息无法放入评论,甚至是答案。 PowerShell 基本上是一个替代命令行环境,Microsoft 非常努力地替换批处理(尽管我发现批处理很好,除非您想使用 GUI 或涉及不小于 2^32 的整数的数学运算) .谷歌“在 PowerShell 中制作一个 GUI”并玩弄你找到的教程。

标签: windows user-interface batch-file button menu


【解决方案1】:

您可以使用radioButtons.bat动态设置按钮的数量

@echo off

::call radioButtons.bat "one" "two" "three"
for /f "tokens=* delims=" %%# in ('
  radioButtons.bat "one" "two" "three"
') do (
  set "selected=%%#"
 )
echo selected button number: %selected%

【讨论】:

    【解决方案2】:

    您可以通过 Batch-HTA 混合文件以相对简单的方式做到这一点;这是一个例子:

    <!-- :: Batch section
    @echo off
    setlocal
    
    echo Select an option:
    for /F "delims=" %%a in ('mshta.exe "%~F0"') do set "HTAreply=%%a"
    echo End of HTA window, reply: "%HTAreply%"
    goto :EOF
    -->
    
    
    <HTML>
    <HEAD>
    <HTA:APPLICATION SCROLL="no" SYSMENU="no" >
    
    <TITLE>HTA Buttons</TITLE>
    <SCRIPT language="JavaScript">
    window.resizeTo(374,100);
    
    function closeHTA(reply){
       var fso = new ActiveXObject("Scripting.FileSystemObject");
       fso.GetStandardStream(1).WriteLine(reply);
       window.close();
    }
    
    </SCRIPT>
    </HEAD>
    <BODY>
       <button onclick="closeHTA(1);">First option</button>
       <button onclick="closeHTA(2);">Second option</button>
       <button onclick="closeHTA(3);">Third option</button>
    </BODY>
    </HTML>
    

    将此代码保存在扩展名为 .BAT 的文件中。也许您需要调整window.resizeTo(374,100); 行中的值以匹配您的屏幕分辨率。这个例子很简单,即使你对 .HTA 文件一无所知,你也可以理解它。有关此问题的更多详细信息和链接,请参阅this post。

    【讨论】:

    • 非常感谢,这超出了我的预期。 :DD
    • @Aacini 在上面的代码中你能抑制 cmd 窗口并且只显示 .hta 吗?
    • @ImNotLeet: 在setlocal 下方插入这一行:if not defined flag set "flag=1" &amp; start "HTA" /MIN "%~F0" &amp; goto :EOF 并将原来的goto :EOF 更改为exit。
    • @Aacini 您可以在开始使用 hta-part 之前添加批处理吗?血腥的辉煌。谢谢!
    • 为什么要使用“window.close();”?何时删除它,当 html 窗口未关闭时,脚本不会给出任何输出。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-13
    • 2015-06-21
    • 2012-09-12
    • 1970-01-01
    • 1970-01-01
    • 2013-10-13
    相关资源
    最近更新 更多