Печать выходных данных в cmd

#c# #cmd #output

#c# #cmd #вывод

Вопрос:

Не мог бы кто-нибудь привести рабочий пример того, как я бы напечатал в командной строке переменную fg, пожалуйста.

 using System;
using System.Runtime.InteropServices;
using System.Text;

namespace Foreground {
  class GetForegroundWindowTest {

    [DllImport("user32.dll", CharSet=CharSet.Auto, ExactSpelling=true)]
    public static extern IntPtr GetForegroundWindow();

    [DllImport("user32.dll", CharSet=CharSet.Unicode, SetLastError=true)]
    public static extern int GetWindowText(IntPtr hWnd, StringBuilder lpString, int nMaxCount);

    public static void Main(string[] args){
        IntPtr fg = GetForegroundWindow(); //use fg for some purpose

        /// PRINT fg TO COMMAND LINE

    }
  }
}
 

Часть проекта, в которой это необходимо использовать:

Файл cs должен быть скомпилирован и запущен в cmd. Программа должна получить имя окна переднего плана пользователя и вывести заголовок этого окна в cmd.

Я пробовал:

 Console.WriteLine(fg)
 

и

 [DllImport( "kernel32.dll" )]
static extern bool AttachConsole( int dwProcessId );
private const int ATTACH_PARENT_PROCESS = -1;
 

Комментарии:

1. Консоль. Строка записи (fg). Хотя у вас может быть приложение с графическим интерфейсом и окно консоли не открыто. В прошлый раз, когда я смотрел, мне было слишком сложно попытаться открыть его. Возможно, вам лучше использовать текстовое поле или диалоговое окно с этим текстом в нем.

2. Этот вопрос не показывает каких-либо исследовательских усилий.

3. Глядя на GetWindowText(), я почти боюсь, что OP хочет выгрузить текст в окно , а не в само окно. Но тогда это не сильно отличается.

4. Роберт, просто четко опиши, какова твоя настройка, что делает программа, чего ты хочешь достичь, что ты пробовал и каким образом это не удалось. «РАСПЕЧАТАТЬ fg В КОМАНДНОЙ СТРОКЕ» и «Может ли кто-нибудь предоставить мне рабочий пример» недостаточно.

Ответ №1:

Вопрос не совсем ясен, но я предполагаю, что вы пытаетесь это сделать:

 IntPtr fg = GetForegroundWindow(); //use fg for some purpose

var bufferSize = 1000;
var sb = new StringBuilder(bufferSize);

GetWindowText(fg, sb, bufferSize);

Console.WriteLine(sb.ToString());
 

Комментарии:

1. Спасибо всем, кто ответил. Ошибка была ошибкой новичка с моей стороны — я ожидал увидеть вывод командной строки на этапе компиляции, а не на этапе .exe. Приношу свои извинения за всю вашу путаницу из-за моей путаницы.

Ответ №2:

Вы можете использовать

 Console.WriteLine(fg); 
 

Комментарии:

1. Консоль. WriteLine(fg) не выполняет печать в командной строке. Почему это может быть?

2. Что такое «командная строка»? Вы работаете в отладчике? У вас открыто окно cmmand в Windows? Вы вообще работаете под Windows?? Просто будьте ясны и полны в своем описании.

3. Я хочу, чтобы выходные данные печатались в cmd

Ответ №3:

 System.Diagnostics.Process.Start("CMD.exe",fg);