使用Lua在VLC扩展中打开Web浏览器。

我正在编写一个VLC扩展,希望能够在web浏览器中打开某些URL(当然是用lua实现)。到目前为止,我还没有找到任何相关的打开web浏览器的代码。我是否有任何方法可以执行此任务(例如在播放文件的情况下进行谷歌搜索)?

我能够使用对话框创建到URL的链接,但我希望跳过此步骤并使其无需用户输入即可打开。

我是lua编程和制作VLC扩展的初学者(只是几天前开始),从那时起一直在尝试各种东西。

点赞
用户2712809
用户2712809

下面的命令因操作系统而异:

  • 在 Windows 上:

    start http://example.com/

  • 在 *nix(可移植性最高的选项)上:

    xdg-open "http://example.com/"

  • 在 OSX 上:

    open http://example.com/


以下 Lua 示例在 Windows、Linux 和 OSX 上运行(尽管我无法测试 OSX)。

首先通过检查 Lua 的 package.config 获取 \\ 目录分隔符(据我所知,这只在 Windows 上使用)。这样就只剩下支持 uname 的操作系统了。然后我假设 Mac 将被标识为“Darwin”,因此任何不传回此标识的系统都被视为 *nix。

显然,这远远不够详尽。

-- 尝试在系统默认浏览器中打开给定的 URL,而不考虑操作系统。
local open_cmd -- 这需要保持在函数外部,否则每次打开都会重新探测 ...
function open_url(url)
    if not open_cmd then
        if package.config:sub(1,1) == '\\' then -- Windows
            open_cmd = function(url)
                -- 这在任何使用自 win'95 以来的任何操作系统上应该都能用。
                os.execute(string.format('start "%s"', url))
            end
        -- 只剩下了应该理解 uname 的系统 ...
        elseif (io.popen("uname -s"):read'*a') == "Darwin" then -- OSX/Darwin ? (我无法测试)
            open_cmd = function(url)
                -- 我不能测试,但这应该在现代的 Mac 上工作。
                os.execute(string.format('open "%s"', url))
            end
        else -- 这应该只剩下 Linux 了
            open_cmd = function(url)
                -- 应该在基于 X 的发行版上工作。
                os.execute(string.format('xdg-open "%s"', url))
            end
        end
    end

    open_cmd(url)
end
2013-09-18 05:22:57