回 帖 发 新 帖 刷新版面

主题:[讨论]C# 向另一程序的文本框内发消息(已知句柄)

两个c#应用程序,第一个程序上只有一个textbox控件
另一程序上有一Button按钮 和 textbox控件
在另一个程序的textbox控件内输入信息 点击Button按钮 将消息发送到第一个程序的textbox控件内。

回复列表 (共12个回复)

沙发

制作一个简单的程序,窗体上一个CLICK按钮!点击按就触发事件! 
首先判断是否存在特定程序(该特定程序有一个密码文本框,一个“确定”和一个“取消”按钮),给密码框填入密码(获取密码框句柄,把密码传递给密码框),模拟点击“确定”按钮,实现自动登陆! 
现在把代码发给大家,大家帮我看一下,我的值为什么无法传递给密码框。 
声明部分: 
[DllImport( "user32.dll ")] 
                         public   static   extern   IntPtr   FindWindow(string   lpClassName,   string   lpWindowName); 
  
                         [DllImport( "user32.dll ")] 
                         public   static   extern   IntPtr   FindWindowEx(IntPtr   hwndParent,   IntPtr   hwndChildAfter,   string   lpszClass,   string   lpszWindow); 
  
                         [DllImport( "user32.dll ",   CharSet   =   CharSet.Unicode)] 
                         public   static   extern   IntPtr   PostMessage(IntPtr   hwnd,   int   wMsg,   IntPtr   wParam,   IntPtr   lParam); 
  
                         [DllImport( "User32.dll ",   CharSet   =   CharSet.Auto)] 
                         public   static   extern   bool   SetWindowText(IntPtr   hwnd,   string   lpString); 
  
CLICK部分: 
  
private   void   button1_Click(object   sender,   EventArgs   e) 
                         { 
                                
                                     IntPtr   hwnd_win; 
                                     IntPtr   hwnd_button; 
                                     IntPtr   hwnd_password; 
  
                                     hwnd_win   =   FindWindow(null,    "输入口令 ");//窗口的名称,获取窗口句柄 
                                     hwnd_button   =   FindWindowEx(hwnd_win,   new   IntPtr(0),   null,    "确定(&O) ");//获取确定按钮的句柄 
                                     hwnd_password   =   FindWindowEx(hwnd_win,   new   IntPtr(0),    "IRIS.password ",   null);//获取密码框的句柄,通过SPY++获得 "IRIS.password "类名 
                                   
                                     SetWindowText(hwnd_password,    "kjc0311 "); 
                                     const   int   BM_CLICK   =   0x00F5; 
                                     Message   msg   =   Message.Create(hwnd_button,   BM_CLICK,   new   IntPtr(0),   new   IntPtr(0)); 
                                     PostMessage(msg.HWnd,   msg.Msg,   msg.WParam,   msg.LParam);    
                             
                         } 
我知道应该出在SetWindowText(hwnd_password,    "kjc0311 ");这句话上,请大家帮忙看看! 
贴子来源飞诺网(http://bbs.firnow.com) 详细出处参考:http://bbs.firnow.com/dview2t71926.html

板凳


本问题已经解决,如果大家谁需要源代码的话,请顶贴留言,告知你的邮箱即可。谢谢!

3 楼


我想看下你的源代码 我的邮箱是315130552@qq.com,谢谢

4 楼

我要邮箱tr0217@163.com。谢了

5 楼


我做过这个,在获取前先要用AttachThread() API来为两个进程进行连接
连接了以后就可以用setwindowtext和getwindowtext函数了

6 楼

542412009@qq.com

7 楼


没有搞过

8 楼

我要   我邮箱a542851743@126.com

9 楼

楼主,请共享一下源码,我的邮箱mogaoyong@gmail.com

10 楼

不知道该帖子是否可用了,我的邮箱是ziqiandai@sina.com,谢谢楼主了

我来回复

您尚未登录,请登录后再回复。点此登录或注册