Как отправить ctrl+c в активный процесс?
В приложениях Windows forms я хочу отправить Ctrl+C в активное окно, чтобы получить выделенный текст для его перевода при нажатии Win+C.
Что я уже пробовал:
Process p = Process.GetProcessesByName(GetActiveProcessFileName()).FirstOrDefault(); if (p != null) { IntPtr h = p.MainWindowHandle; SetForegroundWindow(h); SendKeys.SendWait("^C"); } [DllImport("User32.dll")] static extern int SetForegroundWindow(IntPtr point); [DllImport("user32.dll")] public static extern IntPtr GetWindowThreadProcessId(IntPtr hWnd, out uint ProcessId); static string GetActiveProcessFileName() { IntPtr hwnd = GetForegroundWindow(); uint pid; GetWindowThreadProcessId(hwnd, out pid); Process p = Process.GetProcessById((int)pid); return p.MainModule.FileName; }
Richard MacCutchan
У вас есть вопрос?
john1990_1
Код работает только в приложении "блокнот", в остальных случаях он не вводится в приложение "Блокнот".:
if(p != null)...
p остается нулевым, когда активный процесс не Блокнот.
john1990_1
Теперь я столкнулся с этим из-за невозможности получить 64-битные приложения (когда я попытался получить имя Chrome, пожалуйста, дайте мне новый код, который действительно отправляет Ctrl+C в активное окно, чтобы получить выделенный текст и поместить его в буфер обмена.
Richard MacCutchan
Извините, но я не понимаю, что вы имеете в виду, или какое это имеет отношение к блокноту.
john1990_1
Мне нужен код, который отправляет Ctrl+C в активное окно Windows, чтобы поместить выделенный текст в буфер обмена.
Richard MacCutchan
Сначала вам нужно получить ручку окна, в которое вам нужно отправить ключи. Но если вы используете Win+C для запуска приложения, чтобы отправить Ctrl+C в другое окно, почему бы просто не использовать Ctrl+C в первом окне? И вы также должны знать, что Ctrl+C может не работать на некоторых пользовательских приложениях.
john1990_1
Это программа для перевода, я хочу, чтобы Win+C скопировал выделенный текст из активного окна и открыл свою программу и перевел текст, который выбран в активном окне окон пользователя. Теперь, возможно, Win+C проблематичен, потому что он активирует меню Пуск, я изменил его на клавишу F8. но теперь в Chrome "Inspect Element" открывается, когда я нажимаю F8 и программа отправляет Ctrl+C.
Richard MacCutchan
У меня такое чувство, что ты все усложняешь больше, чем нужно. Почему бы просто не использовать Ctrl+C на клавиатуре, чтобы скопировать текст из любого окна, на которое вы смотрите, а затем вставить его в свое приложение?