首页 新闻 会员 周边 捐助

C# 向其他窗体发送字符串!

0
悬赏园豆:20 [已解决问题] 解决于 2013-01-18 14:09

有一需求,提高输入速度,将一些常用的字符串做成按钮形式,然后将此窗体设置为顶层窗体,但不占用焦点(就像QQ五笔里面的特殊符号一样),实现点击一个按钮就发送按钮的text字符串。但现在遇到一问题,一直无法解决:
向被发送窗体发送字符串时,接收窗体的输入法一直困扰着我, 我用的 SendKeys.Send(),它是模拟按键,然后到目标窗体时,输入法就会解析,然后无法实现发送目的!!!
请问如何解决!?另外,目标窗体的句柄可不唯一,因为是小助手类型的,呵呵,希望有人解答~~~

Cosmic_Spy的主页 Cosmic_Spy | 初学一级 | 园豆:191
提问于:2012-12-24 00:24
< >
分享
最佳答案
0

可以换种想法,使用Clipboard

private void CtrlV(string text)
        {            
            Clipboard.Clear();
            Clipboard.SetText(text);
            Keyboard.Type(text);
        }

Keyboard.Type()使用SendKeys.Send(^v)

收获园豆:10
daone | 菜鸟二级 |园豆:273 | 2012-12-28 13:30
其他回答(2)
0

找到输入框的句柄,直接用Windows API的SendMessage或PostMessage应该就可以了

收获园豆:5
I,Robot | 园豆:9783 (大侠五级) | 2012-12-24 00:38

上面都说过了,句柄不唯一,但是那个窗口是活动窗体,但我一直无法获取到其句柄,获得的只是本窗体的句柄……无解啊……

支持(0) 反对(0) Cosmic_Spy | 园豆:191 (初学一级) | 2012-12-24 09:30

@Cosmic_Spy: 你可以再找一下FindWindowEx这个API

支持(0) 反对(0) I,Robot | 园豆:9783 (大侠五级) | 2012-12-24 13:10

@狼Robot: 不好意思,解决问题的思路不是这个方向~~~

支持(0) 反对(0) Cosmic_Spy | 园豆:191 (初学一级) | 2013-01-18 14:07
0

你能拿到活动窗体的实体对象不.?

如果能拿到的话.那么让所有的窗体继承一个父窗体,在父窗体中创建一个SendMessage方法,

到时候只要是点击按钮,取到窗体的实体对象,然后调用SendMessage方法就可以了.

收获园豆:5
只会造轮子 | 园豆:2274 (老鸟四级) | 2012-12-24 10:26

我用GetActiveWindow和GetForegroundWindow都无法获取其句柄,另外,貌似你理解的有些偏差,我是发送字符串给外部程序……

支持(0) 反对(0) Cosmic_Spy | 园豆:191 (初学一级) | 2012-12-24 10:29

@Cosmic_Spy: 嗯.是我理解有问题...

如果是外部程序只能是根据句柄来做了.....

支持(0) 反对(0) 只会造轮子 | 园豆:2274 (老鸟四级) | 2012-12-24 10:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册