假设应用程序A,有三个textbox控件,怎么样获取这三个控件的值,进一步,如果对其赋值程序A,不一定是.net语言写的,有可能是VC,delphi等其他语言开发工具,能否给些思路,应该和内存中控件句柄有关吧

解决方案 »

  1.   


    http://www.cnblogs.com/dangjian/archive/2007/10/04/914367.html
      
    *****************************************************************************
    欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) 
    http://feiyun0112.cnblogs.com/
      

  2.   

    先找到控件句柄FindWindowEx
    在先这个发送个获取文本的命令GetWindowText有加密的可能取不到
      

  3.   

    用到的API:
    [DllImport("User32.dll",EntryPoint="FindWindow")] 
    private static extern IntPtr FindWindow(string lpClassName,string lpWindowName); 
    [DllImport("user32.dll",EntryPoint="FindWindowEx")] 
    private static extern IntPtr FindWindowEx(IntPtr hwndParent,IntPtr hwndChildAfter, string lpszClass, string lpszWindow); 
    [DllImport("User32.dll",EntryPoint="SendMessage")] 
    private static extern int SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, string lParam); 
    先用FindWindow得到顶级窗口的句柄,然后通过这个句柄去查找其子窗口,这要用到FindWindowEx,直到找到你所要的textbox为止。
    找到textbox的句柄后就可以对它发送WM_GETTEXT,WM_SETTEXT消息来获取,设置它的值了。hWnd = FindWindow(lpszClass,lpszWindowName); 
    if (!hWnd.Equals(IntPtr.Zero)) 

      StringBuilder sbBuf = new StringBuilder(512); //这里还可用GetWindowTextLength得到TextBox长度取代512
      SendMessage(hWnd,WM_GETTEXT,sbBuf.Capacity,sbBuf);   

      

  4.   

    可以把程序A做为参数传递,在程序B中操作A中的控件.