Приветствую всех.
подскажите пожалуйста как привязать скрипт к окну пожалуйста если это вообще возможно?
hedji
Продвинутый
Сообщения 409 Репутация 94
Поясните, что Вы пытаетесь сделать.
Если скрипт должен срабатывать при появлении определенного окна, то:
WinWait()
Yukon
Сообщения 4 Репутация 0
Нет не при появлении окна а на фоновом или активном окне
Сообщение автоматически объединено: 21 Июл 2017
Yukon сказал(а):
Нет не при появлении окна а на фоновом или активном окне
например 2 текст документа док1 и док2 в 1м чтобы печатал 123456 а во втором 09876 одноввременно
или напримера работаю я в 1м док а во втором печатается 1234 такое вообще возможно? если кто то может помоч помогите пожалуйста
Сообщение автоматически объединено: 21 Июл 2017
вот например в пилоте скрипт привязывается перед нажатием кнопки ф1
Как пользоваться UOpilot — Простейшие скрипты
hedji
Продвинутый
Сообщения 409 Репутация 94
Совсем одновременно не получится, т.к. в AutoIT нет многопоточности.
Отправить разный текст в разные окна можно так:
ControlSend(«test1.txt», «», «[CLASS:Edit; INSTANCE:1]», «123456», 1) ControlSend(«test2.txt», «», «[CLASS:Edit; INSTANCE:1]», «09876», 1)
Yukon
Сообщения 4 Репутация 0
hedji сказал(а):
Совсем одновременно не получится, т.к. в AutoIT нет многопоточности.
Отправить разный текст в разные окна можно так:
ControlSend(«test1.txt», «», «[CLASS:Edit; INSTANCE:1]», «123456», 1) ControlSend(«test2.txt», «», «[CLASS:Edit; INSTANCE:1]», «09876», 1)
да типо как то так в блокноте все работает так как вы написали но надо мне немного по другому ControlSend(«l2.exe», «», «[CLASS:l2UnrealWWindowsViewportWindow]», «1», 1) этот не работает в окне
hedji
Продвинутый
Сообщения 409 Репутация 94
l2.exe — это LineAge 2?
У меня нет её под рукой, чтобы протестить, но предположу, что CLASS:l2UnrealWWindowsViewportWindow — это само окно, а не его элемент.
cnm
Сообщения 58 Репутация 2
> ControlSend(«l2.exe», «», «[CLASS:l2UnrealWWindowsViewportWindow]», «1», 1) этот не работает в окне
Вначале проверь находит ли аутоит процесс линейки по твоему запросу.
Yukon
Сообщения 4 Репутация 0
cnm сказал(а):
> ControlSend(«l2.exe», «», «[CLASS:l2UnrealWWindowsViewportWindow]», «1», 1) этот не работает в окне
Вначале проверь находит ли AutoIt процесс линейки по твоему запросу.
Как создать новое окно в Tkinter при нажатии на кнопку / уроки Python
да это линейдж
может кто то пробовал так делать подскажите?
Сообщение автоматически объединено: 21 Июл 2017
cnm сказал(а):
> ControlSend(«l2.exe», «», «[CLASS:l2UnrealWWindowsViewportWindow]», «1», 1) этот не работает в окне
Вначале проверь находит ли AutoIt процесс линейки по твоему запросу.
как это сделать подскажи пожалуйста
Сообщение автоматически объединено: 21 Июл 2017
hedji сказал(а):
l2.exe — это LineAge 2?
У меня нет её под рукой, чтобы протестить, но предположу, что CLASS:l2UnrealWWindowsViewportWindow — это само окно, а не его элемент.
Сообщение автоматически объединено: 21 Июл 2017
может ещё кто подскажет ? хочу сделать нажатие клавиш 1 2
но что-бы они нажимались 1-нажималась каждую секунду а 2 каждых 60 сек в одном скрипте это можно сделать или надо запускать 2 скрипта?
Сообщение автоматически объединено: 21 Июл 2017
ControlSend(«l2.exe», «», «[TITLE:RPG HF : BlackPuma; INSTANCE:1]», «123456», 1)
так тоже не получиось (RPG HF : BlackPuma) название окна (l2.exe) название файла
может что то не так я сделал подскажите?
Источник: autoit-script.ru
Как привязать код к окну
Мне нужно чтобы этот код работал в определённом окне, например в Chrome, но при этом это окно должно быть свернуто. Как это можно реализовать?
import pyautogui import time import keyboard import sys def click(): while True: time.sleep(0.1) pyautogui.click() if keyboard.is_pressed(‘=’): print(«Пока-пока») sys.exit() keyboard.add_hotkey(‘-‘, click) keyboard.wait(‘Ctrl + Q’)
Отслеживать
задан 3 апр 2022 в 14:35
TheFirka227 TheFirka227
13 3 3 бронзовых знака
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Приложенный вами код, не будет работать ни при каком варианте на скрытых окнах, тк как библиотека keyboard только симулирует ввод клавиатуры, соответственно для работы необходимо что бы окно было открыто. (как вариант вы можете запустить программу в виртуалке: vmware или virtualbox.).
Если вам необходимо провести какую то манипуляцию с хромом. То обратите внимание на selenium. Эта библиотека позволяет делать подобные вещи, а в headless mode браузер не будет даже отображаться на экране.
Отслеживать
ответ дан 4 апр 2022 в 10:04
495 3 3 серебряных знака 9 9 бронзовых знаков
- python
- python-3.x
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Источник: ru.stackoverflow.com
Как прикрепить мою форму к окну стороннего приложения?
Не выполняйте настройку во время цикла сна: используйте таймер. Кроме того, проверьте, если местоположение не изменилось, прежде чем устанавливать свойство.
Graffito 05 авг. 2015, в 12:33
Вы можете сделать это с помощью SetWinEventHook (), EVENT_OBJECT_LOCATIONCHANGE.
Hans Passant 05 авг. 2015, в 12:47
Martin Schneider 17 апр. 2019, в 09:04
halloei 17 апр. 2019, в 09:45
Martin Schneider 17 апр. 2019, в 10:06
Показать ещё 3 комментария
Поделиться:
3 ответа
Лучший ответ
вам нужно зацепить процесс и прослушать событие
это должно дать вам хорошую отправную точку
using System; using System.Diagnostics; using System.Runtime.InteropServices; using System.Windows.Forms; namespace WindowsFormsApplication1 < public partial class Form1 : Form < private const uint WINEVENT_OUTOFCONTEXT = 0x0000; private const uint EVENT_OBJECT_LOCATIONCHANGE = 0x800B; private const uint EVENT_SYSTEM_MOVESIZESTART = 0x000A; private const uint EVENT_SYSTEM_MOVESIZEEND = 0x000B; public Form1() < InitializeComponent(); >private void Form1_Load(object sender, EventArgs e) < this.Width = 100; this.Height = 100; this.TopMost = true; int processId = Process.GetProcessesByName(«OUTLOOK»)[0].Id; //this will also be triggered by mouse moving over the process windows //NativeMethods.SetWinEventHook(EVENT_OBJECT_LOCATIONCHANGE, EVENT_OBJECT_LOCATIONCHANGE, IntPtr.Zero, WinEventProc, (uint)processId, (uint)0, WINEVENT_OUTOFCONTEXT); NativeMethods.SetWinEventHook(EVENT_SYSTEM_MOVESIZESTART, EVENT_SYSTEM_MOVESIZEEND, IntPtr.Zero, WinEventProc, (uint)processId, (uint)0, WINEVENT_OUTOFCONTEXT); >private void WinEventProc(IntPtr hWinEventHook, uint eventType, IntPtr hwnd, int idObject, int idChild, uint dwEventThread, uint dwmsEventTime) < Rect move = new Rect(); if (eventType == EVENT_SYSTEM_MOVESIZESTART) < NativeMethods.GetWindowRect(hwnd, ref move); Debug.WriteLine(«EVENT_SYSTEM_MOVESIZESTART»); >else if (eventType == EVENT_SYSTEM_MOVESIZEEND) < NativeMethods.GetWindowRect(hwnd, ref move); Debug.WriteLine(«EVENT_SYSTEM_MOVESIZEEND»); >this.Left = move.Left; this.Top = move.Top; > > public struct Rect < public int Left < get; set; >public int Top < get; set; >public int Right < get; set; >public int Bottom < get; set; >> static class NativeMethods < [DllImport(«user32.dll»)] public static extern IntPtr SetWinEventHook(uint eventMin, uint eventMax, IntPtr hmodWinEventProc, WinEventDelegate lpfnWinEventProc, uint idProcess, uint idThread, uint dwFlags); public delegate void WinEventDelegate(IntPtr hWinEventHook, uint eventType, IntPtr hwnd, int idObject, int idChild, uint dwEventThread, uint dwmsEventTime); [DllImport(«user32.dll»)] public static extern bool GetWindowRect(IntPtr hwnd, ref Rect rectangle); >>
Fredou 05 авг.
2015, в 10:53
Поделиться
Есть ли способ прослушать событие RESIZING? Например, если пользователь перетаскивает форму Outlook вниз за верхнюю границу, ваша форма переместится только после того, как будет выполнено изменение размера, поэтому будет существенное отставание.
Neolisk 28 дек. 2015, в 16:11
Вы можете использовать любую из функций крюка Windows WH_GETMESSAGE , WH_GETMESSAGERET , WH_SYSMSGFILTER или WH_MSGFILTER .
В этом случае вас будут интересовать WM_MOVE и WM_MOVING , куда WM_MOVE отправляется после перемещения окна (aka, done WM_MOVING ), и WM_MOVING отправляется во время перемещения окна (и поэтому вы получите много таких).
Начните здесь с чтения:
Источник: overcoder.net