如上图所示,我做了一个winform,能根据需要生成符合编号要求的随机数。
由于有多处需要这样操作,为了提高效率,我想在点击“插入”按钮时,直接把这个随机数复制到 另一个软件的“编号”等文本框里。
请大家指点一下我该怎么编这个“插入”按钮的代码?
由于有多处需要这样操作,为了提高效率,我想在点击“插入”按钮时,直接把这个随机数复制到 另一个软件的“编号”等文本框里。
请大家指点一下我该怎么编这个“插入”按钮的代码?
解决方案 »
- C#老鸟来解答,小弟刚接触C#,有编程基础,谢谢!
- www.godaddy.com上配制access数据库发生Exception Details: System.Data.OleDb.OleDbException
- C#网络编程高手进了。。。。
- 当myDataSet1中无数据时报错!帮忙看看~
- Winfrom中如何在控件上不显示焦点?
- 如何获得datagrid或gridview中选定单元的列名? 没有找到CurrentCell属性 ,C# 和.net环境
- 如何在WindowsApplication项目中发起一个Http的请求
- C#判断一个BYTE变量的第8位是否为1的简单方法,最好不用下面的方法
- asp.net (C#)强制转换的问题
- 求救:多线程的问题!
- C# 2.0怎么用linq?
- 关于treeview,帮看看哪里有问题。。初学者。。。
一个软件的两个窗体可以直接传值。比如用委托或者构造函数+属性。
form1调用form的API取值
form1要监控着form什么时候点击了插入按钮、同时调用API取值
1、这是两个不同的软件。
其中form软件是咱自己编写的,想怎么写都行;
但form1这个不是咱自己编写的软件,也没有源程序,做不了任何修改。2、这种情况下,4楼的办法就不行了,因为form1这个软件咱修改不了。1楼的模拟按键办法可行,能否具体说明一下?或者给个DEMO学习一下?我也去找找模拟按键的资料,期待各位高手继续指点啊。
建议去查下win32的api手册。
类似下面的组合按键,这是我参考的代码。 /// <summary>
/// 键盘事件
/// </summary>
/// <param name="bvk"></param>
/// <param name="bScan"></param>
/// <param name="dwFlags"> 0 为按下,2为释放</param>
/// <param name="dwExtraInfo">一般情况下设成为 0</param>
[DllImport("user32.dll")]
public extern static void keybd_event(byte bvk, byte bScan, int dwFlags, int dwExtraInfo);
//调用
keybd_event((byte)Keys.LWin, 0, 0, 0); //按下LWIN
keybd_event((byte)Keys.R, 0, 0, 0); //按下R
keybd_event((byte)Keys.LWin, 0, 2, 0); //释放LWIN
keybd_event((byte)Keys.R, 0, 2, 0); //释放R现在问题出在粘贴时的定位问题了。由于form1这个软件不是自己编写的软件,开启位置因屏幕大小而不同。所以在粘贴时,不知该如何定位它的文本框和粘贴操作了?请高手指点一下。
/// 向指定窗口发送字符串
/// </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);先用FindWindow找到父窗口句柄,IntPtr parentWindow= FindWindow();
再找文本框句柄IntPtr userNameHwnd=FindWindowEx(parentWindow,IntPtr.Zero,"Edit", "");"Edit"为文本框的类名
发送内容
const int WM_SETTEXT = 0x000C;//发送文本
SendMessage(userNameHwnd, WM_SETTEXT, IntPtr.Zero, qq);窗口类名用Spy++获取
C#模拟按键
http://blog.csdn.net/zhxiaoyu1990/article/details/5840612
http://bbs.csdn.net/topics/390154073
http://blog.csdn.net/menglingjun/article/details/1789788