Tag: sendmessage

在另一个应用程序中模拟按键和键释放?

我需要与运行的外部应用程序进行交互,并发送特定的按键和发布。 我已经尝试使用SendKeys类,但它只完成了一半的工作,因为keypress正在通过立即密钥释放发送到外部应用程序。 我需要能够模拟外部应用程序的“按键按下”。 我现在正在尝试使用SendMessage的东西,但是现在它根本不起作用:(我甚至都没有得到错误。

用C#发送消息

我正在创建一个使用连接到几个不同DLL的主项目的应用程序。 从一个DLL窗口我需要能够打开另一个窗口,但DLL不能互相引用。 有人建议我在第一个DLL中使用sendmessage函数,并在主程序中有一个监听器,它将该消息定向到相应的DLL以打开它的窗口。 但是我对sendmessagefunction一点都不熟悉,而且我正在从网上找到的信息中把很多东西拼凑起来。 如果有人能告诉我使用sendmessage函数的正确方法(如果有的话),也许还有一个听众如何捕获那些令人惊奇的消息。 这是我到目前为止所获得的一些代码,我不确定我是否正朝着正确的方向前进。 [DllImport(“user32.dll”)] public static extern int FindWindow(string lpClassName, String lpWindowName); [DllImport(“user32.dll”)] public static extern int SendMessage(IntPtr hWnd, int wMsg, IntPtr wParam, IntPtr lParam); public void button1_Click(object sender, EventArgs e) { int WindowToFind = FindWindow(null, “Form1”); }

通过挂钩直接向另一个进程发送击键

我想知道,在摆弄了SendInput,SendKeys,PostMessage,SendMessage,SendNotifyMessage,keybd_event等等各种问题之后。 为了找到这个…尝试将键盘输入发送到另一个非前台进程是非常挑剔和不可靠的。 我尝试了一种SendInput的方法,我在其中欺骗Z顺序(保持当前窗口在顶部)并快速前进第三方窗口,发送输入,并重新前景我的窗口。 其中最终失败了,而且,不知何故,不确定为什么,设法同时也在我的窗口上触发击键而不是前景(导致在两个窗口之间发送和接收的无限循环,直到我设法关闭该过程)。 我尝试过SendMessage和PostMessage的不同组合。 一个用于向下,一个用于向上,因为同时使用向下和向上导致问题,例如PostMessage用于两者,导致密钥在接收窗口上复制。 或两者的SendMessage,这导致文本输入问题,但其他function正常。 用于keydown的SendMessage和用于keyUp的PostMessage适用于所有function,但可靠性率急剧下降,并且在关键事件中增加了延迟。 只有用于keydown的PostMessage和用于keyup的SendMessage的组合设法做了一些有用的事情,可能有5-10%的密钥注册失败率。 对于SentNotifyMessage也是如此(就可靠性而言,其行为与SendMessage基本相同)。 基本上,我已经结束了,我想知道直接在目标窗口中注入一个钩子,并做一些伏都教以这种方式向它发送击键,绕过消息队列等。这样做将会不会触发全局键事件,只会影响目标窗口。 唯一的问题是,当涉及到注射/挂钩等时,我是不可知的。所以我转向你,社区。 哇呢?