php - 使用 php 获取窗口标题在浏览器调用中不起作用

标签 php windows winapi visual-c++ browser

我的问题是我需要获取 FOOBAR2000 的标题,因为它包括播放文件的信息,所以我通过 Win32 API(GetWindowText(), EnumWindows()) 并且运行良好。

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);

输出看起来像“album artis title .... [foobar2000 v1.1.5]

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

exec("foobar.exe");

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

php test.php

它也运行良好,输出与之前相同。

现在我用浏览器(firefox)调用这个php文件(test.php),奇怪的事情发生了。 只输出foobar2000 v1.1.5,其他信息都没有了...

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

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

仍然是相同的结果,命令行正常,但浏览器失败。

我的问题是

  1. 为什么在命令行和浏览器之间有两种不同的输出。我想不通。
  2. 如何通过浏览器获得正确的输出。
  3. 或者有一种获取 FOOBAR2000 标题的简单方法?

有没有人有这方面的经验?

== 2012/11/28 编辑==

听从Enno的意见,我修改了http_control插件,增加了文件名信息,原来的json信息是“track title”。

修改如下

state.cpp 第 380 行添加 1 行

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

最佳答案

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

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

祝你好运!

关于php - 使用 php 获取窗口标题在浏览器调用中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13547381/

相关文章:

windows - 有没有一种简单的方法可以自动截取屏幕截图?

c# - DateTime.ToBinary() 和 DateTime.ToFileTime() 有何不同?

php - 如何在 Yii2 应用程序的多选下拉列表中显示选定的值?

php - 使用 PayPal IPN 将 payment_status 从 "Pending"更新为 "Completed"。它会重新发送 txn_id 吗?

php - 提交此表单时如何向用户隐藏 URL?

javascript - 如何使用rails自定义鼠标指针?

windows - 如何使用批处理文件分割字符串?

php - 除 root 之外的所有用户均拒绝 MySQL 访问

c++ - 如何使用 WM_CLOSE 关闭子窗口?

c - 使用 "FindFirstFileA"- C 查找目录中的所有文件