Отправка команды в открытую cmd.exe - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, необходимо отправить в ЗАРАНЕЕ ОТКРЫТУЮ кмд команду. если вообще возможно.
Актуально, не могу найти нигде, помогите пожалуйста, я уже не могу)
Просто великолепные ответы... я не знаю уже где искать... думал хоть вы поможете

Решение задачи: «Отправка команды в открытую cmd.exe»

textual
Листинг программы
using System;
using System.ComponentModel;
using System.Runtime.InteropServices;
using System.Windows.Forms;
 
namespace AttachConsoleSample
{
    static internal class Program
    {
        [DllImport("kernel32.dll", SetLastError = true)]
        public static extern bool AttachConsole(uint dwProcessId);
 
        [DllImport("user32.dll", SetLastError = true)]
        static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
 
        [DllImport("kernel32.dll", SetLastError = true)]
        public static extern bool FreeConsole();
 
        [DllImport("user32.dll", SetLastError = true)]
        static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint lpdwPocessId);
 
        static private void Main(string[] args)
        {
            IntPtr hWnd = FindWindow("ConsoleWindowClass", "Командная строка");
            if (IntPtr.Zero == hWnd)
            {
                ShowErrorMessage(new Win32Exception(Marshal.GetLastWin32Error()).Message);
                return;
            }
            
            uint processId;
            GetWindowThreadProcessId(hWnd, out processId);
            if (0 == processId)
            {
                ShowErrorMessage(new Win32Exception(Marshal.GetLastWin32Error()).Message);
                return;
            }
 
            bool result = AttachConsole(processId);
            if (false == result)
            {
                ShowErrorMessage(new Win32Exception(Marshal.GetLastWin32Error()).Message);
                return;
            }
 
 
            
            //
            // Присоединились к консоли.
            // Делаем здесь что нужно
            //
 
 
 
            result = FreeConsole();
            {
                ShowErrorMessage(new Win32Exception(Marshal.GetLastWin32Error()).Message);
                return;
            }
        }
 
        static private void ShowErrorMessage(string message)
        {
            MessageBox.Show(message, "AttachConsoleSmaple", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
 
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5