自动执行Windows应用程序登录操作

本文关键字:登录 操作 应用程序 Windows 执行 | 更新日期: 2023-09-27 17:58:59

我有一个ASP.NET 4.0 web应用程序,它使用第三方API处理外部数据,API的工作方式需要在初始化时通过提示以Winform窗口表示的GUI来输入用户名/密码,如果我输入了正确的凭据,则窗口关闭,初始化完成,然后数据开始通过。

你可能会在这里得到一个转折,当我的ASP.NET工作处理器启动时,它会启动API的初始化,因此我必须在web应用程序所在的服务器上输入API的用户名和密码以完成初始化,由于这个限制,我将web应用程序部署到用户需要输入自己的API凭据的生产环境中是有问题的(是的,用户也有自己的API凭据)。

有解决方案吗?我正在考虑编写另一个应用程序,等待winform登录提示根据web应用程序传递的用户名/密码输入凭据。这可能吗?如果没有,周围有没有?

自动执行Windows应用程序登录操作

如果它确实是用于登录的WinForms表单,则可以通过OpenForms集合访问它。从那里,您可以找到相应的文本框和按钮。如果API正在阻塞,您可能需要从另一个线程执行此操作。找到表单后,不要忘记使用Invoke在正确的线程中运行函数。

是的-您可以搜索正在运行的应用程序-但这有很多问题。

  1. 它不可靠。

  2. 它不可靠:)

  3. 此窗口显示在哪个会话中?如果有人没有登录怎么办?这个过程会挂起吗?

  4. 您提到的服务器部署非常有问题。

仅供参考-我不相信你可以使用下面提到的OpenForms集合-因为这是一个第三方应用程序。

然而,你可以编写一个程序来搜索这个窗口,但根据它运行的上下文(用户帐户/windows会话),你可能/可能无法对它做任何事情。如果它与aspnet帐户处于同一过程中,我无法想象它能够在你的桌面上显示一个窗口,所以我想象这个第三方应用程序运行在其他组件/帐户下。

是否没有办法获得对这个API的任何基于web的访问?解决方案是尝试使用API来查找窗口或枚举特定进程的窗口。

因此,根据它运行的帐户/会话,这"可能"是可能的,但对于一大堆问题来说是很可能的。

没有看到这个确切的环境,尽管很难完全了解确切发生了什么,以提供另一种选择,但如果你无法控制这一部分,而且它是一个需要与网络集成的桌面应用程序,这可能会很困难。

另一种选择可能是(黑客警告-这是一个完全的错误)让一个进程作为IIS之外的WCF自托管应用程序运行,该应用程序接收请求,然后尝试找到该窗口,并使用windows api向其发送适当的命令

参见http://social.msdn.microsoft.com/Forums/en-US/vssmartdevicesvbcs/thread/63a9faac-5898-4b10-8a2c-4ebe1aab948e