模拟键盘输入(急!!!9月30日前回答者才得分)(200分)

  • 主题发起人 主题发起人 cxcsy
  • 开始时间 开始时间
C

cxcsy

Unregistered / Unconfirmed
GUEST, unregistred user!
我想在程序输入字符型数据时,按CTRL+S则可以“光标所在的位置”输入任意事先
“安排好”的字符比如"大家好"等等,换句话说:我如何往键盘缓冲区中放入字符
用以替代键盘输入???
 
请把问题描述清楚点!!!
 
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (ssCtrl in Shift) and ((Key = ord('s')) or (Key = ord('S'))) then
SetWindowText(Edit1.Handle, PChar('大家好'));
end;
不过,“光标所在的位置”的句柄我也不知道如何获得
 
有创意。
在输入框的KeyDown事件里面相应不成吗?
 
先将句子存放在一个数组中,当按快捷键时再从数组中
取出显示在屏幕上
 
wlmmlw:
能否在详细点?
 
keybd_event
不过只能输入英文
 
笨的方法是用剪贴板中转一下:)
(剪贴板会帮你解决光标位置的问题的,之后把剪贴板还原就可以了)
其实你用SendMessage发送消息也可以的啊
 
正在研究各位的方案!稍后回复!
 
hryyx: 我在帮助里没有早找到setwindowtext的使用方法?
wlmmlw: 同样也没有sendkey的使用方法?
shenloqi:剪贴板如何使用?
 
使用GetFocuse是可以获得的。
不过要放在KeyPress事件中哦。
tmp:='大家好';
SendMessage(GetFocus,WM_CHAR,0,LongInt(pchar(tmp)));

 
这个代码没有还原剪贴板,不过能完成你的要求:)
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text := '大家好!';
Edit1.SelectAll;
Edit1.CopyToClipboard;
Edit2.PasteFromClipboard;
end;
 
在uses中加入clipbrd
form的keypreview设为true

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (ssCtrl in Shift) and ((Key = ord('s')) or (Key = ord('S'))) then
begin
Clipboard.Astext:='大家好';
SendMessage(getfocus(),WM_paste,0,0);
end;
end;
 
正在测试!wait...
 
setwindowtext
Help->WindowsSDK
 
完整、完美答案:
form的keypreview设为true
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (ssCtrl in Shift) and ((Key = ord('s')) or (Key = ord('S'))) then
SetWindowText(getfocus(), PChar('大家好'));
end;
 
QuickSilver和shenloqi的方法已获得成功!
hryyx:你的答案我没法实现!
在此向各位表示衷心的感谢,你们都是我的老师,再次谢谢!!!
 
TO:cxcsy
     如果方便能否把例子发到我的邮箱,谢您了!
     fdaf4@163.com
 

Similar threads

I
回复
0
查看
623
import
I
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
665
import
I
后退
顶部