尝试在不弹出cmd窗口的情况下从批处理文件运行python脚本



我正在尝试创建一个程序,该程序接受高亮显示的文本,然后使用python脚本反转其大小写。其逻辑基本上是:将高亮显示的文本放入剪贴板,进行转换,然后将文本返回到剪贴板并粘贴

我试图通过创建一个从AutoHotKey热键运行的批处理文件来执行此操作,但问题是批处理文件必须在不弹出cmd窗口的情况下运行,因为它会更改窗口焦点,无法正确获取高亮显示的文本。

当我在PyCharm中运行它时,代码就可以工作了,我可以通过热键获得要运行的文件,但窗口仍然会短暂弹出,从而破坏了这个过程。

我正在学习的课程说,在批处理文件中放@pyw而不是@py-at,使其在python中无窗口运行,但窗口仍然会短暂弹出。我似乎找不到有效的解决方案。

我试图通过.vbs文件运行它,但没有按我希望的方式运行。我检查了pythonw.exe是否正常工作。我试图在批处理代码中将文件名更改为.pyw。

我做错了什么?是我的python代码,还是我的批处理代码?我不知道。

我的批次代码:

@pyw "C:UsersofficPycharmProjectstestautomate the boring stuffprojectschange case of selected.pyw" %*

我的Python代码:

#! python 3
import pyperclip
import pyautogui as pya
import time
import sys
#mystery code I tried to make work as a solution
# import ctypes
# import os
# import pywin32_system32
#
# hwnd = ctypes.windll.kernel32.GetConsoleWindow()
# if hwnd != 0:
#     ctypes.windll.user32.ShowWindow(hwnd, 0)
#     ctypes.windll.kernel32.CloseHandle(hwnd)
#     _, pid = pywin32.GetWindowThreadProcessId(hwnd)
#     os.system('taskkill /PID ' + str(pid) + ' /f')

def copy_clipboard():
pyperclip.copy("")  # <- This prevents last copy replacing current copy of null.
pya.hotkey('ctrl', 'c')
time.sleep(.01)  # ctrl-c is usually very fast but your program may execute faster
return pyperclip.paste()

clipboard = copy_clipboard()
try: #check if there is an argument
# convert clipboard to uppercase if arg is 'u'
if sys.argv[1] is 'u': 
pyperclip.copy(clipboard.upper())
# convert clipboard to lowercase if arg is 'l'
elif sys.argv[1] is 'l':
pyperclip.copy(clipboard.lower())
#else just swap the case of every character if the arg is not u or l
else:
pyperclip.copy(clipboard.swapcase())
#if there are no args just swap the case of every charater
except:
# put swapped string to clipboard
pyperclip.copy(clipboard.swapcase())
pya.hotkey('ctrl', 'v')
# hELLO

我的自动热键代码(如果这很重要的话(:

^+q::
Run, "C:UsersofficDocumentsMY BATCH FILESswapcase.bat"
return
^+q::
Run, "C:UsersofficDocumentsMY BATCH FILESswapcase.bat",, Hide
return

自动热键运行选项:隐藏

swapcase.bat的运行将导致控制台窗口显示。怀疑是pyw运行pythonw.exe作为图形用户界面(GUI(,而不是cmd.exe作为控制台用户界面(CUI(,因为它解释swapcase.bat

您可以从AHK:运行Python脚本(扩展名为.pyw(

Run script.pyw, c:mydir  

c:mydir是Python脚本的位置。当然,如果Python与.pyw扩展关联,这将起作用。

相关内容

最新更新