first commit
This commit is contained in:
commit
677a836569
29 files changed
+1785
No files matched your search
@@ -0,0 +1,81 @@
|
||||
import win32gui, win32con, time, os, sys
|
||||
import pyautogui as ag
|
||||
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
||||
import config, libs
|
||||
|
||||
def find_and_maximize_window(window_title):
|
||||
windows = []
|
||||
win32gui.EnumWindows(lambda hwnd, windows: windows.append(hwnd), windows)
|
||||
|
||||
for hwnd in windows:
|
||||
if win32gui.IsWindowVisible(hwnd):
|
||||
if window_title in win32gui.GetWindowText(hwnd):
|
||||
print(f'found {window_title} hwnd:{hwnd}')
|
||||
# win32gui.ShowWindow(hwnd, win32con.SW_MAXIMIZE)
|
||||
win32gui.SetForegroundWindow(hwnd)
|
||||
pid = win32gui.GetWindowText(hwnd).split('wait')[0].split(' ')[0].split('-')[0].split('*')[0]
|
||||
left, top, right, bottom = win32gui.GetWindowRect(hwnd)
|
||||
return pid, left, top, right, bottom
|
||||
return '0', 0, 0, 0, 0
|
||||
|
||||
def get_defineDistances(pid, left, top, right, bottom):
|
||||
psid = libs.getPSid(pid)
|
||||
distances = config.ps_floor_sticker.get(psid, config.ps_floor_sticker['default'])
|
||||
for index, d in enumerate(distances.split(';')):
|
||||
p1, p2, distance = d.split(' ')
|
||||
if index == 0:
|
||||
ag.moveTo(left + 80, top + 290)
|
||||
else:
|
||||
ag.moveTo(left + 80, top + 290 + 15) # Create distance line height 15
|
||||
ag.click()
|
||||
|
||||
ag.moveTo(left + 302, (bottom - 100)) # A point
|
||||
ag.click();repeat_backspace(20)
|
||||
ag.typewrite(p1)
|
||||
|
||||
ag.moveTo(left + 302, (bottom - 80)) # B point
|
||||
ag.click();repeat_backspace(20)
|
||||
ag.typewrite(p2)
|
||||
|
||||
ag.moveTo(left + 302, (bottom - 35)) # Definded distance
|
||||
ag.click();repeat_backspace(8)
|
||||
ag.typewrite(distance)
|
||||
ag.press('enter')
|
||||
|
||||
|
||||
def repeat_backspace(times):
|
||||
for i in range(times):
|
||||
ag.press('backspace')
|
||||
for i in range(times):
|
||||
ag.press('delete')
|
||||
|
||||
def defind_distance(pid, left, top, right, bottom):
|
||||
print(f'{time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())} {pid} 开始定义定位点距离...')
|
||||
print(f'left: {left}, top: {top}, right: {right}, bottom: {bottom}')
|
||||
# ag.PAUSE = 1
|
||||
|
||||
ag.moveTo(left + 20, top + 200) # open Control points
|
||||
ag.click()
|
||||
|
||||
get_defineDistances(pid, left, top, right, bottom)
|
||||
|
||||
ag.hotkey('ctrl', 's') # save project
|
||||
ag.hotkey('alt', 'f4') # close project
|
||||
print(f'{time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())} {pid} 定义定位点距离完成')
|
||||
time.sleep(3)
|
||||
|
||||
def main():
|
||||
while True:
|
||||
time.sleep(1)
|
||||
title = "wait"
|
||||
pid, left, top, right, bottom = find_and_maximize_window(title)
|
||||
if pid == '0':
|
||||
pass
|
||||
else:
|
||||
print(f'{time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())} 找到{pid}的定位点距离定义窗口,开始定位点距离定义...')
|
||||
start_time = time.time()
|
||||
defind_distance(pid, left, top, right, bottom)
|
||||
print(f'{time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())} {pid} 定位点距离定义完成,共费时{libs.diff_time(start_time)}')
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in new issue
Block a user