Post by Evoked » 07 Jul 2020, 20:28
Gio wrote: ↑07 Jul 2020, 19:04
Bom dia Evoked.
Pelo que entendi do código que você postou, ele implementa duas funções que enviam mensagens de janela do tipo "clique do mouse" para janelas alvo. Essas funções sabem qual para qual janela enviar as mensagens a partir do ID do processo que criou essas janelas (que você deve fornecer na chamada à função).
A primeira função parece ser para enviar cliques normais, e a segunda parece ser para enviar cliques com arrastar do mouse.
Logo, o que você teria que fazer para implementá-las seria descobrir o ID do processo alvo (pode ser obtido através do comando
Process com o paramêtro
Exist e o nome do processo alvo quando este processo estiver em execução na máquina), e depois colocar os restante das informações em chamadas às funções que você postou.
Parâmetros:
1. x -> coordenada x do clique.
2. y -> coordenada y do clique.
3. messageDelay -> tempo de pausa entre os cliques (milisegundos).
4. PID -> o ID do processo alvo, que como disse, pode ser obtido através do comando Process.
OBS: Não testei as funções, quem disse que elas funcionam foi o seu amigo, eu apenas interpretei o código. Mas acredito que funcionem sim. Se não funcionarem, sugiro colocar as janelas em segundo plano ao invés de minimizar.
entendi, o processo é esse "Trove.exe", agora a duvira principal era unir os 2 script em 1 unico.
no caso ficaria assim?
Code: Select all
; script macro universal
; Jones
#NoEnv
SetWorkingDir %A_ScriptDir%
CoordMode, Mouse, Window
SendMode Input
#SingleInstance Force
SetTitleMatchMode 2
#WinActivateForce
SetControlDelay 1
SetWinDelay 0
SetKeyDelay -1
SetMouseDelay -1
SetBatchLines -1
Gui Color, 0x000000
Gui Font, c0xB4BD02
Gui, Add, Text, x20 y75 w75 h20 +0x200 +center, Pause F12
Gui, Add, Text, x20 y45 w75 h20 +0x200 +center, Start F10
Gui Add, Text, x20 y16 w95 h23 +0x200 +center, Simple Bomb Script:
Gui Show, w150 h140,V.01
; UserGlobalVars
F10::
Macro1:
Loop
{
WinSet, AlwaysOnTop, Toggle, Current Window_Dx_Window_Class
Send, {LControl Down}
Send, {b}
Sleep, 1000
Click, 878, 568 Left, 1
Sleep, 1000
Click, 1137, 824 Left, 1
Sleep, 1000
Click, 958, 802 Left, 1
Sleep, 1000
Click, 856, 569 Left, 1
Sleep, 1000
}
Return
F8::ExitApp
F12::
Pause
Suspend
return
BackgroundClick(x, y, messageDelay, PID) {
lParam := x | (y << 16)
SendMessage, 0x006, 00000002, 00000000, , ahk_pid %PID% ;ACTIVE
PostMessage, 0x200, 00000001, %lParam%, , ahk_pid %PID% ;MOUSEMOVE
PostMessage, 0x201, 0x00120BD6, 0x01D80041, , ahk_pid %PID% ;LBUTTONDOWN
Sleep, %messageDelay%
PostMessage, 0x202, 0x00120BD6, 0x01D80041, , ahk_pid %PID% ;LBUTTONUP
return
}
BackgroundClickDrag(startX, startY, endX, endY, messageDelay, PID) {
;MessageDelay is used twice because we are using 3 messages that use the mouse
lParam := startX | (startY << 16)
SendMessage, 0x006, 00000002, 00000000, , ahk_pid %PID% ;ACTIVE
PostMessage, 0x200, 00000001, %lParam%, , ahk_pid %PID% ;MOUSEMOVE
PostMessage, 0x201, 00000001, %lParam%, , ahk_pid %PID% ;LBUTTONDOWN
Sleep, %messageDelay%
lParam := endX | (endY << 16)
PostMessage, 0x200, 0x0001, %lParam%, , ahk_pid %PID% ;MOUSEMOVE
Sleep, %messageDelay%
PostMessage, 0x202, 00000000, 02020001, , ahk_pid %PID% ;LBUTTONUP
return
}
[quote=Gio post_id=340446 time=1594166690 user_id=89]
Bom dia Evoked.
Pelo que entendi do código que você postou, ele implementa duas funções que enviam mensagens de janela do tipo "clique do mouse" para janelas alvo. Essas funções sabem qual para qual janela enviar as mensagens a partir do ID do processo que criou essas janelas (que você deve fornecer na chamada à função).
A primeira função parece ser para enviar cliques normais, e a segunda parece ser para enviar cliques com arrastar do mouse.
Logo, o que você teria que fazer para implementá-las seria descobrir o ID do processo alvo (pode ser obtido através do comando [url=https://www.autohotkey.com/docs/commands/Process.htm]Process[/url] com o paramêtro [c]Exist[/c] e o nome do processo alvo quando este processo estiver em execução na máquina), e depois colocar os restante das informações em chamadas às funções que você postou.
Parâmetros:
1. x -> coordenada x do clique.
2. y -> coordenada y do clique.
3. messageDelay -> tempo de pausa entre os cliques (milisegundos).
4. PID -> o ID do processo alvo, que como disse, pode ser obtido através do comando Process.
OBS: Não testei as funções, quem disse que elas funcionam foi o seu amigo, eu apenas interpretei o código. Mas acredito que funcionem sim. Se não funcionarem, sugiro colocar as janelas em segundo plano ao invés de minimizar.
[/quote]
entendi, o processo é esse "Trove.exe", agora a duvira principal era unir os 2 script em 1 unico.
no caso ficaria assim?
[code]; script macro universal
; Jones
#NoEnv
SetWorkingDir %A_ScriptDir%
CoordMode, Mouse, Window
SendMode Input
#SingleInstance Force
SetTitleMatchMode 2
#WinActivateForce
SetControlDelay 1
SetWinDelay 0
SetKeyDelay -1
SetMouseDelay -1
SetBatchLines -1
Gui Color, 0x000000
Gui Font, c0xB4BD02
Gui, Add, Text, x20 y75 w75 h20 +0x200 +center, Pause F12
Gui, Add, Text, x20 y45 w75 h20 +0x200 +center, Start F10
Gui Add, Text, x20 y16 w95 h23 +0x200 +center, Simple Bomb Script:
Gui Show, w150 h140,V.01
; UserGlobalVars
F10::
Macro1:
Loop
{
WinSet, AlwaysOnTop, Toggle, Current Window_Dx_Window_Class
Send, {LControl Down}
Send, {b}
Sleep, 1000
Click, 878, 568 Left, 1
Sleep, 1000
Click, 1137, 824 Left, 1
Sleep, 1000
Click, 958, 802 Left, 1
Sleep, 1000
Click, 856, 569 Left, 1
Sleep, 1000
}
Return
F8::ExitApp
F12::
Pause
Suspend
return
BackgroundClick(x, y, messageDelay, PID) {
lParam := x | (y << 16)
SendMessage, 0x006, 00000002, 00000000, , ahk_pid %PID% ;ACTIVE
PostMessage, 0x200, 00000001, %lParam%, , ahk_pid %PID% ;MOUSEMOVE
PostMessage, 0x201, 0x00120BD6, 0x01D80041, , ahk_pid %PID% ;LBUTTONDOWN
Sleep, %messageDelay%
PostMessage, 0x202, 0x00120BD6, 0x01D80041, , ahk_pid %PID% ;LBUTTONUP
return
}
BackgroundClickDrag(startX, startY, endX, endY, messageDelay, PID) {
;MessageDelay is used twice because we are using 3 messages that use the mouse
lParam := startX | (startY << 16)
SendMessage, 0x006, 00000002, 00000000, , ahk_pid %PID% ;ACTIVE
PostMessage, 0x200, 00000001, %lParam%, , ahk_pid %PID% ;MOUSEMOVE
PostMessage, 0x201, 00000001, %lParam%, , ahk_pid %PID% ;LBUTTONDOWN
Sleep, %messageDelay%
lParam := endX | (endY << 16)
PostMessage, 0x200, 0x0001, %lParam%, , ahk_pid %PID% ;MOUSEMOVE
Sleep, %messageDelay%
PostMessage, 0x202, 00000000, 02020001, , ahk_pid %PID% ;LBUTTONUP
return
}[/code]