我有点新的批处理脚本。我最近有一个问题,关于如何在批处理文件运行时禁用cmd的关闭按钮。我看到一些关于如何克服这个问题的帖子。但是那里说的东西已经出来了我的触及范围..如果任何人都可以指向一个正确的方向,它会非常棒。如果sum1可以告诉我如何在我的批处理文件中执行我之前提到的操作,那将是非常优选的。所以当我在其他PC中使用它时效果仍然存在...
感谢
答案 0 :(得分:1)
你不能。
您可以使用VBScript隐藏批处理文件的执行
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run("yourbatchfile.bat"), 0, True
这会将其隐藏起来,但不会阻止他们在任务管理器中将其杀死。
你提出的问题无法完成。
答案 1 :(得分:1)
您可以创建一个可执行文件,为所有名为“cmd”的进程禁用[X]按钮,并在批处理文件的第一行运行该可执行文件。
这是一个c#程序就是这样做的:
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
namespace Remove__X__Button_from_another_process
{
class Program
{
[DllImport("user32.dll")]
static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert);
[DllImport("user32.dll")]
static extern bool DeleteMenu(IntPtr hMenu, uint uPosition, uint uFlags);
const uint SC_CLOSE = 0xF060;
const uint MF_BYCOMMAND = 0x00000000;
static void Main(string[] args)
{
//Console.Write("Please enter process name:"); // "cmd"
//String process_name = Console.ReadLine();
Process[] processes = Process.GetProcessesByName("cmd");
foreach (Process p in processes)
{
IntPtr pFoundWindow = p.MainWindowHandle;
IntPtr nSysMenu = GetSystemMenu(pFoundWindow, false);
if (nSysMenu != IntPtr.Zero)
{
if (DeleteMenu(nSysMenu, SC_CLOSE, MF_BYCOMMAND))
{
}
}
}
Environment.Exit(0);
}
}