请教把多个textbox里的文字复制到另一个软件对应的文本框里?
先感谢上一个贴子里,各位的指点http://bbs.csdn.net/topics/390316874。
继续接着上个贴子提问,现在大部分问题都解决了,能够实现1个文本框对另一个软件第1个文本框的复制了,还剩一个问题解决不了。
如上图所示,左侧是自己编的软件,可以按打印规则生成很多个需要手动编号的代码,然后需要自动复制到右侧的“打印软件”里。
说明一下前提:
这是两个不同的软件。左侧是自己编的,右侧不是,所以右侧的功能改不了。
后面我把form里相关的代码附上。
现在的问题是:“打印软件”的所有文本框的类名都相同“InputTextBox”,只是“句柄值”不同。所以在定位时,只能定位到“打印软件”的第一个文本框里,不知道是不是因为使用了“IntPtr.Zero”。不知道该如何处理才能定位到“打印软件”的其它文本框里,由于需要复制的文本框有很多个,折腾好几天了也没搞定,请大家再帮帮忙,给指点一下吧,先谢谢了。
附:相关代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace WindowsFormsApplication6
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
/// <summary>
/// 向指定窗口发送字符串
/// </summary>
[DllImport("User32.dll", EntryPoint = "SendMessage")]
static extern int SendMessage(IntPtr hWnd, int msg, IntPtr wParam, string lParam);
/// <summary>
/// 查找指定窗口句柄
/// </summary>
/// <param name="lpClassName">窗口类名</param>
/// <param name="lpWindowName">窗口标题</param>
/// <returns></returns>
[DllImport("user32.dll")]
private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
/// <summary>
/// 查找子窗口句柄
/// </summary>
/// <param name="hwndParent">要查找子窗口的父窗口句柄</param>
/// <param name="hwndChildAfter">上一个子窗口句柄</param>
/// <param name="lpszClass">子窗口类名</param>
/// <param name="lpszWindow">子窗口标题</param>
/// <returns></returns>
[DllImport("user32.dll", EntryPoint = "FindWindowEx")]
private static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
private void button1_Click(object sender, EventArgs e)
{
IntPtr parentWindow = FindWindow(null, "打印软件");
IntPtr userNameHwnd = FindWindowEx(parentWindow, IntPtr.Zero, "InputTextBox", null);//可恶啊,打印软件所有文本框的类名都叫InputTextBox,只是“句柄值”不同。
const int WM_SETTEXT = 0x000C;//发送文本
SendMessage(userNameHwnd, WM_SETTEXT, IntPtr.Zero, textBox1.Text.ToString());//成功把textbox1的内容复制到打印软件的第1个文本框里,但只能是第1个,无法写入第2个、第n个。
//如果有多个文本框需要复制,需要复制到打印软件的对应多个文本框里,该如何定位到其它文本框呢???
}
}
}
IntPtr parentWindow = FindWindow(null, "打印软件");
IntPtr userNameHwnd = FindWindowEx(parentWindow, IntPtr.Zero, "InputTextBox", null);//可恶啊,打印软件所有文本框的类名都叫InputTextBox,只是“句柄值”不同。
const int WM_SETTEXT = 0x000C;//发送文本
SendMessage(userNameHwnd, WM_SETTEXT, IntPtr.Zero, textBox1.Text.ToString());//成功把textbox1的内容复制到打印软件的第1个文本框里,但只能是第1个,无法写入第2个、第n个。
IntPtr userNameHwnd2= IntPtr userNameHwnd = FindWindowEx(userNameHwnd, IntPtr.Zero, "InputTextBox", null);//
//如果有多
试下