есть ли способ имитации команды Ctrl + C в delphi? Проблема в том, что я хочу, чтобы из другого приложения, например, скопировал текст из Блокнота после выбора целевого текста.как имитировать Ctrl + c в Delphi
ответ
(Позвольте мне предисловие к этому, сказав, что использование буфера обмена для межпроцессного общения - плохая идея. Буфер обмена принадлежит пользователю, и ваше приложение должно использовать его только в результате того, что пользователь решил это сделать.)
Если вы выделили текст в блокноте, это будет получить содержимое в TMemo
на форме Delphi (использует только TMemo
и TButton
, добавить ClipBrd
к вашей статье изез):
procedure TForm1.Button1Click(Sender: TObject);
var
NpWnd, NpEdit: HWnd;
begin
Memo1.Clear;
NpWnd := FindWindow('Notepad', nil);
if NpWnd <> 0 then
begin
NpEdit := FindWindowEx(NpWnd, 0, 'Edit', nil);
if NpEdit <> 0 then
begin
SendMessage(NpEdit, WM_COPY, 0, 0);
Memo1.Lines.Text := Clipboard.AsText;
end;
end;
end;
образец результаты:
Если текст не выбран первый, отправить ему сообщение WM_SETSEL
первым. Передаваемые значения 0
и '-1' выбирают весь текст.
procedure TForm1.Button1Click(Sender: TObject);
var
NpWnd, NpEdit: HWnd;
begin
Memo1.Clear;
NpWnd := FindWindow('Notepad', nil);
if NpWnd <> 0 then
begin
NpEdit := FindWindowEx(NpWnd, 0, 'Edit', nil);
if NpEdit <> 0 then
begin
SendMessage(NpEdit, EM_SETSEL, 0, -1);
SendMessage(NpEdit, WM_COPY, 0, 0);
Memo1.Lines.Text := Clipboard.AsText;
end;
end;
end;
это симпатичный произведение хорошо. почему я не могу задать больше вопросов на этом веб-сайте? – Oussaki
@Oussaki: Я понятия не имею, почему вы не можете задавать больше вопросов. Вы должны проверить [meta] для этого типа информации; это вопросы, связанные с работой, дизайном и руководством StackOverflow. (Вы видели, что я ответил на ваш [другой вопрос] (http://stackoverflow.com/a/17605421/62576)?) –
ahaha Спасибо, Кен, ты здесь лучший. (У) – Oussaki
Есть ли способ, чтобы имитировать CTRL + C?
Способ использования этой функции - использовать функцию Win32 для синтеза нажатий клавиш. Вот пример:
procedure SendCtrlC;
var
Inputs: array [0..3] of TInput;
begin
ZeroMemory(@Inputs, SizeOf(Inputs));
Inputs[0].Itype := INPUT_KEYBOARD;
Inputs[0].ki.wVk := VK_CONTROL;
Inputs[0].ki.dwFlags := 0; // key down
Inputs[1].Itype := INPUT_KEYBOARD;
Inputs[1].ki.wVk := ord('C');
Inputs[1].ki.dwFlags := 0; // key down
Inputs[2].Itype := INPUT_KEYBOARD;
Inputs[2].ki.wVk := ord('C');
Inputs[2].ki.dwFlags := KEYEVENTF_KEYUP;
Inputs[3].Itype := INPUT_KEYBOARD;
Inputs[3].ki.wVk := VK_CONTROL;
Inputs[3].ki.dwFlags := KEYEVENTF_KEYUP;
SendInput(4, Inputs[0], SizeOf(Inputs[0]));
end;
Естественно приложение, которое вы хотите получить нажатие клавиши CTRL + C необходимо иметь фокус ввода.
- 1. Как имитировать Ctrl + LeftMouse с помощью Delphi?
- 2. Имитировать Ctrl-C в скрипт python
- 3. Как я могу имитировать CTRL + C в C#
- 4. Как имитировать Ctrl-A-D в оболочке?
- 5. Как имитировать комбинацию клавиш Ctrl-S?
- 6. Имитировать нажатие CTRL через флажок
- 7. Как имитировать терминал CTRL + C событие от unittest?
- 8. C# управление веб-браузером, как имитировать ctrl + u
- 9. Как имитировать CTRL + V нажатия клавиш (вставки) с помощью C#
- 10. Имитировать CTRL-C, чтобы выключить Java-приложение на C#
- 11. Как обработать Ctrl + C в консольном приложении Delphi?
- 12. Как имитировать точку останова Delphi в коде?
- 13. Как имитировать бит-поля в записях Delphi?
- 14. Используйте Ctrl +/как ярлык в программе Delphi
- 15. Как обнаружить ctrl-t keypress в Delphi
- 16. Как отправить ctrl + c процессу в C#?
- 17. Delphi Получение «Ctrl Tab» и «Ctrl Shift Tab» в приложении
- 18. Имитировать CTRL + W onclick на элементе
- 19. Имитировать ctrl + v event на javascript
- 20. Имитировать ctrl щелчок по Richfaces3.3 rich: extendedDataTable
- 21. Ctrl + Backspace в элементах управления Delphi
- 22. Как имитировать [Ctrl + левый щелчок мыши] в центре формы или открыть другую программу и ввести слово?
- 23. Отправить CTRL + V в ParentWindow в Delphi с SendMessage
- 24. FabricJs Ctrl C + Ctrl V
- 25. Как имитировать ctrl-click или shift-click с помощью webdriver.io?
- 26. Программно имитировать CTRL + A в DataGrid в ASP.NET?
- 27. Поймать Ctrl-C в C
- 28. Как реализовать действие Ctrl + C в C#?
- 29. Scala: Как предотвратить подпроцессы получать CTRL + C/Ctrl + C/SIGINT
- 30. Selenium IDE FireFox: имитировать CTRL + A в текстовом поле
Отправить сообщение 'WM_COPY'. –
http://www.delphipages.com/forum/showthread.php?t=152642 –
@ANdreas Я просто пробовал это раньше, и он не работает с другими процессами. – Oussaki