From 86f70e0c680d9bfdceb13ed165f87ed503e2b868 Mon Sep 17 00:00:00 2001 From: Pedro de Oliveira Guedes Date: Thu, 30 Dec 2021 12:14:25 -0300 Subject: [PATCH] New request type and Display methods cration. --- api/wingui/cli.py | 202 ++++++++++++++++++++++++++++++---------------- 1 file changed, 133 insertions(+), 69 deletions(-) diff --git a/api/wingui/cli.py b/api/wingui/cli.py index aee1d2d..92cc0f7 100644 --- a/api/wingui/cli.py +++ b/api/wingui/cli.py @@ -18,7 +18,7 @@ class Wingui: def __init__(self): self.ep = "https://localhost:8443" - def __request__(self, data: str): + def __requestget__(self, data: str): """Metodo que realiza chamadas http""" @@ -35,15 +35,33 @@ class Wingui: return json.loads(res.text) else: 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 def clip_read(self) -> str: """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: """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 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. """ - 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): @@ -64,7 +82,7 @@ class Wingui: 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): """ @@ -78,7 +96,7 @@ class Wingui: Para capturar um retangulo, do Pixel (10,10) ate o Pixel (110,100), utiliza-se: 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): @@ -86,14 +104,14 @@ class Wingui: Envia a coordenada da imagem identificada pelo arquivo f (x,y,w,h), ou dá 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): """ 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): @@ -105,7 +123,7 @@ class Wingui: -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): """ @@ -116,70 +134,70 @@ class Wingui: -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): """ 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): """ 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): """ 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]: # """ - # 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): # """ - # 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"): """ 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): """ 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): """ 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): """ 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): """ 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 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. """ - 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): """ @@ -207,7 +225,7 @@ class Wingui: 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"): """ @@ -217,15 +235,15 @@ class Wingui: -y: Ponto inicial do eixo y para a escrita. -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): """Limpa tela de overlay""" - return self.__request__("/ipc/wingui/draw/clear") + return self.__requestget__("/ipc/wingui/draw/clear") # def draw_show(self): # """mostra tela de overlay""" - # return self.__request__("/ipc/wingui/draw/show") + # return self.__requestget__("/ipc/wingui/draw/show") # Funções KB 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 "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: """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. """ - 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: """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 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 def dialog_color(self, t: str = "Selecione Cor", d: str = "BEBEBE") -> bool: @@ -259,7 +277,7 @@ class Wingui: Retorna: 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: """ @@ -272,7 +290,7 @@ class Wingui: Retorna: 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: """ @@ -288,7 +306,7 @@ class Wingui: -> 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: """ @@ -303,7 +321,7 @@ class Wingui: -> "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: """ @@ -320,7 +338,7 @@ class Wingui: -> 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]: """ @@ -336,7 +354,7 @@ class Wingui: -> 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: """ @@ -352,7 +370,7 @@ class Wingui: -> "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: """ @@ -369,7 +387,7 @@ class Wingui: -> 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]: """ @@ -386,7 +404,7 @@ class Wingui: -> 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: """ @@ -401,7 +419,7 @@ class Wingui: Retorna: -> 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: """ @@ -417,7 +435,7 @@ class Wingui: - True: Caso clique em sim - 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: """ @@ -433,7 +451,7 @@ class Wingui: -> "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: # """ @@ -444,7 +462,7 @@ class Wingui: # Retorna: # 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: # """ @@ -457,7 +475,7 @@ class Wingui: # str: Nome do arquivo # """ # xstr = ",".join(x) - # return self.__request__( + # return self.__requestget__( # "dialog/filesave?t={}&d={}&x={}".format(urllib.parse.quote(t, ""), urllib.parse.quote(d, ""), # urllib.parse.quote(xstr, ""))) # @@ -472,7 +490,7 @@ class Wingui: # str: Nome do arquivo # """ # xstr = ",".join(x) - # return self.__request__( + # return self.__requestget__( # "dialog/fileload?t={}&d={}&x={}".format(urllib.parse.quote(t, ""), urllib.parse.quote(d, ""), # urllib.parse.quote(xstr, ""))) # @@ -484,7 +502,7 @@ class Wingui: # Retorna: # 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 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: """ @@ -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: """ @@ -532,7 +550,7 @@ class Wingui: Retorna: --- """ - return self.__request__("/ipc/wingui/mouse/click") + return self.__requestget__("/ipc/wingui/mouse/click") 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): """ @@ -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): """ @@ -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 def notify_alert(self, t: str, m: str): @@ -602,7 +620,7 @@ class Wingui: t = urllib.parse.quote(t, "") 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): @@ -622,7 +640,7 @@ class Wingui: t = urllib.parse.quote(t, "") 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 def proc_exec(self, cmd: str): @@ -645,7 +663,7 @@ class Wingui: -> "ok" """ 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): @@ -662,7 +680,7 @@ class Wingui: - Sucesso: "Êxito, o processo com PID {num_do_pid} foi finalizado.". - 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): @@ -684,7 +702,7 @@ class Wingui: } 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): """ @@ -700,7 +718,7 @@ class Wingui: #### Retorna: -> 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): """ @@ -715,7 +733,7 @@ class Wingui: #### Retorna: -> 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): """ @@ -731,7 +749,7 @@ class Wingui: #### Retorna: -> 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 def window_activehwnd(self) -> int: @@ -753,7 +771,7 @@ class Wingui: -> HWND da janela ativa. """ - return self.__request__("/ipc/wingui/window/activehwnd") + return self.__requestget__("/ipc/wingui/window/activehwnd") def window_activetitle(self) -> str: """ @@ -770,7 +788,7 @@ class Wingui: -> 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]: @@ -799,7 +817,7 @@ class Wingui: """ 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]: """ @@ -814,7 +832,7 @@ class Wingui: -> Lista de todos os HWNDs cujo nome da janela possua a substring "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): """ @@ -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): """ @@ -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): """ @@ -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): """ @@ -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): """ @@ -898,4 +916,50 @@ class Wingui: } """ 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) \ No newline at end of file