Форум сайта python.su
import pyautogui import time while True: time.sleep(3) pyautogui.keyDown('space') time.sleep(1.5) pyautogui.keyUp('space') time.sleep(0) pyautogui.keyDown('space') w=0 while w!=30: pyautogui.keyDown('enter') time.sleep(0.1) pyautogui.keyUp('enter') time.sleep(2) w+=1 time.sleep(20) pyautogui.keyUp('space') x, y = 1068, 950 pyautogui.moveTo(x, y) pyautogui.click()
Офлайн
DeonВ такой реализации никак(если конечно не рассматривать поднятия виртуалки). Если вы работаете с другой программой через ГУИ, то у вас не получиться заниматься “своими делами” во время работы скрипта.Когда вы отправляете окну нажатие мыши или клавиатуры оно становиться активным. Или поднимайте виртуалку и на ней запускайте, или работайте с программой на уровне протоколов, если такое возможно.
но как сделать так чтобы эти операции выполнялись фоном не мешая выполнять мне другие задачи
[code python][/code]
Офлайн
PEHDOMТе никак нельзя посылать команды не активному окну если оно не свернуто а просто на втором плане, я работаю в браузере а скрипт фоном выполняет компанды?
Офлайн
Deonне то чтобы совсем нельзя, но если вы отправите неактивному окну нажатие клавиши то оно станет активным.
Те никак нельзя посылать команды не активному окну если оно не свернуто а просто на втором плане, я работаю в браузере а скрипт фоном выполняет компанды?
[code python][/code]
Офлайн
PEHDOMИ нет никакой возможности заставить такой скрипт работать фоном?
Офлайн
PEHDOMдаже win32api
Офлайн
DeonПоходу winapi позволяет провернуть такую штуку через PostMessage, по крайней мере, вот такой пример работает, даже если окно свернуто. И никак не мешает работе:
даже win32api
import win32gui import win32con import win32api from time import sleep from ctypes.wintypes import POINT hwndMain = win32gui.FindWindow("Notepad", None) hwndChild = win32gui.GetWindow(hwndMain, win32con.GW_CHILD) pt = POINT() pt.x = 80 pt.y = 80 lParam = (pt.y << 16) | pt.x while True: temp = win32api.PostMessage(hwndChild, win32con.WM_CHAR, 0x44, 0) # печатаем букву D win32api.PostMessage(hwndChild, win32con.WM_LBUTTONDOWN, 0x0001, lParam) # левая кнопка мыши нажата win32api.PostMessage(hwndChild, win32con.WM_LBUTTONUP, 0x0001, lParam) # левая кнопка мыши отпущена print(temp) sleep(1)
[code python][/code]
Отредактировано PEHDOM (Сен. 18, 2017 12:59:44)
Офлайн
PEHDOMДа так точно но я пытаюсь в своем примере нажать esc а меня выводит ошибку
Офлайн
саоме простое что приходит в голову это заменить PostMessage на SendMessage
Функция PostMessage помещает сообщение в очередь сообщений, связанную с потоком который создал заданное окно, а SendMessage отправляет сообщенеие окну как только, так сразу.Синтаксис у них одинаковый.
Deonвы уверены что оно должно так работать? я вот пробую у мен тоже таже куйня вылазит про операцию синхронизации, а вот так вполне работает:
win32api.PostMessage(hwnd, win32con.VK_ESCAPE)
win32api.PostMessage(hwndChild, win32con.WM_KEYDOWN, 0x1B, 0) win32api.PostMessage(hwndChild, win32con.WM_KEYUP, 0x1B, 0)
[code python][/code]
Отредактировано PEHDOM (Сен. 19, 2017 10:26:20)
Офлайн
PEHDOMimport win32api, win32gui, win32con
саоме простое что приходит в голову это заменить PostMessage на SendMessageФункция PostMessage помещает сообщение в очередь сообщений, связанную с потоком который создал заданное окно, а SendMessage отправляет сообщенеие окну как только, так сразу.Синтаксис у них одинаковый.
Офлайн