restringir comandos

Tire suas dúvidas sobre programação em AutoHotkey

Moderator: Gio

Amanda
Posts: 18
Joined: 16 May 2018, 11:01

restringir comandos

11 Jun 2018, 18:56

Oi dá para deixar a ahk funcionar apenas em um software?
🍀
User avatar
Gio
Posts: 1247
Joined: 30 Sep 2013, 10:54
Location: Brazil

Re: restringir comandos

12 Jun 2018, 14:57

Boa tarde Amanda.

Seja bem-vinda ao fórum da comunidade do AutoHotkey.

Sim, existem várias maneiras de fazer isso. A mais usual é criar uma condicional pelo nome ou tipo de janela que estiver ativa no computador. Isso pode ser feito através do comando #If (se você deseja que hotkeys e hotstrings funcionem apenas se a condição imposta estiver satisfeita) ou então através de uma condicional simples (se você deseja que um bloco de códigos execute apenas se a condição imposta estiver satisfeita).

Por exemplo, se você quiser que a hotkey F2 funcione apenas se a tela do Bloco de Notas do windows estiver aberta, basta colocar algo do tipo:

Code: Select all

#If WinActive("ahk_class Notepad")
F2::
MsgBox, A tela do Bloco de Notas está ativa!
Espero ter ajudado e sinta-se livre para perguntar novamente caso tenha outra dúvida :thumbup:
garry
Posts: 3760
Joined: 22 Dec 2013, 12:50

Re: restringir comandos

12 Jun 2018, 16:25

Exemplo: copiar texto e enviar para o bloco de notas
( não sei como usar o UTF-8 )

Exemple-1 test :

Code: Select all

clipboard=
pr=notepad.exe
sc=ahk_exe notepad.exe

e4x=
(Ltrim Join`r`n
Marchas e casamentos na noite de Santo Antonio em Lisboa .
Mais de 1600 marchantes descem a Avenida da Liberdade.
No total, desfilam mais de 1600 marchantes. 
Vamos ver de tudo um pouco: 
arraiais e manjericos, varinas e fragateiros, tourada e fado, xailes e guitarras, vitrais, barbeiros.
Ler mais em: https://www.cmjornal.pt/sociedade/detalhe/marchas-e-casamentos-na-noite-de-santo-antonio-em-lisboa
)
clipboard=%e4x%                 ;- save to clipboard
IfWinNotExist,%sc%
 {
 Run, %pr%,,,pid1
 scx:= "ahk_pid " . PID1
 WinWait,%scx%
 }
IfWinNotActive ,%scx%,,WinActivate,%scx%
    WinWaitActive,%scx%
send,^v                      ;- send to notepad
clipboard=
return
esc::exitapp    ; quit this script with escape
exemplo-2 ( alt+F5 )

Code: Select all

clipboard=
pr=notepad.exe
sc=ahk_exe notepad.exe

;- hotkey F5
!F5::
sendinput, ^c         ;- copy marked text
clipwait,2

IfWinNotExist,%sc%
 {
 Run, %pr%,,,pid1
 scx:= "ahk_pid " . PID1
 WinWait,%scx%
 }
IfWinNotActive ,%scx%,,WinActivate,%scx%
    WinWaitActive,%scx%
send,^v                      ;- send to notepad
clipboard=
return
esc::exitapp    ; quit this script with escape
Amanda
Posts: 18
Joined: 16 May 2018, 11:01

Re: restringir comandos

15 Jun 2018, 12:25

Tô lendo sobre janelas e encontrei divisão de janelas estou confusa o q é a classe de uma janela e como eu encontro? Achei WinGetClass e ñ entendi se deve colocar no script como comando para encontrar a classe da janela ou é apenas uma classificação, tem WinGetActiveTitle, WinGetActiveStats, WinGetPos, WinGetText eu ñ entendi. obrigada pela ultima resposta
🍀
garry
Posts: 3760
Joined: 22 Dec 2013, 12:50

Re: restringir comandos

15 Jun 2018, 15:11

clique direito 'Window spy' ( 'tray icon' para um script ahk iniciado )
ou test script ( mova o 'mouse' )

Code: Select all

;- ahk_classx controlx togglex mousegetposx whilex
;-------- https://autohotkey.com/boards/viewtopic.php?f=5&t=12958 ---
Gui, +AlwaysOnTop
Gui, Add, Button,         , reload
Gui, Add, Button, default , MouseGetPos
Gui, Show
run,notepad   ; -for test
return

ButtonMouseGetPos:
MouseGetToggle := !MouseGetToggle
SetTimer, MouseGetCode, -1
Return

MouseGetCode:
While MouseGetToggle
{
	MouseGetPos, , , id, control
	WinGetTitle, title, ahk_id %id%
	WinGetClass, class, ahk_id %id%
	coordmode, Mouse, relative
	MouseGetPos, xpos, ypos
	coordmode, Mouse, screen
	MouseGetPos, xxpos, yypos
	ToolTip, ahk_id %id%`nahk_class %class%`nTitle: %title%`nControl: %control%`nX Y relative: %xpos% %ypos%`nX Y Screen: %xxpos% %yypos%
}
ToolTip
Return

Buttonreload:
reload

GuiClose:
GuiEscape:
ExitApp
Amanda
Posts: 18
Joined: 16 May 2018, 11:01

Re: restringir comandos

16 Jun 2018, 11:21

Não entendo nada q o usuário garry fala, é spam??? Se alguém puder responder minha pergunta por favor vou repetir:
Tô lendo sobre janelas e encontrei divisão de janelas estou confusa o q é a classe de uma janela e como eu encontro? Achei WinGetClass e ñ entendi se deve colocar no script como comando para encontrar a classe da janela ou é apenas uma classificação, tem WinGetActiveTitle, WinGetActiveStats, WinGetPos, WinGetText eu ñ entendi. obrigada pela ultima resposta
🍀
garry
Posts: 3760
Joined: 22 Dec 2013, 12:50

Re: restringir comandos

17 Jun 2018, 09:50

@Amanda, no spam
desculpe , eu não falo português, Gio (ou outros) pode ajudar
User avatar
Gio
Posts: 1247
Joined: 30 Sep 2013, 10:54
Location: Brazil

Re: restringir comandos

18 Jun 2018, 10:38

Amanda wrote:ô lendo sobre janelas e encontrei divisão de janelas estou confusa o q é a classe de uma janela e como eu encontro? Achei WinGetClass e ñ entendi se deve colocar no script como comando para encontrar a classe da janela ou é apenas uma classificação, tem WinGetActiveTitle, WinGetActiveStats, WinGetPos, WinGetText eu ñ entendi. obrigada pela ultima resposta
Bom dia Amanda.

A classe de janela é uma das características das janelas do windows. Cada janela tem uma classe e embora duas ou mais janelas possam ter a mesma classe, se você tiver um certo controle das condições em que será rodado seu código, a classe pode ser usada relativamente bem para referir comandos a uma janela em particular.

Por exemplo, as janelas do Bloco de Notas tem a classe Notepad. Por isso, quando preciso escrever um comando que deve interagir com uma janela do Bloco de Notas e esse comando me permite indicar uma classe de janelas como forma de definir a janela alvo, eu posso escrever ahk_class Notepad. Isso não é obrigatório, é apenas uma opção: você ainda poderia ter se referido à janela pelo título, por exemplo.

O comando WinGetClass é somente um comando que permite obter a classe da janela alvo a partir do título dela, por exemplo. Ele vai ser útil se a obtenção da classe tiver de ser feita dentro do código (ou seja, se você não tiver como saber antecipadamente qual a classe da janela alvo).

:arrow: Existem formas de se obter a classe de uma janela antecipadamente. Uma delas é a seguinte:
  • 1. Execute um script do AutoHotkey que tenha uma hotkey ou Gui (de modo que ele não finalize automaticamente).
    2. Procure pelo ícone do H verde no canto inferior direito da sua tela (ou seja, na bandeja do tray). É possível que você tenha que clicar primeiro na seta para mostrar os ícones ocultos para poder ver o H verde.
    3. Clique com o botão direito do mouse nesse ícone de H verde.
    4. No menu que se abre, clique em "Window Spy". O Window Spy é uma janela com a caraterística de ser sempre visível, e ela mostra alguns dados sobre a janela e controles que você estiver interagindo. Por exemplo, se você abrir o Window Spy e depois clicar na janela do navegador, ele vai te mostrar informações sobre a janela do navegador, inclusive a classe da janela.

Return to “Ajuda e Suporte Geral”

Who is online

Users browsing this forum: No registered users and 19 guests