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

时间:2011-06-13 22:23:26

标签: c# asp.net winforms api dll

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

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

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

  1. 不可靠。

  2. 不可靠:)

  3. 此窗口会显示什么会话?如果某人未登录该怎么办 - 该过程是否会挂起?

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

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

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

    是否有办法获取此API的任何基于Web的访问权限?解决这个问题的方法是尝试使用API​​到Findwindow或枚举特定进程的窗口。

    因此,根据它运行的帐户/会话,它可能是可能的,但很可能是一系列问题。

    没有看到这个确切的环境虽然很难完全掌握为了提供另一种替代方案肯定会发生什么,但是如果你无法控制这一部分及其需要与网络集成的桌面应用程序,那么可能很难。

    另一个选项可能是(黑客警告 - 这是一个完全的kludge)有一个进程作为IIS外部的WCF自托管应用程序运行,接收请求然后尝试找到该窗口并向其发送适当的命令使用windows api为例。用于点击鼠标的SendMessage

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