下面的写法一般都能正常启动.py文件
在.bat文件中写这个:

chcp 65001
@cd /d F:\hello&&w.py
@pause>nul

~新建记事本把后缀改成.bat  右击编辑

(这个跟.py文件一样双击就直接运行所以要右击编辑)

输入上面内容(注意把地址和程序名改成自己的)保存,然后双击这个.bat文件

 

想去掉黑框,后台运行,要新建一个.vbs文件,里面内容如下:

set ws=WScript.CreateObject("WScript.Shell")
ws.Run "F:\hello\w.bat /start",0

~新建记事本后缀改成.vbs

 

想要开机后台启动,就把上面这个.vbs文件拖到
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
这个文件夹下.

~这个开机启动项一般是在固定的位置上的

 

想关闭后台(Python)程序cmd下输入:

taskkill /f /t /im python.exe

,

想要查看后台程序cmd输入:

tasklist

 

想要查找后台进程又只想用python:

def search_tasklist(file='python'):
    import subprocess
    res = subprocess.run('tasklist',shell=True,stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
    l=str(res.stdout).split(r"\r\n")
    ll=[i for i in l if file in i]
    return(str(res.stdout).count(file),ll)
def main():
    print(search_tasklist('python'))
if __name__=='__main__':
    main()

,

一些黑框防闪退策略
  有些依赖黑框的.py程序(偏偏会闪退)
 

1. 末尾加输入语句:

input('press<enter>')#防闪退

,

2.末尾用python的休眠语句:

time.sleep(100)

~前面别忘加 import time

 

3.上面提到的用.bat文件启动末尾加@pause>nul

chcp 65001
@echo.
@echo.
@python.exe love.py
::与(.py文件的)放在同一目录下
@pause>nul

,

4.终极大杀器cmd窗口打开:

cd /d F:\hello
@python.exe love.py

,

最后是封面图
 

# -*- coding: utf-8 -*-
import win32gui, win32con
'''
主要还是窗口句柄的操作
下面画心的是玩的
hwnd_title句柄字典
win32gui.SetWindowPos(hwnd, win32con.HWND_NOTOPMOST, 0,0,800,600, win32con.SWP_SHOWWINDOW)# 取消置顶
win32gui.SetWindowPos(hwnd, win32con.HWND_TOPMOST, 0,0,800,600, win32con.SWP_SHOWWINDOW)#置顶
'''

hwnd_title = dict()
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)})

win32gui.EnumWindows(get_all_hwnd, 0)

def print_h_t():
    '''打印所有句柄'''
    for h,t in hwnd_title.items():
        if t != "":
            print(h, t)

def find_h_t(I_N='cmd.exe',notI_N='PAUSE'):
    '''搜索所有句柄找出含有某个字符串且不含另一个字符串的句柄'''
    for h,t in hwnd_title.items():
        if t!="":
            if I_N in t:
                if notI_N in t:
                    pass
                else:
                    #print(h, t)#测试用(这么简单肯定会错的啦)
                    return(h)

hh=find_h_t()
win32gui.SetForegroundWindow(hh)#窗口设为当前活动窗口

def love(z=0.071,x=0,y=0):
    '''
    z越小画的心越大
    建议在0.05到0.1之间
    (大了会超出屏幕小了会变形自己试吧!)
    '''
    hh=find_h_t()#获得python窗口的句柄
    win32gui.SetWindowPos(hh, win32con.HWND_TOPMOST, x,y,18*int(3/z),37*int(1.3/z), win32con.SWP_SHOWWINDOW)
    #上面这句是置顶窗口
    print('\n'.join([''.join([('love'[(x-y) % len('love')] \
    if ((x*0.5*z)**2+(y*z)**2-1)**3-(x*0.5*z)**2*(y*z)**3 <= 0 else ' ') \
    for x in range(-1*(int(3/z)), int(3/z))]) for y in range(int(1.3/z), -1*int(1.3/z), -1)]))
love()

win32gui, win32con这两个模块是在pywin32里的.最好是在cmd下pip装:

pip install pywin32 -i https://pypi.tuna.tsinghua.edu.cn/simple

当时就是这么装上去的.之前也死活装不上去,这个模块看脸的.

如果实在装不上就:

(前面的想要查找后台进程又只想用python:里面好像也能查到句柄用.bat文件也能调节窗口大小改变颜色啥的,在这里就不再聊了,自己查吧)

def love(z=0.071):
    '''
    z越小画的心越大
    '''
    print('\n'.join([''.join([('love'[(x-y) % len('love')] \
    if ((x*0.5*z)**2+(y*z)**2-1)**3-(x*0.5*z)**2*(y*z)**3 <= 0 else ' ') \
    for x in range(-1*(int(3/z)), int(3/z))]) for y in range(int(1.3/z), -1*int(1.3/z), -1)]))
love()