主页
Top.Mail.Ru Yandeks.Metrika
论坛:“主要”;
当前存档:2002.01.08;
下载:[xml.tar.bz2];

向下

如何向系统发送按键的消息? 找到类似的分支


Delphimun   (2001-12-20 12:10) [0]

如何向系统发送按键的消息? 例如,你把一条定时器发给这个消息,系统按下了按键,用户当前正在记事本中工作,这些字母写在笔记本中,你发送到系统



gek   (2001-12-20 12:32) [1]

你得到一个记事本句柄并将其发送到wm_keydown



Delphimun   (2001-12-20 13:10) [2]

我已经弄明白了(我不仅需要发送笔记本,而且需要一般系统)
以下是faq感兴趣的例子:

-------------------------------------------------- -----------------------
以下是向任何人发送点击的过程
一个可以接受输入的控件(窗口控件)
键盘。 您可以使用此技术打开键。
Windows NT下的NumLock,CapsLock和ScrollLock。 同样的技术有效
在Windows 95下用于CapsLock和ScrollLock,但不适用于密钥
NumLock键。
请注意,有四个程序:SimulateKeyDown() -
模拟击键(不释放)SimulateKeyUp() -
模拟密钥释放SimulateKeystroke() - 模拟命中
在键(按下和释放)和SendKeys()上,让您灵活
控制发送的键盘消息。
SimulateKeyDown(),SimulateKeyUp()和SimulateKeystroke()接收代码
虚拟键(virtural key)(如VK_F1)。 程序
SimulateKeystroke()获取一个额外的参数,当有用时
模仿点击版画屏幕。 当此参数为零时全部
屏幕将被复制到剪贴板。 如果额外的话
该参数等于1,仅复制活动窗口。
“按钮点击”的四种方法演示用法:
ButtonClick1 - 包括大写ButtonClick2 - 拦截所有
屏幕到剪贴板(剪贴板)。 ButtonClick3 - 拦截
活动窗口到剪贴板(剪贴板)。 ButtonClick4 - 将焦点设置为编辑和
发送一个字符串给它。
示例:

procedure SimulateKeyDown(Key:byte);
开始
keybd_event(Key,0,0,0);
结束;

procedure SimulateKeyUp(Key:byte);
开始
keybd_event(Key,0,KEYEVENTF_KEYUP,0);
结束;

procedure SimulateKeystroke(Key:byte; extra:DWORD);
开始
keybd_event(Key,extra,0,0);
keybd_event(Key,extra,KEYEVENTF_KEYUP,0);
结束;

procedure SendKeys(s:string);
var i:整数;
旗帜:布尔
w:字;
开始
{获取大写锁定键的状态}
flag:=不是GetKeyState(VK_CAPITAL)和1 = 0;
{如果它成为大写锁定
如果标志然后
SimulateKeystroke(VK_CAPITAL,0);
for i:= 1 to Length(s)do
开始
w:= VkKeyScan(s [i]);
{如果密钥翻译中没有错误}
如果((HiByte(w)<> $ FF)和(LoByte(w)<> $ FF))那么
开始
{如果钥匙需要按住Shift键 - 按住它}
如果HiByte(w)和1 = 1那么
SimulateKeyDown(VK_SHIFT);
{发送VK_KEY}
SimulateKeystroke(LoByte(w),0);
{如果钥匙需要 向下移动键 - 释放它}
如果HiByte(w)和1 = 1那么
SimulateKeyUp(VK_SHIFT);
结束;
结束;
{如果是大写锁定
如果标志然后
SimulateKeystroke(VK_CAPITAL,0);
结束;

过程TForm1.Button1Click(Sender:TObject);
开始
{切换上限锁}
SimulateKeystroke(VK_CAPITAL,0);
结束;

过程TForm1.Button2Click(Sender:TObject);
开始
{抓住屏幕}
{通过模拟按下打印屏幕键}
SimulateKeystroke(VK_SNAPSHOT,0);
结束;

过程TForm1.Button3Click(Sender:TObject);
开始
{将窗口捕获到剪贴板}
{通过模拟按下打印屏幕键}
SimulateKeystroke(VK_SNAPSHOT,1);
结束;

过程TForm1.Button4Click(Sender:TObject);
开始
{将焦点设置为窗口(编辑控件)并将其发送给字符串}
Application.ProcessMessages;
Edit1.SetFocus;
SendKeys(“Delphi是RAD!”);
结束;
-------------------------------------------------- -------------------------

现在我需要跟踪用户点击Claudia按钮(例如,alfit一个)并取消此点击\将其替换为我自己的。




Страницы: 1 整个分支

论坛:“主要”;
当前存档:2002.01.08;
下载:[xml.tar.bz2];

楼上









内存:0.57 MB
时间:0.029 c
4-22507
Slaviq
2001-11-06 17:55
2002.01.08
系统图标


1-22010
dorixe
2001-12-17 19:21
2002.01.08
dblclick上的树视图


1-22235
DDDeN
2001-12-17 06:47
2002.01.08
Заставка


3-21973
ZAV
2001-12-06 10:55
2002.01.08
DBNavigator组件


4-22488
Arick
2001-10-31 09:20
2002.01.08
如何找到加载的Dll的名称





南非荷兰语 阿尔巴尼亚人 阿拉伯语 亚美尼亚 阿塞拜疆 巴斯克 白俄罗斯 保加利亚语 加泰罗尼亚 简体中文 中国(繁体) 克罗地亚 捷克 丹麦语 荷兰人 英语 爱沙尼亚语 菲律宾人 芬兰 法文
加利亚西语 格鲁吉亚语 德语 希腊语 海地克里奥尔语 希伯来语 印地语 匈牙利 北日耳曼语 印度尼西亚人 爱尔兰语 意大利语 日本性玩偶 韩语 拉脱维亚 立陶宛 马其顿 马来语 马耳他语 挪威语
波斯语 波兰语 葡萄牙语 罗马尼亚 俄语 塞尔维亚 斯洛伐克 斯洛文尼亚 西班牙语 斯瓦希里 瑞典语 泰国人 土耳其 乌克兰 乌尔都语 越南人 威尔士语 意第绪语 孟加拉 波斯尼亚
宿务 世界语 古吉拉特语 豪萨语 苗族 伊博 爪哇 卡纳达语 高棉 老挝 拉丁语 毛利 马拉 蒙古人 尼泊尔 旁遮普 索马里 泰米尔人 泰卢固语 约鲁巴语
祖鲁
英文 Французский Немецкий Итальянский Португальский 俄文 Испанский