파이썬

파이썬 비활성화 된 창 활성화 시키기

by nanumi posted Feb 25, 2023
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

파이썬 비활성화 된 창 활성화 시키기

 

 

To activate an inactive window using Python, you can use the win32gui module from the pywin32 package. Specifically, you can use the SetForegroundWindow() function to activate the window.

Here's an example code snippet that demonstrates how to activate an inactive window with a given title:

 
python
import win32gui
import win32con
 
def activate_window(title):
    hwnd = win32gui.FindWindow(None, title)
    if hwnd == 0:
        return False
    if win32gui.IsIconic(hwnd):
        win32gui.ShowWindow(hwnd, win32con.SW_RESTORE)
    win32gui.SetForegroundWindow(hwnd)
    return True
 
# Example usage: activate the window with title 'My Window'
activate_window('Python familiarity confirmed. - Chrome')

In this example code, the activate_window() function takes a title argument that specifies the title of the window to activate. The function first uses win32gui.FindWindow() to get the window handle (hwnd) of the specified window. If the window handle is zero, the function returns False to indicate that the window could not be found. If the window handle is valid, the function uses win32gui.IsIconic() to check if the window is minimized, and if so, uses win32gui.ShowWindow() to restore the window. Finally, the function uses win32gui.SetForegroundWindow() to activate the window and bring it to the foreground.

To use this code in combination with the code from my previous answer to click on a location within an inactive window, you can call the activate_window() function to activate the window before calling pyautogui.click() to click on the specified location. For example:

 
python
 
import win32gui
import win32con
import pyautogui
import numpy as np
from PIL import ImageGrab
import cv2
 
window_name = 'Administrator'
 
# Define the image to search for
search_image = cv2.imread('C:/Python/py_code/automouse/img/control/1.png', cv2.IMREAD_GRAYSCALE)

# Get the handle of the window
hwnd = win32gui.FindWindow(None, window_name)
 
# Activate the window
if hwnd != 0:
    win32gui.ShowWindow(hwnd, win32con.SW_SHOW)
    win32gui.SetForegroundWindow(hwnd)
 
# Get the coordinates of the window
left, top, right, bottom = win32gui.GetWindowRect(hwnd)
 
# Get the dimensions of the window
width = right - left
height = bottom - top
 
# Capture a screenshot of the window
screenshot = ImageGrab.grab(bbox=(left, top, right, bottom))
 
# Convert the screenshot to a numpy array
screenshot_array = np.array(screenshot)
 
# Convert the screenshot to grayscale
gray_screenshot_array = cv2.cvtColor(screenshot_array, cv2.COLOR_BGR2GRAY)
 
# Search for the image within the window
result = cv2.matchTemplate(gray_screenshot_array, search_image, cv2.TM_CCOEFF_NORMED)
 
# Get the coordinates of the image within the window
y, x = np.unravel_index(result.argmax(), result.shape)
match_x, match_y = x + search_image.shape[1] // 2, y + search_image.shape[0] // 2
 
# If the image was found, click on the specified location
if result.max() > 0.8:
    if hwnd != 0:
        win32gui.ShowWindow(hwnd, win32con.SW_SHOW)
        win32gui.SetForegroundWindow(hwnd)
    pyautogui.click(left + match_x, top + match_y)

In


Articles

1 2 3 4 5