我想将用户名和密码发送到另一个应用程序,并处理input。 所以我有应用程序A有一个窗口,需要用户名和密码。 我们有正在运行的应用程序B. 应用程序B需要search应用程序A,login窗口,并将用户名发送到其中的文本框和密码,然后通过确定button处理这些input。
有没有图书馆可以处理这些要求? 任何帮助天气它是网站或dll的引用或例子将是伟大的
注: – 应用程序A不是我build立的,或者有权访问它的代码或任何东西,我可以启动它,这是关于它。
这里只是为了弄清事情的过程,因为有些是困惑的: – 应用程序B是一个EXE应用程序,单击时,它执行一些逻辑,然后启动应用程序A.
一旦应用程序A启动,用户会提示一个对话框input用户名和密码。这不是我所做的,而是应用程序所做的。 我的问题是我可以访问这个对话窗口,并发送input。
表格代码
public partial class Form1 : Form { [DllImport("user32.dll")] public static extern int SetForegroundWindow(IntPtr hWnd); public Form1() { InitializeComponent(); var process = new ProcessStartInfo(@"arcmap.exe"); var pr=Process.Start(process); SetForegroundWindow(pr.Handle); SendKeys.Send("ne{TAB}ne{ENTER}"); } }
}
你需要启动Arcmap(这是一个相当简单的任务,使用Process.Start(string path);
然后给它一些使用Thread.Sleep(int miliseconds)
启动,然后它变得棘手。
你必须得到Arcmap进程(可能是通过名称),并通过导入这个方法将其设置为前景窗口:
[DllImport("user32.dll")] public static extern int SetForegroundWindow(IntPtr hWnd);
然后这样调用它:
Process process = Process.GetProcessesByName("arcmapProcessName").FirstOrDefault(); SetForegroundWindow(process);
稍后您只需使用钥匙发送
SendKeys.Send("login{TAB}password{ENTER}");
然后,您将不得不引用SendInput
函数以编程方式将键盘按键注入到输入流中。 也许,因为重新发明轮子很麻烦,而且你还是要求外部库,所以可以使用C#Input Simulator 。
这听起来不像是一个适当的设计策略给我。 为什么不把两个应用程序合并到一个应用程序,并在不同的应用程序表单之间传递请求的值
如果由于某种原因,您需要使用两个不同的应用程序,只需在用户在应用程序A中输入其登录凭据后打开应用程序B,然后将这些值作为参数传递给第二个应用程序。
您也可以考虑使用TCP类,以便使用套接字虚拟连接两个应用程序。