我正在写一个VLC扩展,我想在网络浏览器中打开一些网址(当然是在lua中)。到目前为止,我还没有找到任何从lua脚本打开Web浏览器的相关代码。我有什么方法可以执行这项任务(例如谷歌搜索文件播放)?
我可以使用对话框创建指向网址的链接,但我想跳过此步骤并在没有任何用户输入的情况下打开它。
我是lua的初学者,并且正在制作VLC扩展(几天前刚刚开始)并且从那时起就开始尝试。
答案 0 :(得分:3)
确切的命令因操作系统而异:
start http://example.com/
xdg-open "http://example.com/"
open http://example.com/
以下Lua示例应适用于Windows,Linux和OSX(虽然我无法测试OSX)
它的工作原理是首先检查Lua的package.config
\\
目录分隔符(afaik,仅用于Windows)。这应该只留下支持uname
的操作系统。然后我进行了一次飞跃,并假设Mac将识别为“达尔文”,因此任何不是* nix的东西。
显然,这不是详尽无遗。
-- Attempts to open a given URL in the system default browser, regardless of Operating System.
local open_cmd -- this needs to stay outside the function, or it'll re-sniff every time...
function open_url(url)
if not open_cmd then
if package.config:sub(1,1) == '\\' then -- windows
open_cmd = function(url)
-- Should work on anything since (and including) win'95
os.execute(string.format('start "%s"', url))
end
-- the only systems left should understand uname...
elseif (io.popen("uname -s"):read'*a') == "Darwin" then -- OSX/Darwin ? (I can not test.)
open_cmd = function(url)
-- I cannot test, but this should work on modern Macs.
os.execute(string.format('open "%s"', url))
end
else -- that ought to only leave Linux
open_cmd = function(url)
-- should work on X-based distros.
os.execute(string.format('xdg-open "%s"', url))
end
end
end
open_cmd(url)
end