微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

获取Windows标题使用PHP不适用于浏览器调用

我的问题是我需要获取FOOBAR2000的标题,因为包括播放文件的信息,所以我通过Win32 API( GetwindowText() , EnumWindows() )创build一个执行文件,它的工作良好。

TCHAR SearchText[MAX_LOADSTRING] = _T("foobar2000"); BOOL CALLBACK WorkerProc(HWND hwnd,LParaM lParam) { TCHAR buffer[MAX_TITLESTRING]; GetwindowText(hwnd,buffer,MAX_TITLESTRING); if(_tcsstr(buffer,SearchText)) { // find it output something } return TRUE; } EnumWindows(WorkerProc,NULL);

输出将看起来像“ 专辑艺术家标题…. [foobar2000 v1.1.5]

我创build了一个类似test.PHPPHP文件,并使用exec()来执行它。

exec("foobar.exe");

然后在控制台(cmd)我使用命令来执行它

包含在自定义url应用程序中的os.getcwd()中的Web浏览器地址

无法parsing主机github.com

编程删除文件仍然显示在Windows资源pipe理器中

一个PDF阅读器的PDF在Linux上的大型vector图像?

打开“Internet属性”并等待用户closures它C#

PHP test.PHP

它也工作得很好,像以前一样输出

现在我用浏览器(firefox)来调用这个PHP文件(test.PHP),奇怪的事情发生了。 输出只有foob​​ar2000 v1.1.5 ,其他信息不见了…

我想也许是exec()问题? 优先级或一些限制,所以我使用C#创build一个COM对象并注册它,并重写PHP代码

$mydll = new COM("FOOBAR_COMObject.FOOBAR_Class"); echo $mydll->GetFooBarTitle();

还是一样的结果,命令行可以,但浏览器失败。

我的问题是

为什么在命令行和浏览器之间有2个不同的输出。 我无法弄清楚。

我怎样才能通过浏览器获得正确的输出

或者有一个简单的方法获取FOOBAR2000的标题

有没有人有这个问题的经验?

== 2012/11/28 edited ==

按照Enno的意见,我修改了http_control插件添加文件名信息,原来的json信息是“曲目标题”。

修改如下

state.cpp行380添加1行

+pb_helper1 = pfc::string_filename(pb_item_ptr->get_path()); pb_helper1x = xml_friendly_string(pb_helper1);

Web浏览器拒绝呈现PHP代码

Android SDK网页浏览器

使用IE9embeddedWebbrowser控件时覆盖IE设置

Windowsforms的Web浏览器控制和Javascript修改的DOM

PHP内容从来没有被浏览器caching?

@ 1:当firefox打开PHP并被执行时,上下文取决于运行PHP-container(apache)的用户,这与命令行调用完全不同

@ 2和3:似乎有不止一种方法获得标题:使用foobar-sdk并创建一个模块,它只读取每个api的当前标题,然后将结果写入到http中的static-html-document中-root-folder或者在sdk中使用http-client,使用它,你不需要wabserver,甚至可以使用一个已经实现的模块:比如foo_upnp或者foo-httpcontrol

祝你好运!

如果您的Web服务器作为服务运行,则在Windows中,您需要启用“允许桌面交互”服务。 当您通过浏览器请求时,您的PHP脚本作为web服务器进程的子进程运行。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐