안녕하세요. 답변감사합니다.
음… 예시 매크로를 한번만 실행할때는 한글 스크립트와 파이썬 코드 간의 시간 차이가 크지 않는데요.
제가 만들고 있는 매크로는 한페이지당 많게는 10번 넘게 눌러야 해서
반복하다 보면 그 시간차이가 꽤 크네요…
그리고 아주 심플한 코드로 테스트를 한지라 시간차이가 더 작게 보일수 있겠네요.
아래 코드를 2-3번 연속 실행해 보시면 조금더 시간차이를 느끼실듯 합니다.
한글이 열려있는 창에서 표 안에 커서를 두시고 2-3번 연속 실행해 보시면
차이를 확연히 느끼실듯 합니다.
한글스크립트
function OnScriptMacro_테스트_1()
{
HAction.Run("Cancel");
HAction.Run("TableCellBlock");
HAction.Run("TableColPageDown");
HAction.Run("TableResizeDown");
HAction.Run("TableUpperCell")
HAction.Run("TableResizeDown");
HAction.Run("TableUpperCell")
HAction.Run("TableResizeDown");
HAction.Run("TableUpperCell")
HAction.Run("TableResizeDown");
HAction.Run("TableUpperCell")
HAction.Run("TableResizeDown");
HAction.Run("TableUpperCell")
HAction.Run("TableResizeDown");
HAction.Run("TableUpperCell")
HAction.Run("TableResizeDown");
HAction.Run("TableUpperCell")
HAction.Run("TableResizeDown");
HAction.Run("TableUpperCell")
HAction.Run("TableResizeDown");
HAction.Run("TableUpperCell")
HAction.Run("TableResizeDown");
HAction.Run("TableUpperCell")
HAction.Run("Cancel");
}
파이썬 코드
*물론 아시겠지만 저는 한글버전 네오를 사용해서
if name == ‘!HwpObject.96.1’
이렇게 사용하는데, 다른분들은 버전에 맞게 숫자를 변경 하시면 됩니다.
import sys
import pythoncom
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton
from win32com.client import Dispatch
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('테스트_01')
self.setGeometry(100, 100, 300, 200)
self.button_01 = QPushButton('클릭', self)
self.button_01.move(100, 80)
self.button_01.clicked.connect(self.cell_up)
def cell_up(self):
context = pythoncom.CreateBindCtx(0)
running_coms = pythoncom.GetRunningObjectTable()
monikers = running_coms.EnumRunning()
for moniker in monikers:
name = moniker.GetDisplayName(context,moniker);
if name == '!HwpObject.96.1': #저는 네오를 사용중이라 96.1을 사용하였습니다.
# 2010 : "!HwpObject.80.1"
# 2014 : "!HwpObject.90.1"
# NEO : "!HwpObject.96.1"
# 2018 : "!HwpObject.100.1"
# 2020 : "!HwpObject.110.1"
# 2022 : "!HwpObject.120.1"
# 2024 : "!HwpObject.130.1"
obje = running_coms.GetObject(moniker)
hwp = Dispatch(obje.QueryInterface(pythoncom.IID_IDispatch))
hwp.HAction.Run("Cancel");
hwp.HAction.Run("TableCellBlock")
hwp.HAction.Run("TableColPageDown");
for i in range(10):
hwp.HAction.Run("TableResizeDown");
hwp.HAction.Run("TableUpperCell")
hwp.HAction.Run("Cancel");
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
-
한글스크립트

-
파이썬
