有沒有什麼辦法模擬delphi中的Ctrl + C命令? 問題是我想從另一個應用程序例如在選擇目標文本後從記事本複製文本。如何在Delphi中模擬Ctrl + c
1
A
回答
11
(讓我先說一下,使用剪貼板進行進程間通信是個不錯的主意,剪貼板屬於用戶,您的應用程序只應該使用它作爲用戶選擇的結果。 )
如果您在記事本中選擇文本,這將讓內容到一個Delphi窗體上的TMemo
(只使用一個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;
4
有什麼辦法來模擬CTRL + C?
要做到這一點的方法是使用Win32的SendInput
函數來合成擊鍵。這裏有一個例子:
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. 如何在Ruby中模擬Ctrl + C?
- 2. 如何在硒IDE模擬CTRL + A和CTRL + C
- 3. c#webbrowser控件,如何模擬ctrl +ü
- 4. 如何模擬ctrl + c在bash中複製文件
- 5. 如何在Windows cmd行中模擬ctrl-c?
- 6. 如何用C++模擬按Ctrl + C組合在Windows
- 7. C/C++中的Delphi類型的模擬
- 8. C#TextBox NewLine在KeyDownEvent上模擬Ctrl + Enter
- 9. 如何模擬shell中的Ctrl-A-D?
- 10. 如何模擬Ctrl-S組合鍵?
- 11. SendKeys.SendWait在C#中的方法,模擬CTRL + C
- 12. 模擬Ctrl-C到python腳本
- 13. 模擬CTRL + C用的SendKeys失敗
- 14. 如何模擬CTRL +點擊watir-webdriver?
- 15. 我可以在vb studio的Adobe PDF閱讀器中模擬CTRL-a,CTRL-c嗎?
- 16. 如何模擬使用C#的CTRL + V按鍵(粘貼)
- 17. 如何在C#中模擬C++聯合?
- 18. 模擬CTRL-C來關閉Java應用程序在C#
- 19. 模擬CTRL + W onclick元素
- 20. 模擬ctrl點擊Richfaces3.3 rich:extendedDataTable
- 21. 如何CTRL-C
- 22. 如何模擬C/C++中的中斷?
- 23. 如何在python中「模擬」C++參考?
- 24. 如何在Java中模擬C#as-operator
- 25. 如何在C#中模擬ANSI終端?
- 26. 如何在C中模擬按鍵#
- 27. 如何在C#中模擬類成員?
- 28. 如何在C中模擬按鍵#
- 29. 如何在c中模擬XHttpRequest#
- 30. 如何在C中模擬打印機#
發送'WM_COPY'消息。 –
http://www.delphipages.com/forum/showthread.php?t=152642 –
@ANdreas我只是嘗試它之前,它不與別人合作的過程。 – Oussaki