我有一个宏,可对notepad ++中某个文件夹中的所有文件进行更改,但是我试图使用python代码自动执行该过程,但是我没有找到任何解决方案。也许我可以某种方式使用shortcuts.xml,但我完全迷路了。
如果有人需要,这是我的最终解决方案,您必须将宏设置为快捷方式,在这种情况下,请使用'ctr + alt + 9'(注释为西班牙语):
#
# Es necesario instalar las bibliotecas
# pip install pyautogui
# pip install pywin32
#
# ----------------------------------------------------------------
# Version: 1.3
# Date: 10/07/2019
#
# Resumen: Pone Notepad++ como pantalla activa y pulsa ctrl+alt+9
# y acepta los pop ups de la macro
#
# Autor: Pedro Antonio Fondevila Franco
# ----------------------------------------------------------------
import pyautogui
import win32gui
import win32con
import time
# Copiado de Stackoverflow, retorna lista de las ventanas activas
# stackoverflow.com/questions/16770909/python-win32gui-setforegroundwindow
def window_enum_handler(hwnd, resultList):
if win32gui.IsWindowVisible(hwnd) and win32gui.GetWindowText(hwnd) != '':
resultList.append((hwnd, win32gui.GetWindowText(hwnd)))
def get_app_list(handles=[]):
mlst=[]
win32gui.EnumWindows(window_enum_handler, handles)
for handle in handles:
mlst.append(handle)
return mlst
appwindows = get_app_list()
# ----------------------------------------------------------------
targetWindow = 0;
for window in appwindows:# Buscamos si notepad++ esta en la lista
if ("Notepad++" in window[1]):
targetWindow = window[0]
if(targetWindow != 0):
win32gui.ShowWindow(targetWindow,win32con.SW_RESTORE) # Por si esta minimizada la pantalla
win32gui.BringWindowToTop(targetWindow) # La ponemos delante
win32gui.SetForegroundWindow(targetWindow) # La ponemos como ventana principal
time.sleep(0.4) # Le damos tiempo a cambiar al notepad++
pyautogui.hotkey('ctrl', 'alt', '9') # Pulsa ctrl+alt+9
numberOfPopUps = 10
for i in range(1, numberOfPopUps + 1):
time.sleep(0.4)
pyautogui.press('left') # Pulsa izquierda
pyautogui.press('enter') # Pulsa enter
else:
print("Inicie Notepad++")
time.sleep(1.5)
答案 0 :(得分:0)
您可能需要结合使用VBScript或PowerShell和Python。
在Notepad ++社区中有一个线程How to run a notepad++ macro from vbscript or PowerShell。
引自Yaron的答案:
objShell.run …
' Let NPP load and open the file. Adjust the number of milliseconds to your machine.
WScript.Sleep(100)
' "^+9" is Ctrl+Shift+9. Replace it with your preferred shortcut.
objShell.SendKeys("^+9")
您将在此处找到第二部分Executing a vbs file with arguments created by python的可能解决方案。