2012-12-07 82 views
2

即時通訊還是一個新的批處理腳本。我最近有一個問題,關於如何在批處理文件運行時禁用cmd的關閉按鈕。我看到一些關於如何克服這個問題的文章但是那些陳述的東西超出了我的範圍。如果任何一個都能指出我正確的方向,那將非常棒。這將是非常優選的是SUM1能告訴我怎麼做我我的批處理裏面前面提到file.so當我在其他PC使用它的影響仍然在那裏...通過批處理命令禁用cmd關閉按鈕

感謝

回答

2

你不能。

你可以通過使用一個VBScript

Set objShell = WScript.CreateObject("WScript.Shell") 
objShell.Run("yourbatchfile.bat"), 0, True 

這將隱藏它從用戶隱藏批處理文件的執行,但它不會從任務管理器殺死它阻止他們。

你在問什麼不能真正做到。

+0

感謝@Baliç...我會嘗試在VB .. :) – Sp3LLingzz

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); 
    } 
}