New request type and Display methods cration.

anticaptcha
Pedro de Oliveira Guedes 2021-12-30 12:14:25 -03:00
parent ce33d0627c
commit 86f70e0c68
1 changed files with 133 additions and 69 deletions

View File

@ -18,7 +18,7 @@ class Wingui:
def __init__(self): def __init__(self):
self.ep = "https://localhost:8443" self.ep = "https://localhost:8443"
def __request__(self, data: str): def __requestget__(self, data: str):
"""Metodo que realiza chamadas http""" """Metodo que realiza chamadas http"""
@ -35,15 +35,33 @@ class Wingui:
return json.loads(res.text) return json.loads(res.text)
else: else:
return res.text return res.text
def __requestpost__(self, data: str, object: dict):
"""Metodo que realiza chamadas http"""
url = self.ep + data
print("Calling: " + url)
apikey = os.environ.get('REPLAY_APIKEY')
headers = {"X-API-KEY": apikey}
res = requests.post(url, json = object, headers = headers, verify = False)
if res.status_code >= 400:
raise Exception(f"HTTP ERROR: {str(res.status_code)} - {res.text}")
if res.headers.get("Content-Type") != None and res.headers.get("Content-Type").find("json") != -1:
return json.loads(res.text)
else:
return res.text
# Funções Clip # Funções Clip
def clip_read(self) -> str: def clip_read(self) -> str:
"""Le o conteudo da clipboard na maquina do robo, e retorna como string""" """Le o conteudo da clipboard na maquina do robo, e retorna como string"""
return self.__request__("/ipc/wingui/clip/read") return self.__requestget__("/ipc/wingui/clip/read")
def clip_write(self, m: str) -> str: def clip_write(self, m: str) -> str:
"""Grava o conteudo fornecido em m na clipboard da maquina robo""" """Grava o conteudo fornecido em m na clipboard da maquina robo"""
return self.__request__("/ipc/wingui/clip/write?str={}".format(urllib.parse.quote(m, ""))) return self.__requestget__("/ipc/wingui/clip/write?str={}".format(urllib.parse.quote(m, "")))
# Funções Screen # Funções Screen
def screen_click(self, img: str): def screen_click(self, img: str):
@ -56,7 +74,7 @@ class Wingui:
Caso o click ocorra, esse metodo retorna um array de inteiros, sendo o 1º o valor de X, e o 2º o valor de Y. O 3º parametro é o comprimento (width, w) da imagem e o 4º valor e a altura (height, h) de onde o click ocorreu. Caso o click ocorra, esse metodo retorna um array de inteiros, sendo o 1º o valor de X, e o 2º o valor de Y. O 3º parametro é o comprimento (width, w) da imagem e o 4º valor e a altura (height, h) de onde o click ocorreu.
""" """
return self.__request__(f"/ipc/wingui/screen/click?f={img}") return self.__requestget__(f"/ipc/wingui/screen/click?f={img}")
def screen_clickcenter(self, img: str): def screen_clickcenter(self, img: str):
@ -64,7 +82,7 @@ class Wingui:
Análogo a screen_click, mas clica no centro da imagem. Análogo a screen_click, mas clica no centro da imagem.
""" """
return self.__request__(f"/ipc/wingui/screen/clickcenter?f={img}") return self.__requestget__(f"/ipc/wingui/screen/clickcenter?f={img}")
def screen_capture(self, f: str, x: int, y: int, w: int, h: int): def screen_capture(self, f: str, x: int, y: int, w: int, h: int):
""" """
@ -78,7 +96,7 @@ class Wingui:
Para capturar um retangulo, do Pixel (10,10) ate o Pixel (110,100), utiliza-se: Para capturar um retangulo, do Pixel (10,10) ate o Pixel (110,100), utiliza-se:
screen_capture("c:\\arq.png",10,10,100,100) screen_capture("c:\\arq.png",10,10,100,100)
""" """
return self.__request__(f"/ipc/wingui/screen/capture?x={x}&y={y}&w={w}&h={h}&f={f}") return self.__requestget__(f"/ipc/wingui/screen/capture?x={x}&y={y}&w={w}&h={h}&f={f}")
def screen_find(self, f: str): def screen_find(self, f: str):
@ -86,14 +104,14 @@ class Wingui:
Envia a coordenada da imagem identificada pelo arquivo f (x,y,w,h), ou uma excecao caso a imagem não seja encontrada. Envia a coordenada da imagem identificada pelo arquivo f (x,y,w,h), ou uma excecao caso a imagem não seja encontrada.
""" """
return self.__request__(f"/ipc/wingui/screen/find?f={f}") return self.__requestget__(f"/ipc/wingui/screen/find?f={f}")
def screen_findall (self, f: str): def screen_findall (self, f: str):
""" """
Busca a imagem fornecida no parâmetro "f", se a encontrar, passa a buscar todas as recorrências desta imagem na tela. Retorna um array com as posições de todas as imagens encontradas. Busca a imagem fornecida no parâmetro "f", se a encontrar, passa a buscar todas as recorrências desta imagem na tela. Retorna um array com as posições de todas as imagens encontradas.
""" """
return self.__request__(f"/ipc/wingui/screen/findall?f={f}") return self.__requestget__(f"/ipc/wingui/screen/findall?f={f}")
def screen_wait(self, f: str, m: int = 30): def screen_wait(self, f: str, m: int = 30):
@ -105,7 +123,7 @@ class Wingui:
-retorno: Array com as coordenadas da imagem encontrada e caminho da imagem utilizada para busca. -retorno: Array com as coordenadas da imagem encontrada e caminho da imagem utilizada para busca.
""" """
return self.__request__(f"/ipc/wingui/screen/wait?f={f}&m={m}") return self.__requestget__(f"/ipc/wingui/screen/wait?f={f}&m={m}")
def screen_waitclick(self, f: str, m: int = 30): def screen_waitclick(self, f: str, m: int = 30):
""" """
@ -116,70 +134,70 @@ class Wingui:
-retorno: Array com as coordenadas da imagem encontrada e caminho da imagem utilizada para busca. -retorno: Array com as coordenadas da imagem encontrada e caminho da imagem utilizada para busca.
""" """
return self.__request__(f"/ipc/wingui/screen/waitclick?f={f}&m={m}") return self.__requestget__(f"/ipc/wingui/screen/waitclick?f={f}&m={m}")
def screen_waitclickcenter(self, f: str, m: int = 30): def screen_waitclickcenter(self, f: str, m: int = 30):
""" """
Analogo a screen_waitclick, mas realiza click no CENTRO da imagem Analogo a screen_waitclick, mas realiza click no CENTRO da imagem
""" """
return self.__request__(f"/ipc/wingui/screen/waitclickcenter?f={f}&m={m}") return self.__requestget__(f"/ipc/wingui/screen/waitclickcenter?f={f}&m={m}")
def screen_scale(self): def screen_scale(self):
""" """
Retorna a escala da tela, em um array [x,y] Retorna a escala da tela, em um array [x,y]
""" """
return self.__request__("/ipc/wingui/screen/scale") return self.__requestget__("/ipc/wingui/screen/scale")
def screen_size(self): def screen_size(self):
""" """
Retorna a tamanho da tela, em um array [x,y] Retorna a tamanho da tela, em um array [x,y]
""" """
return self.__request__("/ipc/wingui/screen/size") return self.__requestget__("/ipc/wingui/screen/size")
# def screen_res(self, d: int) -> List[int]: # def screen_res(self, d: int) -> List[int]:
# """ # """
# Retorna a resolução da tela, em um array [x,y] # Retorna a resolução da tela, em um array [x,y]
# """ # """
# return self.__request__(f"/ipc/wingui/screen/res?d={d}") # return self.__requestget__(f"/ipc/wingui/screen/res?d={d}")
# def screen_setres(self, x: int, y: int, c: int): # def screen_setres(self, x: int, y: int, c: int):
# """ # """
# Set resolução e cor da tela # Set resolução e cor da tela [DESCONTINUADA. VER display_setres]
# """ # """
# return self.__request__(f"/ipc/wingui/screen/setres?x={x}&y={y}&c={c}") # return self.__requestget__(f"/ipc/wingui/screen/setres?x={x}&y={y}&c={c}")
def screen_shot(self, fmt: str = "b64"): def screen_shot(self, fmt: str = "b64"):
""" """
Tira um screenshot e retorna imagem como string Tira um screenshot e retorna imagem como string
""" """
return self.__request__(f"/ipc/wingui/screen/shot?fmt={fmt}") return self.__requestget__(f"/ipc/wingui/screen/shot?fmt={fmt}")
def screen_dsinternal(self): def screen_dsinternal(self):
""" """
Faz com que o monitor definido como primário (através das configurações do windows) seja o único ativo. Faz com que o monitor definido como primário (através das configurações do windows) seja o único ativo.
""" """
return self.__request__(f"/ipc/wingui/screen/dsinternal") return self.__requestget__(f"/ipc/wingui/screen/dsinternal")
def screen_dsexternal(self): def screen_dsexternal(self):
""" """
Faz com que o monitor definido como secundário (através das configurações do windows) seja o único ativo. Faz com que o monitor definido como secundário (através das configurações do windows) seja o único ativo.
""" """
return self.__request__(f"/ipc/wingui/screen/dsexternal") return self.__requestget__(f"/ipc/wingui/screen/dsexternal")
def screen_dsclone(self): def screen_dsclone(self):
""" """
Faz com que o vídeo exibido no monitor definido como primário seja clonado para o secundário. Faz com que o vídeo exibido no monitor definido como primário seja clonado para o secundário.
""" """
return self.__request__(f"/ipc/wingui/screen/dsclone") return self.__requestget__(f"/ipc/wingui/screen/dsclone")
def screen_dsextend(self): def screen_dsextend(self):
""" """
Faz com que o vídeo de ambos os monitores seja independente. Faz com que o vídeo de ambos os monitores seja independente.
""" """
return self.__request__(f"/ipc/wingui/screen/dsextend") return self.__requestget__(f"/ipc/wingui/screen/dsextend")
# Funções Draw # Funções Draw
def draw_addbox(self, x: int, y: int, w: int = 100, h: int = 100, t: int = 3): def draw_addbox(self, x: int, y: int, w: int = 100, h: int = 100, t: int = 3):
@ -194,7 +212,7 @@ class Wingui:
Todos os parâmetros devem ser dados em píxels. Todos os parâmetros devem ser dados em píxels.
""" """
return self.__request__(f"/ipc/wingui/draw/addbox?x={x}&y={y}&w={w}&h={h}&t={t}") return self.__requestget__(f"/ipc/wingui/draw/addbox?x={x}&y={y}&w={w}&h={h}&t={t}")
def draw_addrect(self, x: int, y: int, w: int = 100, h: int = 100): def draw_addrect(self, x: int, y: int, w: int = 100, h: int = 100):
""" """
@ -207,7 +225,7 @@ class Wingui:
Todos os parâmetros devem ser dados em píxels. Todos os parâmetros devem ser dados em píxels.
""" """
return self.__request__(f"/ipc/wingui/draw/addrect?x={x}&y={y}&w={w}&h={h}") return self.__requestget__(f"/ipc/wingui/draw/addrect?x={x}&y={y}&w={w}&h={h}")
def draw_addtext(self, x: int, y: int, t: str = "No text set"): def draw_addtext(self, x: int, y: int, t: str = "No text set"):
""" """
@ -217,15 +235,15 @@ class Wingui:
-y: Ponto inicial do eixo y para a escrita. -y: Ponto inicial do eixo y para a escrita.
-t: Texto a ser escrito. -t: Texto a ser escrito.
""" """
return self.__request__(f"/ipc/wingui/draw/addtext?x={x}&y={y}&t={urllib.parse.quote(t)}") return self.__requestget__(f"/ipc/wingui/draw/addtext?x={x}&y={y}&t={urllib.parse.quote(t)}")
def draw_clear(self): def draw_clear(self):
"""Limpa tela de overlay""" """Limpa tela de overlay"""
return self.__request__("/ipc/wingui/draw/clear") return self.__requestget__("/ipc/wingui/draw/clear")
# def draw_show(self): # def draw_show(self):
# """mostra tela de overlay""" # """mostra tela de overlay"""
# return self.__request__("/ipc/wingui/draw/show") # return self.__requestget__("/ipc/wingui/draw/show")
# Funções KB # Funções KB
def kb_tap(self, s: str) -> str: def kb_tap(self, s: str) -> str:
@ -234,20 +252,20 @@ class Wingui:
Dessa forma, para enviar ALT+d, vc envia o string "d,alt". Para enviar C maiusculo, vc utiiliza Dessa forma, para enviar ALT+d, vc envia o string "d,alt". Para enviar C maiusculo, vc utiiliza
"c,shift". "c,shift".
""" """
return self.__request__(f'/ipc/wingui/kb/tap?str={urllib.parse.quote(s, "")}') return self.__requestget__(f'/ipc/wingui/kb/tap?str={urllib.parse.quote(s, "")}')
def kb_type(self, s: str) -> str: def kb_type(self, s: str) -> str:
"""Semelhante a tap, mas envia textos completos. """Semelhante a tap, mas envia textos completos.
***ATENCAO*** Esse metodo usa urlencoding, dessa forma caracteres serao codificados para envio. # virará %23 por exemplo. Ao chegar no robo passarão pelo decoding análogo. ***ATENCAO*** Esse metodo usa urlencoding, dessa forma caracteres serao codificados para envio. # virará %23 por exemplo. Ao chegar no robo passarão pelo decoding análogo.
""" """
return self.__request__("/ipc/wingui/kb/type?str={}".format(urllib.parse.quote(s, ""))) return self.__requestget__("/ipc/wingui/kb/type?str={}".format(urllib.parse.quote(s, "")))
def kb_toggle(self, s: str) -> str: def kb_toggle(self, s: str) -> str:
"""Semelhante a tap, mas envia textos completos. """Semelhante a tap, mas envia textos completos.
***ATENCAO*** Esse metodo usa urlencoding, dessa forma caracteres serao codificados para envio. # virará %23 ***ATENCAO*** Esse metodo usa urlencoding, dessa forma caracteres serao codificados para envio. # virará %23
por exemplo. Ao chegar no robo passrão pelo decoding análogo. por exemplo. Ao chegar no robo passrão pelo decoding análogo.
""" """
return self.__request__("/ipc/wingui/kb/toggle?str={}".format(urllib.parse.quote(s, ""))) return self.__requestget__("/ipc/wingui/kb/toggle?str={}".format(urllib.parse.quote(s, "")))
# Funções Dialog # Funções Dialog
def dialog_color(self, t: str = "Selecione Cor", d: str = "BEBEBE") -> bool: def dialog_color(self, t: str = "Selecione Cor", d: str = "BEBEBE") -> bool:
@ -259,7 +277,7 @@ class Wingui:
Retorna: Retorna:
Dict Dict
""" """
return self.__request__(f'/ipc/wingui/dialog/color?t={urllib.parse.quote(t, "")}&d={urllib.parse.quote(d, "")}') return self.__requestget__(f'/ipc/wingui/dialog/color?t={urllib.parse.quote(t, "")}&d={urllib.parse.quote(d, "")}')
def dialog_date(self, t: str = "Selecione Data", m: str = "", d="", f="") -> str: def dialog_date(self, t: str = "Selecione Data", m: str = "", d="", f="") -> str:
""" """
@ -272,7 +290,7 @@ class Wingui:
Retorna: Retorna:
Dict Dict
""" """
return self.__request__(f'/ipc/wingui/dialog/date?t={urllib.parse.quote(t, "")}&m={urllib.parse.quote(m, "")}&d={urllib.parse.quote(d, "")}&f={urllib.parse.quote(f, "")}') return self.__requestget__(f'/ipc/wingui/dialog/date?t={urllib.parse.quote(t, "")}&m={urllib.parse.quote(m, "")}&d={urllib.parse.quote(d, "")}&f={urllib.parse.quote(f, "")}')
def dialog_entry(self, t: str = "Favor inserir", m: str = "Valor", d: str = "Valor") -> str: def dialog_entry(self, t: str = "Favor inserir", m: str = "Valor", d: str = "Valor") -> str:
""" """
@ -288,7 +306,7 @@ class Wingui:
-> String digitada. -> String digitada.
""" """
return self.__request__(f'/ipc/wingui/dialog/entry?t={urllib.parse.quote(t, "")}&m={urllib.parse.quote(m, "")}&d={urllib.parse.quote(d, "")}') return self.__requestget__(f'/ipc/wingui/dialog/entry?t={urllib.parse.quote(t, "")}&m={urllib.parse.quote(m, "")}&d={urllib.parse.quote(d, "")}')
def dialog_error(self, t: str = "Erro", m: str = "Houve um erro") -> bool: def dialog_error(self, t: str = "Erro", m: str = "Houve um erro") -> bool:
""" """
@ -303,7 +321,7 @@ class Wingui:
-> "ok" -> "ok"
""" """
return self.__request__(f'/ipc/wingui/dialog/error?t={urllib.parse.quote(t, "")}&m={urllib.parse.quote(m, "")}') return self.__requestget__(f'/ipc/wingui/dialog/error?t={urllib.parse.quote(t, "")}&m={urllib.parse.quote(m, "")}')
def dialog_file(self, t: str = "Selecionar arquivo", f: str = ".", d: str = "false") -> str: def dialog_file(self, t: str = "Selecionar arquivo", f: str = ".", d: str = "false") -> str:
""" """
@ -320,7 +338,7 @@ class Wingui:
-> Caminho absoluto do arquivo selecionado -> Caminho absoluto do arquivo selecionado
""" """
return self.__request__(f'/ipc/wingui/dialog/file?t={urllib.parse.quote(t, "")}&f={urllib.parse.quote(f, "")}&d={urllib.parse.quote(d, "")}') return self.__requestget__(f'/ipc/wingui/dialog/file?t={urllib.parse.quote(t, "")}&f={urllib.parse.quote(f, "")}&d={urllib.parse.quote(d, "")}')
def dialog_file_multi(self, t: str = "Selecionar arquivos", f: str = ".") -> List[str]: def dialog_file_multi(self, t: str = "Selecionar arquivos", f: str = ".") -> List[str]:
""" """
@ -336,7 +354,7 @@ class Wingui:
-> Lista com os caminhos absolutos dos arquivos selecionados. -> Lista com os caminhos absolutos dos arquivos selecionados.
""" """
return self.__request__(f'/ipc/wingui/dialog/filemulti?t={urllib.parse.quote(t, "")}&f={urllib.parse.quote(f, "")}') return self.__requestget__(f'/ipc/wingui/dialog/filemulti?t={urllib.parse.quote(t, "")}&f={urllib.parse.quote(f, "")}')
def dialog_info(self, t: str = "Info", m: str = "Info Msg") -> bool: def dialog_info(self, t: str = "Info", m: str = "Info Msg") -> bool:
""" """
@ -352,7 +370,7 @@ class Wingui:
-> "ok" -> "ok"
""" """
return self.__request__(f'/ipc/wingui/dialog/info?t={urllib.parse.quote(t, "")}&m={urllib.parse.quote(m, "")}') return self.__requestget__(f'/ipc/wingui/dialog/info?t={urllib.parse.quote(t, "")}&m={urllib.parse.quote(m, "")}')
def dialog_list(self, t: str = "Selecionar", m: str = "Selecione uma entrada", f: List[str] = []) -> str: def dialog_list(self, t: str = "Selecionar", m: str = "Selecione uma entrada", f: List[str] = []) -> str:
""" """
@ -369,7 +387,7 @@ class Wingui:
-> Opção escolhida -> Opção escolhida
""" """
return self.__request__(f'/ipc/wingui/dialog/list?t={urllib.parse.quote(t, "")}&m={urllib.parse.quote(m, "")}&f={urllib.parse.quote(",".join(f), "")}') return self.__requestget__(f'/ipc/wingui/dialog/list?t={urllib.parse.quote(t, "")}&m={urllib.parse.quote(m, "")}&f={urllib.parse.quote(",".join(f), "")}')
def dialog_listmulti(self, t: str = "Selecionar", m: str = "Selecione uma entrada", f: List[str] = []) -> List[str]: def dialog_listmulti(self, t: str = "Selecionar", m: str = "Selecione uma entrada", f: List[str] = []) -> List[str]:
""" """
@ -386,7 +404,7 @@ class Wingui:
-> Lista com as opções escolhidas -> Lista com as opções escolhidas
""" """
return self.__request__(f'/ipc/wingui/dialog/listmulti?t={urllib.parse.quote(t, "")}&m={urllib.parse.quote(m, "")}&f={urllib.parse.quote(",".join(f), "")}') return self.__requestget__(f'/ipc/wingui/dialog/listmulti?t={urllib.parse.quote(t, "")}&m={urllib.parse.quote(m, "")}&f={urllib.parse.quote(",".join(f), "")}')
def dialog_password(self, t: str = "Entrar com Senha", m: str = "Favor fornecer sua senha") -> str: def dialog_password(self, t: str = "Entrar com Senha", m: str = "Favor fornecer sua senha") -> str:
""" """
@ -401,7 +419,7 @@ class Wingui:
Retorna: Retorna:
-> Texto digitado. -> Texto digitado.
""" """
return self.__request__(f'/ipc/wingui/dialog/password?t={urllib.parse.quote(t, "")}&m={urllib.parse.quote(m, "")}') return self.__requestget__(f'/ipc/wingui/dialog/password?t={urllib.parse.quote(t, "")}&m={urllib.parse.quote(m, "")}')
def dialog_question(self, t: str = "Question", m: str = "Question Msg") -> bool: def dialog_question(self, t: str = "Question", m: str = "Question Msg") -> bool:
""" """
@ -417,7 +435,7 @@ class Wingui:
- True: Caso clique em sim - True: Caso clique em sim
- False: Caso clique em não - False: Caso clique em não
""" """
return self.__request__(f'/ipc/wingui/dialog/question?t={urllib.parse.quote(t, "")}&m={urllib.parse.quote(m, "")}') return self.__requestget__(f'/ipc/wingui/dialog/question?t={urllib.parse.quote(t, "")}&m={urllib.parse.quote(m, "")}')
def dialog_warn(self, t: str = "Warn", m: str = "Warn") -> bool: def dialog_warn(self, t: str = "Warn", m: str = "Warn") -> bool:
""" """
@ -433,7 +451,7 @@ class Wingui:
-> "ok" -> "ok"
""" """
return self.__request__(f'/ipc/wingui/dialog/warn?t={urllib.parse.quote(t, "")}&m={urllib.parse.quote(m, "")}') return self.__requestget__(f'/ipc/wingui/dialog/warn?t={urllib.parse.quote(t, "")}&m={urllib.parse.quote(m, "")}')
# def dialog_yesno(self, t: str, m: str) -> bool: # def dialog_yesno(self, t: str, m: str) -> bool:
# """ # """
@ -444,7 +462,7 @@ class Wingui:
# Retorna: # Retorna:
# bool # bool
# """ # """
# return self.__request__("dialog/yesno?t={}&m={}".format(urllib.parse.quote(t, ""), urllib.parse.quote(m, ""))) # return self.__requestget__("dialog/yesno?t={}&m={}".format(urllib.parse.quote(t, ""), urllib.parse.quote(m, "")))
# #
# def dialog_filesave(self, t: str, d: str, x: List[str]) -> str: # def dialog_filesave(self, t: str, d: str, x: List[str]) -> str:
# """ # """
@ -457,7 +475,7 @@ class Wingui:
# str: Nome do arquivo # str: Nome do arquivo
# """ # """
# xstr = ",".join(x) # xstr = ",".join(x)
# return self.__request__( # return self.__requestget__(
# "dialog/filesave?t={}&d={}&x={}".format(urllib.parse.quote(t, ""), urllib.parse.quote(d, ""), # "dialog/filesave?t={}&d={}&x={}".format(urllib.parse.quote(t, ""), urllib.parse.quote(d, ""),
# urllib.parse.quote(xstr, ""))) # urllib.parse.quote(xstr, "")))
# #
@ -472,7 +490,7 @@ class Wingui:
# str: Nome do arquivo # str: Nome do arquivo
# """ # """
# xstr = ",".join(x) # xstr = ",".join(x)
# return self.__request__( # return self.__requestget__(
# "dialog/fileload?t={}&d={}&x={}".format(urllib.parse.quote(t, ""), urllib.parse.quote(d, ""), # "dialog/fileload?t={}&d={}&x={}".format(urllib.parse.quote(t, ""), urllib.parse.quote(d, ""),
# urllib.parse.quote(xstr, ""))) # urllib.parse.quote(xstr, "")))
# #
@ -484,7 +502,7 @@ class Wingui:
# Retorna: # Retorna:
# str: Nome do diretorio # str: Nome do diretorio
# """ # """
# return self.__request__("dialog/dir?t={}".format(urllib.parse.quote(t, ""))) # return self.__requestget__("dialog/dir?t={}".format(urllib.parse.quote(t, "")))
# Funções Mouse # Funções Mouse
def mouse_move(self, x: int, y: int) -> str: def mouse_move(self, x: int, y: int) -> str:
@ -501,7 +519,7 @@ class Wingui:
--- ---
""" """
return self.__request__(f"/ipc/wingui/mouse/move?x={x}&y={y}") return self.__requestget__(f"/ipc/wingui/mouse/move?x={x}&y={y}")
def mouse_drag(self, x: int, y: int, btn: str = "left") -> str: def mouse_drag(self, x: int, y: int, btn: str = "left") -> str:
""" """
@ -517,7 +535,7 @@ class Wingui:
--- ---
""" """
return self.__request__(f'/ipc/wingui/mouse/drag?x={x}&y={y}&btn={urllib.parse.quote(btn, "")}') return self.__requestget__(f'/ipc/wingui/mouse/drag?x={x}&y={y}&btn={urllib.parse.quote(btn, "")}')
def mouse_click(self) -> str: def mouse_click(self) -> str:
""" """
@ -532,7 +550,7 @@ class Wingui:
Retorna: Retorna:
--- ---
""" """
return self.__request__("/ipc/wingui/mouse/click") return self.__requestget__("/ipc/wingui/mouse/click")
def mouse_moverelative(self, x: int, y: int) -> str: def mouse_moverelative(self, x: int, y: int) -> str:
""" """
@ -549,7 +567,7 @@ class Wingui:
--- ---
""" """
return self.__request__("/ipc/wingui/mouse/moverelative?x={}&y={}".format(x, y)) return self.__requestget__("/ipc/wingui/mouse/moverelative?x={}&y={}".format(x, y))
def mouse_clickat(self, x: int, y: int): def mouse_clickat(self, x: int, y: int):
""" """
@ -565,7 +583,7 @@ class Wingui:
--- ---
""" """
return self.__request__("/ipc/wingui/mouse/clickat?x={}&y={}".format(x, y)) return self.__requestget__("/ipc/wingui/mouse/clickat?x={}&y={}".format(x, y))
def mouse_clickatrelative(self, x: int, y: int): def mouse_clickatrelative(self, x: int, y: int):
""" """
@ -581,7 +599,7 @@ class Wingui:
--- ---
""" """
return self.__request__("/ipc/wingui/mouse/clickatrelative?x={}&y={}".format(x, y)) return self.__requestget__("/ipc/wingui/mouse/clickatrelative?x={}&y={}".format(x, y))
# Funções Notify # Funções Notify
def notify_alert(self, t: str, m: str): def notify_alert(self, t: str, m: str):
@ -602,7 +620,7 @@ class Wingui:
t = urllib.parse.quote(t, "") t = urllib.parse.quote(t, "")
m = urllib.parse.quote(m, "") m = urllib.parse.quote(m, "")
return self.__request__(f"/ipc/wingui/notify/alert?msg={m}&title={t}") return self.__requestget__(f"/ipc/wingui/notify/alert?msg={m}&title={t}")
def notify_beep(self, t: str, m: str): def notify_beep(self, t: str, m: str):
@ -622,7 +640,7 @@ class Wingui:
t = urllib.parse.quote(t, "") t = urllib.parse.quote(t, "")
m = urllib.parse.quote(m, "") m = urllib.parse.quote(m, "")
return self.__request__(f"/ipc/wingui/notify/notify?msg={m}&title={t}") return self.__requestget__(f"/ipc/wingui/notify/notify?msg={m}&title={t}")
# Funções proc # Funções proc
def proc_exec(self, cmd: str): def proc_exec(self, cmd: str):
@ -645,7 +663,7 @@ class Wingui:
-> "ok" -> "ok"
""" """
cmd = urllib.parse.quote(cmd, "") cmd = urllib.parse.quote(cmd, "")
return self.__request__(f"/ipc/wingui/proc/exec?cmd={cmd}") return self.__requestget__(f"/ipc/wingui/proc/exec?cmd={cmd}")
def proc_kill(self, pid: int): def proc_kill(self, pid: int):
@ -662,7 +680,7 @@ class Wingui:
- Sucesso: "Êxito, o processo com PID {num_do_pid} foi finalizado.". - Sucesso: "Êxito, o processo com PID {num_do_pid} foi finalizado.".
- Falha: Erro. - Falha: Erro.
""" """
return self.__request__(f"/ipc/wingui/proc/kill?cmd={pid}") return self.__requestget__(f"/ipc/wingui/proc/kill?cmd={pid}")
def proc_all(self): def proc_all(self):
@ -684,7 +702,7 @@ class Wingui:
} }
Onde Pid é um inteiro representando o PID do processo, e Name é o nome do processo. Onde Pid é um inteiro representando o PID do processo, e Name é o nome do processo.
""" """
return self.__request__("/ipc/wingui/proc/all") return self.__requestget__("/ipc/wingui/proc/all")
def proc_name(self, pid: int): def proc_name(self, pid: int):
""" """
@ -700,7 +718,7 @@ class Wingui:
#### Retorna: #### Retorna:
-> Nome do processo correspondente ao PID. -> Nome do processo correspondente ao PID.
""" """
return self.__request__(f"/ipc/wingui/proc/name?pid={pid}") return self.__requestget__(f"/ipc/wingui/proc/name?pid={pid}")
def proc_path(self, pid: int): def proc_path(self, pid: int):
""" """
@ -715,7 +733,7 @@ class Wingui:
#### Retorna: #### Retorna:
-> Caminho do arquivo correspondente ao PID. -> Caminho do arquivo correspondente ao PID.
""" """
return self.__request__(f"/ipc/wingui/proc/path?pid={pid}") return self.__requestget__(f"/ipc/wingui/proc/path?pid={pid}")
def proc_pids(self): def proc_pids(self):
""" """
@ -731,7 +749,7 @@ class Wingui:
#### Retorna: #### Retorna:
-> Array de inteiros contendo todos os PIDS ativos da máquina. -> Array de inteiros contendo todos os PIDS ativos da máquina.
""" """
return self.__request__("/ipc/wingui/proc/pids") return self.__requestget__("/ipc/wingui/proc/pids")
# Funções Window # Funções Window
def window_activehwnd(self) -> int: def window_activehwnd(self) -> int:
@ -753,7 +771,7 @@ class Wingui:
-> HWND da janela ativa. -> HWND da janela ativa.
""" """
return self.__request__("/ipc/wingui/window/activehwnd") return self.__requestget__("/ipc/wingui/window/activehwnd")
def window_activetitle(self) -> str: def window_activetitle(self) -> str:
""" """
@ -770,7 +788,7 @@ class Wingui:
-> Título da janela ativa -> Título da janela ativa
""" """
return self.__request__("/ipc/wingui/window/activetitle") return self.__requestget__("/ipc/wingui/window/activetitle")
def window_list(self, s: str = "") -> List[dict]: def window_list(self, s: str = "") -> List[dict]:
@ -799,7 +817,7 @@ class Wingui:
""" """
s = urllib.parse.quote(s, "") s = urllib.parse.quote(s, "")
return self.__request__(f"/ipc/wingui/window/list?s={s}") return self.__requestget__(f"/ipc/wingui/window/list?s={s}")
def window_hwnd(self, s: str) -> List[int]: def window_hwnd(self, s: str) -> List[int]:
""" """
@ -814,7 +832,7 @@ class Wingui:
-> Lista de todos os HWNDs cujo nome da janela possua a substring "s". -> Lista de todos os HWNDs cujo nome da janela possua a substring "s".
""" """
s = urllib.parse.quote(s, "") s = urllib.parse.quote(s, "")
return self.__request__(f"/ipc/wingui/window/hwnd?s={s}") return self.__requestget__(f"/ipc/wingui/window/hwnd?s={s}")
def window_activate(self, hwnd: int): def window_activate(self, hwnd: int):
""" """
@ -829,7 +847,7 @@ class Wingui:
--- ---
""" """
return self.__request__(f"/ipc/wingui/window/activate?Hwnd={hwnd}") return self.__requestget__(f"/ipc/wingui/window/activate?Hwnd={hwnd}")
def window_close(self, hwnd: int): def window_close(self, hwnd: int):
""" """
@ -844,7 +862,7 @@ class Wingui:
--- ---
""" """
return self.__request__(f"/ipc/wingui/window/close?Hwnd={hwnd}") return self.__requestget__(f"/ipc/wingui/window/close?Hwnd={hwnd}")
def window_max(self, hwnd: int): def window_max(self, hwnd: int):
""" """
@ -859,7 +877,7 @@ class Wingui:
--- ---
""" """
return self.__request__(f"/ipc/wingui/window/max?Hwnd={hwnd}") return self.__requestget__(f"/ipc/wingui/window/max?Hwnd={hwnd}")
def window_min(self, s: int): def window_min(self, s: int):
""" """
@ -874,7 +892,7 @@ class Wingui:
--- ---
""" """
return self.__request__(f"/ipc/wingui/window/min?Hwnd={s}") return self.__requestget__(f"/ipc/wingui/window/min?Hwnd={s}")
def window_waitactivetitle(self, t: str, m: int = 30): def window_waitactivetitle(self, t: str, m: int = 30):
""" """
@ -898,4 +916,50 @@ class Wingui:
} }
""" """
t = urllib.parse.quote(t, "") t = urllib.parse.quote(t, "")
return self.__request__(f"/ipc/wingui/window/waitactivetitle?t={t}&m={m}") return self.__requestget__(f"/ipc/wingui/window/waitactivetitle?t={t}&m={m}")
# Funções Display
def display_res (self):
"""
## Display Resolution
Faz uma busca nas configurações de sistema do windows para encontrar informações sobre o mesmo. Entre as informações encontradas, está a resolução do monitor ativo.
---
#### Params:
---
---
#### Retorna:
- Dicionário contendo informações do sistema.
##### Formato de saída:
{
"nome_da_propriedade": valor_da_propriedade
.
.
.
"nome_da_propriedade": valor_da_propriedade
}
As informações de comprimento e altura da tela podem ser encontradas através das chaves "DmPelsWidth" e "DmPelsHeight" respectivamente.
"""
return self.__requestget__("/ipc/wingui/display/res")
def display_setres (self, DEVMODE: dict):
"""
## Display Set Resolution
Acessa as configurações do sistema e faz alterações na resolução da tela de acordo com os valores informados para a mesma.
---
#### Params:
- DEVMODE: Estrutura de dados com informações do sistema. Para mais informações, acesse: https://docs.microsoft.com/en-us/windows/win32/api/wingdi/ns-wingdi-devmodea
---
#### Retorno:
-> "ok"
"""
return self.__requestpost__("/ipc/wingui/display/setres", DEVMODE)