如何在 apache cgi 应用程序中调用 windows api (FindWindow)?

Posted

技术标签:

【中文标题】如何在 apache cgi 应用程序中调用 windows api (FindWindow)?【英文标题】:How to call windows api (FindWindow) in an apache cgi application? 【发布时间】:2016-05-10 21:04:59 【问题描述】:

我有一个在 Windows 下通过 Apache 运行的本地编译的 cgi 应用程序。该应用程序运行良好。在 windows 7、windows 8、windows server 2003 中测试。

我正在尝试通过FindWindow winapi 获取 Windows 句柄,但返回始终为 0。

在控制台应用程序中使用相同的参数调用 FindWindow 可以正常工作(返回正确的窗口句柄)

是否存在阻止 FindWindow 工作的 Apache cgi 进程的任何特殊性?

有解决办法吗?

【问题讨论】:

进程是否在服务中运行? 没有。它是一个独立的应用程序。每次向 apache 发出请求时都会创建一个进程。但是 Apache 是作为服务运行的 您在会话 0 中搜索的窗口是什么? 没有。该窗口是一个桌面应用程序,我认为问题在于 apache 创建了 cgi 进程,并且由于 apache 作为服务运行,因此该函数不会从桌面返回窗口,如 ***.com/questions/340122/… 中所述,您的提示对于找到原因很有价值跨度> 【参考方案1】:

窗口位于交互式桌面中。 CGI 进程从 Apache 服务调用并在会话 0 中的非交互式桌面中运行。因此对 FindWindow 的调用无法看到目标窗口。

【讨论】:

以上是关于如何在 apache cgi 应用程序中调用 windows api (FindWindow)?的主要内容,如果未能解决你的问题,请参考以下文章

在 Windows 上从 Apache CGI 运行 gswin64c

如何在 Windows 10 中关联 cgi 扩展

如何在 apache Web 服务器上运行 cgi 脚本

如何配置 Apache 2 以运行 Perl CGI 脚本?

如何在远程服务器上查看来自 ruby​​ CGI 应用程序的错误消息?

Apache服务器中运行CGI程序的方法,文中以Perl脚本作为示例