Windows批处理文件启动带有按钮的图形用户界面

10

如何创建一个带有多个按钮的窗口,这些按钮在点击后不会消失。我试图制作一个简单的窗口框,其中包含可以打开程序的按钮。我一直在使用WBox.exe来制作我的GUI,但是当您按下任何按钮时,它会在启动程序之前关闭窗口。

HTML也出现在我的脑海中,但我不知道如何制作按钮,甚至不知道它是否可以在单击时启动程序。


1
这是我唯一会在带有 [batch-file] 标签的问题中推荐 PowerShell 的时候。 - SomethingDark
我该如何使用PowerShell?它是什么? - Zombie Waffles
如果您需要GUI并且想从某些脚本环境中使用它,那么PowerShell确实是一个可行的选择。它提供了对.NET框架的访问,包括Windows Forms。编写HTML应用程序(HTA)可能是另一个选择。 - IInspectable
@ZombieWaffles - 评论或者回答里面放不下这么多信息。PowerShell基本上是一个替代命令行环境的工具,微软正在极力推广它来取代批处理(尽管我发现批处理还可以,除非你想要使用GUI或者进行涉及不是小于2^32的整数的数学计算)。在谷歌上搜索“在PowerShell中制作GUI”,并且试着去玩一下你找到的教程。 - SomethingDark
2个回答

21
您可以通过一个批处理-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 文件一无所知,这个示例也足够简单,您也可以理解它。有关此问题的更多详细信息和链接,请参见此帖子


非常感谢,这比我期望的还要多。:DD - Zombie Waffles
@Aacini 在上面的代码中,你能否抑制cmd窗口并仅显示.hta文件? - ImNotLeet
2
@ImNotLeet:在setlocal下面插入以下代码:if not defined flag set "flag=1" & start "HTA" /MIN "%~F0" & goto :EOF,并将原来的goto :EOF改为exit - Aacini
@Aacini,你可以在开始hta部分之前添加批处理吗?太棒了。谢谢! - Martin Dreher
你为什么使用"window.close();"?当脚本不输出任何内容时,应该在什么时候删除它,以便关闭HTML窗口? - Volodymyr Nabok

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%

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接