下面的写法一般都能正常启动.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()