package wingui import ( "fmt" "go.digitalcircle.com.br/open/replaycli-go/api" ) type Cli struct { *api.ApiCli } //func (c *Cli) HttpCli() *api.Cli { // return c.cli //} func (c *Cli) ClipRead() (string, error) { ret := "" err := api.Call("wingui.clip.read", nil, &ret) //err := c.HttpCli().JsonGet(fmt.Sprintf("/ipc/wingui/clip/read"), &ret) return ret, err } func (c *Cli) ClipWrite(in string) error { var out interface{} err := api.Call("wingui.clip.read", in, &out) //err := c.HttpCli().JsonGet(fmt.Sprintf("/ipc/wingui/clip/write?str=%s", site), nil) return err } func (c *Cli) MouseClick() error { err := c.HttpCli().JsonGet(fmt.Sprintf("/ipc/wingui/mouse/click"), nil) return err } func (c *Cli) MouseMove(x, y int) error { err := c.HttpCli().JsonGet(fmt.Sprintf("/ipc/wingui/mouse/move?x=%d&y=%d", x, y), nil) return err } func (c *Cli) MouseMoveRelative(x, y int) error { err := c.HttpCli().JsonGet(fmt.Sprintf("/ipc/wingui/mouse/moverelative?x=%d&y=%d", x, y), nil) return err } func (c *Cli) MouseClickRelative(x, y int) error { err := c.HttpCli().JsonGet(fmt.Sprintf("/ipc/wingui/mouse/clickatrelative?x=%d&y=%d", x, y), nil) return err } func (c *Cli) MouseClickAt(x, y int) error { err := c.HttpCli().JsonGet(fmt.Sprintf("/ipc/wingui/mouse/clickat?x=%d&y=%d", x, y), nil) return err } func (c *Cli) ScreenClick(f string) error { err := c.HttpCli().JsonGet(fmt.Sprintf("/ipc/wingui/screen/click?f=%s", f), nil) return err } func (c *Cli) ScreenClickCenter(f string) error { err := c.HttpCli().JsonGet(fmt.Sprintf("/ipc/wingui/screen/clickcenter?f=%s", f), nil) return err } func (c *Cli) ScreenFind(f string) (ret map[string]interface{}, err error) { ret = make(map[string]interface{}) err = c.HttpCli().JsonGet(fmt.Sprintf("/ipc/wingui/screen/find?f=%s", f), &ret) return } func (c *Cli) KBTap(t string) (map[string]interface{}, error) { /*Envia uma tecla ou teclas para serem clicadas no componente com foco onde o robo é executado Em caso de teclas alteradoras, elas devem ser sempre posicionadas apos a tecla alvo. Dessa forma, para enviar ALT+d, vc envia o string "d,alt". Para enviar C maiusculo, vc utiiliza "c,shift". Referencia das teclas e respectivos strings: "`": 41, "1": 2, "2": 3, "3": 4, "4": 5, "5": 6, "6": 7, "7": 8, "8": 9, "9": 10, "0": 11, "-": 12, "+": 13, // "q": 16, "w": 17, "e": 18, "r": 19, "t": 20, "y": 21, "u": 22, "i": 23, "o": 24, "p": 25, "[": 26, "]": 27, "\\": 43, // "a": 30, "s": 31, "d": 32, "f": 33, "g": 34, "h": 35, "j": 36, "k": 37, "l": 38, ";": 39, "'": 40, // "z": 44, "x": 45, "c": 46, "v": 47, "b": 48, "n": 49, "m": 50, ",": 51, ".": 52, "/": 53, // "f1": 59, "f2": 60, "f3": 61, "f4": 62, "f5": 63, "f6": 64, "f7": 65, "f8": 66, "f9": 67, "f10": 68, "f11": 69, "f12": 70, // more "esc": 1, "delete": 14, "tab": 15, "ctrl": 29, "control": 29, "alt": 56, "space": 57, "shift": 42, "rshift": 54, "enter": 28, // "cmd": 3675, "command": 3675, "rcmd": 3676, "ralt": 3640, // "up": 57416, "down": 57424, "left": 57419, "right": 57421, */ ret := make(map[string]interface{}) err := c.HttpCli().JsonGet(fmt.Sprintf("/ipc/wingui/kb/tap?str=%s", t), &ret) return ret, err } func (c *Cli) KBType(t string) (map[string]interface{}, error) { /* 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. */ ret := make(map[string]interface{}) err := c.HttpCli().JsonGet(fmt.Sprintf("/ipc/wingui/kb/type?str=%s", t), &ret) return ret, err } func (c *Cli) ScreenWait(f string, m int) ([]byte, error) { url := fmt.Sprintf("/ipc/wingui/screen/wait?f=%s&m=%d", f, m) ret, err := c.HttpCli().RawGet(url) if err != nil { fmt.Printf(err.Error()) } fmt.Println(ret) return ret, err } func (c *Cli) ScreenWaitClick(f string, m int) ([]byte, error) { url := fmt.Sprintf("/ipc/wingui/screen/waitclick?f=%s&m=%d", f, m) ret, err := c.HttpCli().RawGet(url) if err != nil { fmt.Printf(err.Error()) } fmt.Println(ret) return ret, err } func (c *Cli) ScreenWaitClickCenter(f string, m int) ([]byte, error) { url := fmt.Sprintf("/ipc/wingui/screen/waitclickcenter?f=%s&m=%d", f, m) ret, err := c.HttpCli().RawGet(url) if err != nil { fmt.Printf(err.Error()) } fmt.Println(ret) return ret, err } func (c *Cli) ScreenRes() ([]byte, error) { url := fmt.Sprintf("/ipc/wingui/screen/res") ret, err := c.HttpCli().RawGet(url) if err != nil { fmt.Printf(err.Error()) } return ret, err } func (c *Cli) ScreenSetRes(x, y, cor int) error { err := c.HttpCli().JsonGet(fmt.Sprintf("/ipc/wingui/screen/setres?x=%d&y=%d&c=%d", x, y, cor), nil) return err } func NewCli() *Cli { ret := &Cli{ApiCli: api.NewApiCli()} return ret }