使用python打开程序(不和谐)
Posted
技术标签:
【中文标题】使用python打开程序(不和谐)【英文标题】:Opening a program (discord) using python 【发布时间】:2021-08-18 08:51:34 【问题描述】:我正在制作一个能够打开诸如不和谐、谷歌浏览器、史诗游戏启动器、蒸汽等程序的程序。我将如何查找程序在设备上的安装位置 (Windows 10)。我做了一些研究,有一个叫做 Windows 注册表的东西,但我不知道如何制作它,所以你可以获取 .exe 文件来启动程序。
from tkinter import *
def WindowCentre():
positionRight = int(Main.winfo_screenwidth() / 2 - 960 / 2)
positionDown = int(Main.winfo_screenheight() / 2 - 540 / 2)
Main.geometry("++".format(positionRight, positionDown))
def ButtonClick(Application):
# Whatever the code is for here
# pass is just for the error
pass
Main = Tk()
Main.title("Program Launcher")
# Main.iconbitmap("")
Main.configure(bg="#2c2f33")
Main.geometry("960x540")
WindowCentre()
DiscordImage = PhotoImage(file="Images/Discord Icon.png")
DiscordButton = Button(image=DiscordImage, activebackground="#2c2f33",
activeforeground="#2c2f33", bg="#2c2f33",
width=150, height=150, borderwidth=0,
command=lambda: ButtonClick("Discord"))
DiscordButton.grid(row=0, column=0, padx=10, pady=10)
EpicGamesImage = PhotoImage(file="Images/Epic Games Launcher Icon.png")
EpicGamesButton = Button(image=EpicGamesImage, activebackground="#2c2f33",
activeforeground="#2c2f33", bg="#2c2f33",
width=150, height=150, borderwidth=0,
command=lambda: ButtonClick("Epic Games Launcher"))
EpicGamesButton.grid(row=0, column=1, padx=10, pady=10)
Main.mainloop()
那么如何让程序找到程序在任何 Windows 设备上的安装位置,然后在 gui 上创建一个按钮,单击时将其打开?我可以只使用默认目录,但大多数程序都可以选择更改安装位置,所以我正在寻找一种找到程序安装位置的方法。
感谢大家的帮助!
编辑
我想知道这是否适用于启动程序? Windowsapps 查找 exe 的 AppID。我不知道如何使用它来启动程序,有人可以帮助理解它吗?
import windowsapps
name, appid = windowsapps.find_app('Discord')
#searches for the APPLICATION NAME and returns:-
#name = Name of the application.
#appid = AppId of the application
print(name)
print(appid)
【问题讨论】:
你可能想先做一些研究,这可能会让你找到this one、this one和this one等线程。 如果您使用它们的安装程序安装这些应用程序,则应将它们的可执行文件路径添加到 PATH 环境变量中。然后,您可以只使用不带完整路径的可执行文件名称来执行应用程序。 this post 有帮助吗? 【参考方案1】:您将能够通过os.walk
函数找到文件
for root, dirs, files in os.walk(appLocation + appFolder):
for name in files:
if name.endswith(("lib", ".so")):
os.path.join(root, name)
你可以通过这个方法找到你想要的exe
你可以通过os.path.join
进入安装位置
这里有很好的记录http://docs.python.org/3/library/os.html#os.walk,
【讨论】:
对不起,我不知道如何在程序中使用它。它如何以及去哪里? 那么,我不明白你想要什么,请简单描述一下 我希望能够找到已安装程序的可执行文件。我只需要 .exe 文件的位置,然后我就可以使用它来启动程序。os.system('"%s"' % ApplicationLaunch)
@EdwardNivison 我很确定使用walk
您可以找到 exe 的位置,还有一个选项可以让用户决定要启动哪个 exe,然后保存该路径以供以后参考【参考方案2】:
我将如何查找程序的安装位置 设备(Windows 10)。
为了找到应用程序的路径,您必须通过开始菜单并寻找所需的应用程序。
在开始菜单中,右键单击应用程序->更多->打开文件位置
左键单击它,您将被带到 Drive C:// 中某处的 Windows/开始菜单/程序 文件夹 您可以在哪里找到该应用程序的快捷方式。
通过在属性上右键单击应用程序的目标路径来复制它。 例如。如果我想打开 Visual Studio Code:
codePath = “C:/Users/kanis/AppData/Local/Programs/Microsoft VS Code/Code.exe” (我PC中VSCode开始菜单应用快捷方式的路径)
然后,os.startfile(codePath)。 Python 将运行并打开请求。应用程序(本例中为 VSCode)。
【讨论】:
OP想要一种以编程方式查找地址的方法,这更像是手动搜索地址,这对于动态情况是不可能的。 这只是您计算机上的位置。正如 OP 所说,由于大多数程序都可以选择更改安装位置,因此 OP 正在寻找一种更动态的方法来查找程序安装位置。 @typedecker 哦,好吧,我明白了。对不起!我想我误解了OP的问题。我最近正在编写一个 python 脚本来通过语音命令打开某些桌面应用程序,在那里使用了这种方法..以上是关于使用python打开程序(不和谐)的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法在 python 中运行 C# 的不和谐 SDK 代码?