restringir comandos

Post a reply


In an effort to prevent automatic submissions, we require that you complete the following challenge.
Smilies
:D :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :| :mrgreen: :geek: :ugeek: :arrow: :angel: :clap: :crazy: :eh: :lolno: :problem: :shh: :shifty: :sick: :silent: :think: :thumbup: :thumbdown: :salute: :wave: :wtf: :yawn: :facepalm: :bravo: :dance: :beard: :morebeard: :xmas: :HeHe: :trollface: :cookie: :rainbow: :monkeysee: :monkeysay: :happybday: :headwall: :offtopic: :superhappy: :terms: :beer:
View more smilies

BBCode is ON
[img] is OFF
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: restringir comandos

Re: restringir comandos

Post by Gio » 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.

Re: restringir comandos

Post by garry » 17 Jun 2018, 09:50

@Amanda, no spam
desculpe , eu não falo português, Gio (ou outros) pode ajudar

Re: restringir comandos

Post by Amanda » 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

Re: restringir comandos

Post by garry » 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

Re: restringir comandos

Post by Amanda » 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

Re: restringir comandos

Post by garry » 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

Re: restringir comandos

Post by Gio » 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:

restringir comandos

Post by Amanda » 11 Jun 2018, 18:56

Oi dá para deixar a ahk funcionar apenas em um software?

Top