Estou tentando desenvolver uma automação que selecione uma aplicação proprietária no desktop. No entanto, essa aplicação não é instalada no meu desktop. Na verdade ela é aberta depois que eu faço o login na conta da empresa no browser. Não sei dizer precisamente que tipo de aplicação é essa que agente faz o login no browser e ela abre uma janela no desktop. Checando o gerenciador de tarefas aqui, vi que a aplicação abre com um plugin que eu baixo do site do programa.
Abaixo, segue um print do gerenciador de tarefas:
Nessa imagem aparece o tal plugin. Tentei usar o método find_app_window mas não funcionou, ao invés, me retornou:
bot = DesktopBot()
# bot.browse("http://www.botcity.dev")
app_path = r"C:\Program Files (x86)\GraphOn\AppController\AppController.exe"
# Abre o aplicativo.
# bot.execute(app_path)
main_window = bot.find_app_window(title_re="Domínio Contabilidae Fiscal - Versão: 10.4A-03 - 06")
print(main_window)
raise ValueError(‘No applications connected. Invoke connect_to_app first.’)
ValueError: No applications connected. Invoke connect_to_app first.
Como eu poderia contornar esse problema? Agradeço desde já pelo suporte.
Olá Matheus, tudo bem?
Neste caso, para conseguir se conectar com a janela de um aplicação Desktop que já esta em execução, você pode usar o Pywinauto
para se conectar a essa janela e passa-la para o bot.app
como mostro abaixo:
from pywinauto.application import Application
from botcity.core import DesktopBot, Backend
bot = DesktopBot()
# Se conecta a aplicação através do seletor 'título_re'
app = Application(backend="uia").connect(title_re="Domínio Contabilidae Fiscal - Versão: 10.4A-03 - 06")
# Atríbui o objeto Application para 'bot.app'
bot.app = app
# Encontra a janela principal
main_window = bot.find_app_window(title_re="Domínio Contabilidae Fiscal - Versão: 10.4A-03 - 06")
print(main_window)
Veja se essa abordagem funciona, como o erro lançado era relacionado a conexão com a aplicação, acredito que essa manipulação funcione.
Perdão pela demora na resposta, Livia. Consegui solucionar o problema com a biblioteca pygetwindow. Com ela, consigo abrir uma janela do desktop a partir do nome da mesma.
import pygetwindow as gw
titulo_janela = "Título da Janela"
# Obtém todas as janelas com o título especificado
janelas = gw.getWindowsWithTitle(titulo_janela)
# Verifica se foi encontrada alguma janela com o título especificado
if janelas:
# Seleciona a primeira janela encontrada (você pode iterar sobre a lista para selecionar a janela desejada)
janela = janelas[0]
# Foca na janela (torna-a ativa)
janela.activate()
else:
print("Nenhuma janela encontrada com o título especificado.")