这段代码没试过,应该可以吧,可以就要给我分了
在form的keydown事件中写:
if(Shift.Contains(ssShift))
{
if(Key==VK_INSERT)
{
//你的代码;
}
在form的keydown事件中写:
if(Shift.Contains(ssShift))
{
if(Key==VK_INSERT)
{
//你的代码;
}
解决方案 »
- 请问如何关闭WINDOWS,获得计算机名,和屏蔽CTRL+ALT+DEL
- 如果让ImageList中的图标能自定义关键字,就像VB中的ImageList一样?
- ※※※※快来看,偶有大量的9成新编程书减价处理(深圳白石洲)※※※※
- 怎样将串口中读到的信息写到一个文件中?
- 关于TTimer数组的问题
- RASDIALPARAMS中的RasDial时需要UESE 什么??/?????????
- ★★★delphi中的sql语句执行问题
- 关于通过网络用ADO连接ACCESS数据库的一些小问题,很简单的哦!
- 数据库的问题。对于高手是很简单的。我是处学者,帮帮我吧
- dbchart显示节点值得问题
- 上海:我们这里需要Delphi高手!
- 关于ACCESS库在DELPHI中应用的问题
麻烦你,就用你的方法,帮我弄一个实例,我想不会太复杂,请帮忙。
li_key_shift,li_key_tab :intger;
begin
li_key_shift := 16;
li_key_tab := 9;
keybd_event(li_key_shift, 0, 0, 0); //SHIFT按下
keybd_event(li_key_tab, 0, 0, 0); //TAB 按下
keybd_event(li_key_tab, 0, 2, 0); //TAB 释放
keybd_event(li_key_shift, 0, 2, 0); //SHIFT释放
end;//li_key_tab 改成 insert的键码 即可
keybd_event(vk_insert, 0, KEYEVENTF_EXTENDEDKEY, 0);
keybd_event(vk_shift, 0, 2, 0);
keybd_event(vk_shift, 0, 0, 0);
keybd_event(vk_insert, 0, KEYEVENTF_EXTENDEDKEY, 0);
keybd_event(vk_shift, 0, 2, 0);
吧
我怎么看不懂你写的内容呀?
你这个方法不错,看来这五十分非你莫属了,能否借问一句,为什么vk_insert要用keyeventf_extendedkey而不能用keyeventf_keyup呢?
另外,能否用postmessage向一个有句柄的编辑框发送这个Shift+insert键,我试个很多次,总是不能成功,请问你能做到吗?
为什么要用keyeventf_extendedkey,我也不是很清楚。keyeventf_extendedkey和keyeventf_keyup不冲突,应该可以一起使用的,keyeventf_keyup+keyeventf_extendedkey。keyeventf_keyup表示按键抬起。第二个问题我试了一下,下面的代码土了一点,但是可以用的。
keybd_event(vk_shift, 0, 0, 0);
application.ProcessMessages;
sendmessage(edit1.Handle,wm_keydown,vk_insert,0);
keybd_event(vk_shift, 0, 2, 0);其实我对这个也不是很熟悉,只是乱试了一下:)。
你提出的keybd_event加wm_keydown的方法我又试了一下,结果如下:
有些情况下有效,比如Delphi自身的文本框控件和windows记事本,不管是否有显示,也不管是否在前台,都是可以用的;但有些情况下时而可用,时而不可用,比如我现在正输入文字的回复框里,如果这个文本框所在的网页是在前台显示,则有时可以响应我们模拟输入的组合键,如果不是在前台显示,则完全没有响应。
以上问题,不知是何故,不知有没有专家大侠能给出一个比较满意的回复或是解决方法,让我们只要指定句柄就能成功的模拟出Shift+insert或其它的组合键。