设置程序开机自启动并模拟鼠标点击/键盘输入

最近有同学给我提出一个需求,他需要电脑在开机时自动打开并运行visual stdio的一个项目。由于项目调用了一些外部库,貌似debug生成的可执行文件不能直接运行,因此需要开机时需要打开该项目并运行项目。

一、Windows系统里面设置开机自启动脚本,通过以下两步就可以实现

step1 同时按下win+R,调出运行窗口,输入shell:startup打开开机自启动程序的路径

step2 在该路径下新建一个名为vs.bat的文件,作用是切换路径到python文件的路径下,bat文件的内容为

E:
cd E:\test
python run.py

二、vs项目的打开与运行,代码如下

import os
import time
import win32gui
import win32api
import pyautogui

hwnd_title = {}

def get_all_hwnd(hwnd, mouse):
    if (win32gui.IsWindow(hwnd) and
        win32gui.IsWindowEnabled(hwnd) and
        win32gui.IsWindowVisible(hwnd)):
        hwnd_title.update({hwnd: win32gui.GetWindowText(hwnd)})
#下面是找到你vs项目的路径,运行.sln文件   
os.chdir('C:')
os.chdir(r'C:\Users\Administrator\Desktop\code\C++\ConsoleApplication1')
# 使用start的原因是需要非阻塞式打开项目,不然后面的项目就无法运行了
r = os.system(r'start ConsoleApplication1.sln')
# 因为运行需要一点时间,因此等待一下
time.sleep(10)
# 获取当前所有的窗口的句柄
win32gui.EnumWindows(get_all_hwnd, 0)
# 在通过项目名称寻找visual stdio的句柄,我的项目名是默认的ConsoleApplication1
for h, t in hwnd_title.items():
    if t :
        # 注意!Microsoft Visual Studio 后面有个空格
        if t == 'ConsoleApplication1 - Microsoft Visual Studio ':
            # 将窗口设置为最上层
            win32gui.SetForegroundWindow(h)
            time.sleep(1)
            
            # 模拟按下ctrl+F5
            pyautogui.hotkey('ctrl', 'F5')
            
            # 如果你需要点击的按钮没有热键,就需要找出按钮位置,并模拟鼠标点击按钮
#            #以下是获取按钮的位置,你只需要执行一次,后面都可以注释掉
#            # 获取当前鼠标位置,此时你应该把鼠标放在run那个按钮上
#            p = win32api.GetCursorPos()
#            #  GetWindowRect 获得整个窗口的范围矩形,窗口的边框、标题栏、滚动条及菜单等都在这个矩形内 
#            x,y,w,h = win32gui.GetWindowRect(h)
#            # 鼠标坐标减去指定窗口坐标为鼠标在窗口中的坐标值
#            pos_x = p[0] - x
#            pos_y = p[1] - y
#            print(pos_x,pos_y)
#            
#            #将上面的pos_x和pos_y替换到下面来,上面的代码就可以注释了
#            pyautogui.click(674,89)

linux里面设置开机自启动就使用crontab

参考:

[1] windows10 设置开机启动python脚本 - 简书 (jianshu.com) Python 获取窗口句柄,模拟鼠标点击_code&&coder的博客-CSDN博客_pyautogui获取窗口句柄
[2] windows10 设置开机启动python脚本 - 简书 (jianshu.com)

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值