作者uranusjr (←这人是超级笨蛋)
看板Python
标题Re: [问题] 用cmd开启chrome浏览器
时间Thu Apr 26 11:59:41 2018
不要再走歪路了, 前面推文回答的基本都是乱讲 XD
虽然这个问题跟 Python 其实一点关系也没有, 所以会这样也是正常
如果你给 start 指令的参数不是绝对或相对路径, 而且是执行档
那麽它会用 ShellExecuteEx 执行它
这个 Windows API 函式会参照 registry 这个路径下面的值
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths
如果你用 regedit 打开登录档, 会发现这下面包含了一堆 XXX.exe 名称
这就是用来参照 start 获得的执行档的真实位置
例如我的长这样(我没装 Google Chrome 所以这里用 Firefox 举例)
https://d.pr/i/dt6idm
当你输入 start firefox.exe 而当前路径找不到这个执行档时
Windows 会去找 HKLM\...\App Paths\firefox.exe\ 的值来用
因而可以正确执行, 不需要设定完整路径
这个 registry 值通常是在程式安装时设定
如果没设好, 有可能是当初安装时出错或毁损之类的
不过如果有问题, 那也没办法, 就不能用了
如果你要修复倒是不难, 打开 regedit 把该有的值填进去就好
不过如果你要保证每台电脑都一定能正确执行, 那大概就办不到
因为你实在没办法知道每台电脑的安装是不是都完全正确
话又说回来, 如果你只是想打开网页, 那其实根本不用这麽麻烦
用 start <网址> 就可以直接开了, 根本不需要指定程式
只是它会用预设网页浏览器(所以可能不是 Google Chrome)
但是或许这也是好事
或者既然你是写 Python, 其实有个 module 叫 webbrowser
https://docs.python.org/3.6/library/webbrowser.html
这个就是用环境变数来找浏览器了
--
1F:→ GNUGCC:void main(void) 的写法是可行的唷^^08/10 00:59
2F:→ GNUGCC:虽然这个写法较传统,但是语法与文法都正确哦^^08/10 02:16
3F:→ GNUGCC:目前我使用的 Visual C++ 都接受 void main(void) 与 08/10 20:18
4F:→ GNUGCC:int main(void),各位可以把 C++ 专案改成原生 C++ 类型来 08/10 20:19
5F:→ GNUGCC:用 void main(void) 来写发现也可通过编译. 08/10 20:21
6F:→ GNUGCC:这个就是 Visual C++ 的弹性.08/11 20:23
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 218.161.19.12
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1524715193.A.70C.html
7F:推 gmccntzx1: 只是原PO家里电脑的App Paths底下有chrome.exe,但仍无 04/26 12:10
8F:→ gmccntzx1: 法靠`start chrome`开启,这点比较奇怪0.0 04/26 12:11
9F:推 znmkhxrw: 谢u大 只是你前面说regedit的跟g大是一样的 已有路径 04/26 12:50
10F:→ znmkhxrw: 但是还是无法start 04/26 12:50
11F:→ znmkhxrw: 然後start <网址> 与 webbrowser我回家再看 谢谢! 04/26 12:51
12F:→ znmkhxrw: 这样也可以避免有人没装chrome XD 04/26 12:51
13F:→ uranusjr: 这真的有各种可能坏掉, 登录档就是个很烦的东西 orz 04/26 14:19
14F:→ uranusjr: 如果可以还是就直接绕过比较好 04/26 14:20
15F:→ MOONY135: 登录档很烦+1 04/29 14:39
16F:→ adrianshum: 印象中start 也会找 PATH ?会的话,设path 至少比改r 05/10 13:53
17F:→ adrianshum: egistry 简单 05/10 13:53