使用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 代码?

如何使用基于意图的 URI 打开不和谐服务器邀请?

如何在不使用“除外”python的情况下退出不和谐机器人

如何防止不和谐机器人python中的SQL注入攻击

我将如何使用 python 在我的不和谐机器人上添加冷却时间

使用不和谐 API 创建不和谐频道