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