#c# #excel #focus #console-application #setforegroundwindow
#c# #excel #фокус #консольное приложение #setforegroundwindow
Вопрос:
Я создаю программу, в которой я управляю Excel через консольное приложение, но мне нужно постоянно фокусироваться на консоли. Я уже пробовал некоторые методы, такие как SetForegroundWindow (), но это не сработало. Как я могу это сделать? Мне нужно, чтобы это было внутри цикла while, чтобы каждый раз, когда я вставляю символ (код, который выполняется, чтобы мне не приходилось каждый раз нажимать enter), он оставался в консольном приложении и не менял фокус в Excel.
foreach (Process p in prcss)
{
p.WaitForInputIdle();
IntPtr h = p.MainWindowHandle;
SetForegroundWindow(h);
if (p.ProcessName == prog || p.ProcessName == progcaps)
{
Console.WriteLine("nnProcess: {0} ID: {1}n", p.ProcessName, p.Id); //Imprime apenas o que queremos
}
string pname = p.ProcessName;
//Enter
SendKeys.SendWait("~");
SendKeys.SendWait("{F2}");
while (true)
{
//Code goes here
}
}
Комментарии:
1. К вашему сведению, если вы хотите автоматизировать Excel с. Net вы можете использовать Office Interop, который дает вам полный контроль через расширенный API.
2. Очевидно, что этот метод легко взломать и он подвержен ошибкам. Во время работы вашего приложения может появиться любая программа и перехватить фокус; сканер вирусов, обновления программы, системные сообщения и т.д… Используйте другой подход!
3. Я использую interop, это не весь код