我的问题是我需要获取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.PHP的PHP文件,并使用exec()来执行它。
exec("foobar.exe");
然后在控制台(cmd)我使用命令来执行它
包含在自定义url应用程序中的os.getcwd()中的Web浏览器地址
无法parsing主机github.com
一个PDF阅读器的PDF在Linux上的大型vector图像?
打开“Internet属性”并等待用户closures它C#
它也工作得很好,像以前一样输出。
现在我用浏览器(firefox)来调用这个PHP文件(test.PHP),奇怪的事情发生了。 输出只有foobar2000 v1.1.5 ,其他信息不见了…
我想也许是exec()问题? 优先级或一些限制,所以我使用C#创build一个COM对象并注册它,并重写PHP代码
$mydll = new COM("FOOBAR_COMObject.FOOBAR_Class"); echo $mydll->GetFooBarTitle();
还是一样的结果,命令行可以,但浏览器失败。
我的问题是
为什么在命令行和浏览器之间有2个不同的输出。 我无法弄清楚。
我怎样才能通过浏览器获得正确的输出。
有没有人有这个问题的经验?
== 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);
Android SDK网页浏览器
使用IE9embeddedWebbrowser控件时覆盖IE设置
Windowsforms的Web浏览器控制和Javascript修改的DOM
@ 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] 举报,一经查实,本站将立刻删除。