Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 自动执行Windows应用程序登录操作_C#_Asp.net_Winforms_Api_Dll - Fatal编程技术网

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

C# 自动执行Windows应用程序登录操作,c#,asp.net,winforms,api,dll,C#,Asp.net,Winforms,Api,Dll,我有一个ASP.NET 4.0 web应用程序,它使用第三方API处理外部数据,API的工作方式它在初始化时需要用户名/密码,提示一个表示为Winform窗口的GUI,如果我输入了正确的凭据,窗口关闭,初始化完成,然后数据开始通过 你可能会在这里遇到麻烦,当我的ASP.NET工作处理器启动时,它会启动API的初始化,因此我必须在web应用所在的服务器上输入API的用户名和密码才能完成初始化,由于这一限制,我将web应用部署到生产环境中会遇到问题,用户需要输入自己的API凭据(是的,用户也有自己的

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

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


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

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

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

  • 这是不可靠的

  • 不可靠:)

  • 此窗口显示在哪个会话中?如果有人没有登录怎么办?进程是否挂起

  • 您提到的服务器部署问题非常严重

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

    但是,您可以编写一个程序来搜索此窗口,但根据其运行的上下文(用户帐户/windows会话),您可能/可能无法对其执行任何操作。如果它与aspnet帐户处于相同的过程中,我无法想象它能够在您的桌面上显示一个窗口,因此我想象这个第三方应用程序运行时会使用其他组件/帐户

    没有一种方法可以获得对该API的任何基于web的访问吗?解决这个问题的方法是尝试使用API查找或枚举特定进程的窗口

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

    没有看到这个确切的环境虽然很难完全掌握到底发生了什么,以提供另一种选择,但如果你无法控制这一部分,并且这是一个需要与web集成的桌面应用程序,可能会很困难

    另一个选项可能是(黑客警告-这是一个完全混乱)让一个进程在IIS之外作为WCF自托管应用程序运行,该应用程序接收请求,然后尝试查找该窗口,并使用windows api for ex.SendMessage for mouse clicks向其发送适当的命令


    从上面的信息中可以看到,winforms应用程序似乎不是从同一个应用程序启动的,因此您不能使用OpenForms,因为它不是同一个过程,它将无法与桌面交互。但是我的看法是,这是一个广泛使用的第三方API吗?例如,如果ASP.NET应用程序中使用Windows身份验证,则可以完全避免使用登录表单。