Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows批处理文件启动带有按钮的gui_Windows_User Interface_Batch File_Button_Menu - Fatal编程技术网

Windows批处理文件启动带有按钮的gui

Windows批处理文件启动带有按钮的gui,windows,user-interface,batch-file,button,menu,Windows,User Interface,Batch File,Button,Menu,我如何创建一个包含多个按钮的窗口,在单击按钮时不会消失。我想做一个简单的窗口框,里面有可以打开程序的按钮。我一直在为我的gui使用WBox.exe,但是当你按下任何按钮时,它会在程序启动之前关闭窗口。 HTML在我脑海中闪过,但我不知道如何制作按钮,甚至不知道它是否可以在单击时启动程序。您可以通过批处理HTA混合文件以一种相对简单的方式来实现这一点;这是一个例子: <!-- :: Batch section @echo off setlocal echo Select an option

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

您可以通过批处理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>

HTA按钮
窗口。resizeTo(374100);
功能关闭(回复){
var fso=新的ActiveXObject(“Scripting.FileSystemObject”);
fso.GetStandardStream(1).WriteLine(回复);
window.close();
}
第一选择
第二种选择
第三种选择

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

您可以使用


这是我唯一一次就带有[batch file]标记的问题推荐PowerShell。我如何使用PowerShell?它是什么?如果你需要一个GUI,并且想在一些脚本环境中使用它,那么它确实是一个可行的选择。它提供对.NET framework的访问,包括。写一篇评论可能是另一种选择。@ZombieWaffles-有很多方法,太多的信息无法放在评论中,甚至无法给出答案。PowerShell基本上是一个替换命令行环境,Microsoft正在大力推动替换batch(尽管我发现batch很好,除非您想使用GUI或涉及不小于2^32整数的数字的数学)。谷歌“在PowerShell中制作GUI”,并与您找到的教程一起玩。非常感谢您,这超出了我的期望:DD@Aacini在上面的代码中,您是否可以抑制cmd窗口并仅显示下面的.hta?@ImNotLeet:&goto:EOF
并通过
exit
@Aacini更改原始的
goto:EOF
。您可以在开始使用hta零件之前添加批次吗?太棒了。谢谢为什么使用“window.close();”?当删除它时,当html窗口未关闭时,脚本不会给出任何输出。
@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%