情况如下。在我的工作中,我们使用现有程序,允许我们将条形码扫描到记录集中。问题是,要创建此记录集,我们必须分别扫描每个项目。我们点击一个添加按钮,弹出一个文本框,我们将条形码扫描到它(或者可以输入)
为了避免这样做,我在C#中构建了一个程序来创建一个条形码列表,我正在寻找一种方法来设置一个简单的复制和粘贴类型设置,它可以复制条形码,粘贴它进入现有的程序文本框,并可能发送一个返回字符,以便它可以为下一个条形码做好准备。它只需一次发送一个条形码,直到它通过列表。
我可以控制我的c#程序,但工作程序不是由我构建的,我无法访问代码或其使用的任何api。有人可以建议一个可能适用于此的解决方案吗?我找到了一个名为SendMessage的东西,但我不完全确定它是如何工作的,因为它说我需要首先搜索这个过程。
答案 0 :(得分:2)
我使用http://inputsimulator.codeplex.com/解决了类似的问题。 它只是允许您自动按键,以便您可以:
我已经为没有API的程序完成了这项工作,并且它可以很好地避免手动输入。但是看起来有点难看!
答案 1 :(得分:1)
如果您正在使用SendMessage,则可以使用spy ++搜索文本框的类和名称,这样您就可以获得文本框的句柄。我确定我已经看到了对settext的API调用,但我现在似乎无法找到它。但是,您可以使用消息WM_KEYDOWN,WM_KEYDOWN来模拟数据输入。
http://msdn.microsoft.com/en-us/library/ff468861%28v=vs.85%29.aspx
[DllImport("user32.dll")]
private static extern IntPtr SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam);
private const int WM_KEYDOWN = 0x0100;
private const int WM_KEYUP = 0x0101;
原样使用:
SendMessage(textboxHandle, WM_KEYDOWN, KeyCode, null);
SendMessage(textboxHandle, WM_KEYUP, KeyCode, null);
键码清单; http://msdn.microsoft.com/en-us/library/dd375731%28v=vs.85%29.aspx
答案 2 :(得分:0)
您可以使用作为.NET 3+一部分的UI Automation框架。
然后,您将使用UISpy这样的工具来提取相关文本字段所需的信息,您可以在C#应用程序和UI自动化框架中锁定这些信息。
通过MSDN Magazine article存在一个例子。