C# 窗体应用程序如何去获取另外一个系统界面上文本框的值

just_lit 2014-07-22 09:59:02
写一个程序可以获取另外一个系统界面上文本框的值并且可以写入替换文本框的值,求思路和指导
...全文
6402 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
mjp1234airen4385 2014-07-29
  • 打赏
  • 举报
回复
这个使用windows API比较保险。 http://download.csdn.net/detail/mjp1234airen4385/1550580 看看这有有效果没
丿俗人 2014-07-29
  • 打赏
  • 举报
回复
如果是我我会写一个静态类来保存这个信息
伤逝的离别 2014-07-28
  • 打赏
  • 举报
回复
Form 1 f1; f1=(Form)this.Owner; label1.Tex=f1.textbox.Text;
just_lit 2014-07-28
  • 打赏
  • 举报
回复
通过控件ID是能过找到自己想要的控件(比如说文本框) 但是每当你要获取值的系统重启以后,这个控件ID就不一样了, 请问该如何动态获取这个控件ID??
有时想起 2014-07-28
  • 打赏
  • 举报
回复
这个系统界面的程序上写上修改文本框的值的方法,再对this的窗体创建对象 调用方法 可以吗
Peng_baoqing 2014-07-28
  • 打赏
  • 举报
回复
引用 5 楼 just_lit 的回复:
通过控件ID是能过找到自己想要的控件(比如说文本框) 但是每当你要获取值的系统重启以后,这个控件ID就不一样了, 请问该如何动态获取这个控件ID??
遍历找到窗体的所有的文本框然后来找吧
just_lit 2014-07-24
  • 打赏
  • 举报
回复
#region 获取另一系统文本框值 [DllImport("User32.dll", EntryPoint = "FindWindow")] public extern static IntPtr FindWindow(string lpClassName, string lpWindowName); [DllImport("User32.dll", EntryPoint = "FindWindowEx")] public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpClassName, string lpWindowName); [DllImport("User32.dll", EntryPoint = "FindEx")] public static extern IntPtr FindEx(IntPtr hwnd, IntPtr hwndChild, string lpClassName, string lpWindowName); //[DllImport("user32.dll", EntryPoint = "GetWindowText")] //public static extern int GetWindowText(int hwnd, string lpString, int cch); [DllImport("User32.dll", EntryPoint = "SendMessage")] private static extern int SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, string lParam); [DllImport("user32.dll ", EntryPoint = "GetDlgItem")] public static extern IntPtr GetDlgItem(IntPtr hParent, int nIDParentItem); [DllImport("user32.dll", EntryPoint = "GetWindowText")] public static extern int GetWindowText(IntPtr hwnd, StringBuilder lpString, int cch); #endregion private void button1_Click(object sender, EventArgs e) { IntPtr maindHwnd = FindWindow(null, "Form1"); //获得句柄 int i = 0; if (maindHwnd != IntPtr.Zero) { MessageBox.Show("找到了窗体!"); //找到窗体后这里如何去获取找到的这个窗体上的文本框的值??????? //控件id int controlId = 0x000003F4; //获取子窗口句柄 IntPtr EdithWnd = GetDlgItem(maindHwnd, controlId); SendMessage(EdithWnd, i, (IntPtr)0, string.Format("当前时间是:{0}", DateTime.Now)); //赋值没问题,表示句柄正确 StringBuilder stringBuilder = new StringBuilder(512); GetWindowText(EdithWnd, stringBuilder, stringBuilder.Capacity); MessageBox.Show(string.Format("取到的值是:{0}", stringBuilder.ToString()));//取值一直是空字符串 } else { MessageBox.Show("没有找到窗口"); } }
nikolaichow 2014-07-24
  • 打赏
  • 举报
回复
最笨的方法是循环查找:
foreach (Form f in Application.OpenForms)
            {
                if (!(f is Form1)) continue;
                foreach (Control c in (f as Form1).Controls)
                {
                    if (!(c.Name.Equals("textbox1", StringComparison.CurrentCultureIgnoreCase))) continue;
                    string s = (c as TextBox).Text;
                }
            }
当然还是可以有其他方法: http://social.microsoft.com/Forums/nl-NL/3ca0b2d4-2a0c-4a97-ba83-5b3585aa274a/c?forum=2212
threenewbee 2014-07-22
  • 打赏
  • 举报
回复
FindWidow找到句柄 获取 SendMessage(WM_GETTEXT) 设置 SendMessage(WM_SETTEXT)
wangnaisheng 2014-07-22
  • 打赏
  • 举报
回复

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧