Extraer parte del titulo de una ventana este donde esté

Esta sección es para preguntas sobre programación/scripting usando AutoHotkey.

Moderator: Flipeador

Nucleorion
Posts: 50
Joined: 11 Dec 2016, 11:33

Extraer parte del titulo de una ventana este donde esté

Post by Nucleorion » 07 Mar 2021, 16:30

Después de solucionarlo cuando la palabra está al principio en el post: https://www.autohotkey.com/boards/viewtopic.php?f=40&t=82709&p=361927#p361927

Resulta que Movistar y Discovery empiezan los títulos con el nombre de la serie o visionado, por ejemplo ¿Qué pasó después? | discovery+ y 16 páginas más - Perfil 1: Microsoft​ Edge

Estoy intentando con RegEx y no veo que hago mal segun la documentación. Algo será, por que no me funciona.

Code: Select all

SetTitleMatchMode, RegEx
;#IfWinActive, *discovery*
#IfWinActive, .*discovery.*
Browser_Search::
CoordMode, Mouse, Screen
Click, 450, 800
return
Según la documentación poniendo SetTitleMatchMode en 2 debería también buscar la palabra en cualquier sitio pero solo la busca al principio
sofista
Posts: 650
Joined: 24 Feb 2020, 13:59
Location: Buenos Aires

Re: Extraer parte del titulo de una ventana este donde esté

Post by sofista » 07 Mar 2021, 18:18

El siguiente código funciona correctamente —es decir, muestra dos cuadros de diálogo—, tanto con la opción 2 como con RegEx, sugiero que los tomes como ejemplos y/o que los compares con tu script:

Code: Select all

SetTitleMatchMode, 2

data=¿Qué pasó después? | discovery+ y 16 páginas más - Perfil 1: Microsoft​ Edge

Gui, show, w200 h200, myGui
WinSetTitle, myGui,, % data

IfWinActive discovery
	MsgBox, Está activa!
IfWinExist discovery
	MsgBox, Existe!
En el siguiente ejemplo agregué la opción i) a la expresión regular para hallar el término tanto si está en minúsculas como en mayúsculas:

Code: Select all

SetTitleMatchMode, RegEx

data=¿Qué pasó después? | discovery+ y 16 páginas más - Perfil 1: Microsoft​ Edge

Gui, show, w200 h200, myGui
WinSetTitle, myGui,, % data

IfWinActive i).*discovery.*
	MsgBox, Está activa!
IfWinExist i).*discovery.*
	MsgBox, Existe!
Espero que te ayuden a resolver el problema.
Nucleorion
Posts: 50
Joined: 11 Dec 2016, 11:33

Re: Extraer parte del titulo de una ventana este donde esté

Post by Nucleorion » 08 Mar 2021, 10:29

Quizas deba capturar el titulo de ventana para mostrarlo en pantalla en tiempo de ejecucion. ¿Como puedo hacer eso? Ya que lo que pones es justo lo que pruebo, pero capturando el titulo de la ventana, claro, no asignandoselo.

Yo el titulo lo compruebo con Window Spy del menu derecho. Y sale que la ventana tiene el titulo que pongo en el mensaje, pero luego no funciona. No se si alguien lo puede probar con el titulo del navegador edge basado en chromium teniendo varias pestañas abiertas.
Nucleorion
Posts: 50
Joined: 11 Dec 2016, 11:33

Re: Extraer parte del titulo de una ventana este donde esté

Post by Nucleorion » 09 Mar 2021, 11:01

Tengo mas bloques de codigo antes del SetTitleMatchMode, RegEx Si borro todo funciona, voy borrando de bloque en bloque hasta que llego al primero, cuando borro el primero funciona, dejo todo lo demas menos el primero y no funciona, y asi. Osea que no doy con el bloque o linea que está interfiriendo o es la combinacion de todas.

Lo que si me ha funcionado es mover todo el codigo referente al navegador a otro archivo y ejecutarlo por separado. Ahora parece que todo funciona pero me gustaria saber que estaba interfiriendo. ¿Se puede combinar SetTitleMatchMode, RegEx con cualquier otro codigo? ¿Tiene que estar al principio, o tiene algun otro requisito?

Este es el codigo que tenia delante del settitle

Code: Select all

#SingleInstance force
Menu, TRAY, Icon, D:\Configs\AutoHotKeys\iconos\Letter-S.ico

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Presionando los siguientes atajos convierte el texto seleccionado. Ej tEXTo sEL 
;; Ctrl+Mays+i: _Texto sel_ 
;; Ctrl+Mays+a: TEXTO SEL  	(Upercase)
;; Ctrl+Mays+s: texto sel  	(Lowercase)
;; Ctrl+Mays+d: Texto Sel	(Title)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
^+i::
^+a::
^+s::
^+d::
gosub rutina
if (!ErrorLevel)
{
    Clipboard := A_ThisHotkey == "^+i" ? "_" . Clipboard . "_"
               : A_ThisHotkey == "^+a" ? Format("{:U}", Clipboard)
               : A_ThisHotkey == "^+s" ? Format("{:L}", Clipboard)
               : A_ThisHotkey == "^+d" ? Format("{:T}", Clipboard) : ""
    SendInput ^v
}
return

rutina:
ClipSaved := ClipboardAll
Clipboard := ""
SendInput ^c
ClipWait 2
if (ErrorLevel)
    Clipboard := ClipSaved
return





;;;;;;;;;;;;;;;;;;KEYS;;;;;;;;;;;;;;;;;;;;
AppsKey::mouseclick, middle
;~ AppsKey::
;~ CoordMode, Mouse, Screen
;~ Click, 40, 1050
;~ MouseMove, 40, 900
;~ return

Media_Prev::Send,{rcontrol down}{c}{rcontrol up}
Media_Next::Send,{rcontrol down}{v}{rcontrol up}
;Media_Next::Send,^{v} 
Media_Play_Pause::Control
Launch_Mail::Esc
;Launch_Mail::Send{Esc}
Browser_Search::Send,{alt down}{enter}{alt up}
;Browser_Home::WinMaximize, A

PgUp::send {WheelUp 1}
PgDn::send {WheelDown 1}



;;;; Escribe la fecha y hora actual para documentos al pulsar F1
!1::
FormatTime, CurrentDateTime,, yyyy-MM-dd  HH:mm:ss  
;FormatTime, CurrentDateTime,, yyyy-MM-dd__HH-mm-ss__
SendInput %CurrentDateTime%
Return

;;; Escribe la fecha y hora actual para nombres de archivo
!2::
FormatTime, CurrentDateTime,, yyyy-MM-dd__HH-mm-ss__
SendInput %CurrentDateTime%
Return

;;;; Escribe la direccion de correo electronico al pulsar la tecla configurada
!3::Send [email protected]
!4::Send [email protected]
!5::Send [email protected]

;;;;;;;;;;;;;;;;;;;;;;;;;;;; Explorador de archivos ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
#IfWinActive, ahk_exe explorer.exe
!q::send {F2}{Home}{rcontrol down}{v}{rcontrol up}{Space}{c}{Space}{Left}{Left}{Left}



;;;;;;;;;;;;;;;;;;;;;;;;;;;; avidemux ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
#IfWinActive, ahk_exe avidemux.exe
PgUp::send {rcontrol down}{PGUP}{rcontrol up}
PgDn::send {rcontrol down}{PGDN}{rcontrol up}
Home::PgUp
End::PgDn
'::Home
¡::End
,::send {rcontrol down}{Down}{rcontrol up}
.::send {rcontrol down}{Up}{rcontrol up}
return


;;;;;;;;;;;;;;;;;;;;;;;;;;; Zoom Player ;;;;;;;;;;;;;;;;;;;;;;;;;;
#IfWinActive, Monopoly Online – Online Juego | CoolJuegos.com - Opera
Media_Play_Pause::
CoordMode, Mouse, Screen
Click, 757, 500
return

AppsKey::
CoordMode, Mouse, Screen
Click, 505, 742
return

Browser_Search::
CoordMode, Mouse, Screen
Click, 650, 742
return

Browser_Home::
CoordMode, Mouse, Screen
Click, 800, 742
return

;~ Sleep, 100
;~ MouseMove, 69, 750

return

;;;;;;;;;;;;;;;;;;;;;;;;;;; Zoom Player ;;;;;;;;;;;;;;;;;;;;;;;;;;
#IfWinActive, Zoom Player
;Media_Play_Pause::Send,{Enter}
Media_Play_Pause::Media_Play_Pause
Tab::
Send,{right}
Sleep,100
Send,{enter}
return
Launch_Media::Send,{alt down}{h}{alt up}

;Mute  (Propio del mando)
Media_Prev::Send,{h} 
;Media_Next::mouseclick, middle
Media_Next::Send, f ;Avance rapido

;LaunchMail::Esc  (Este es global)
;Menu clic derecho  (Propio del mando)
;Browser_Search::Send,{alt down}{Enter}{alt up}  (Este es global)
Browser_Home::Send, g ;Avance mas rapido


;Este codigo lo cree para aumentar la pantalla cuando la dividen para la publicidad
1::Send,{1}{m}
2::Send,{2}{m}


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
#IfWinActive, ahk_exe gta5.exe
return

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
#IfWinActive, Grand Theft Auto V
^w:: send {w down}
^j:: send {w up}
^e:: send {w down}{LShift down}
^r:: send {w up}{LShift up}

^LButton::l
^a::left
^d::Right

return
sofista
Posts: 650
Joined: 24 Feb 2020, 13:59
Location: Buenos Aires

Re: Extraer parte del titulo de una ventana este donde esté

Post by sofista » 09 Mar 2021, 14:13

No es forzoso colocar el SetTiteMatchMode en la sección autoejecutable, dependerá de lo que quieras hacer. En este ejemplo —casi el mismo de mi post anterior—, se muestra el primer cuadro de diálogo pero no el segundo, porque cambié el SetTiteMatchMode. Si comentás SetTitleMatchMode, 1 se muestran los dos cuadros de diálogo:

Code: Select all

#SingleInstance force
SetTitleMatchMode, RegEx

data=¿Qué pasó después? | discovery+ y 16 páginas más - Perfil 1: Microsoft​ Edge

Gui, show, w200 h200, myGui
WinSetTitle, myGui,, % data

IfWinActive i).*discovery.*
	MsgBox, Está activa!

SetTitleMatchMode, 1
IfWinExist discovery
	MsgBox, Existe!
Sin embargo, no me sorprendería que tanta directiva #IfWinActive pueda causar alguna interferencia. Otra manera de conseguir hotkeys contextuales es la siguiente:

Code: Select all

#If WinActive("ahk_exe notepad++.exe")
q::MsgBox Notepad++ is active
Estos no deberían causar ningún problema.
Nucleorion
Posts: 50
Joined: 11 Dec 2016, 11:33

Re: Extraer parte del titulo de una ventana este donde esté

Post by Nucleorion » 10 Mar 2021, 07:03

Okey, Asi que se mantiene el SetTiteMatchMode ajustado hasta que se ajuste de otro modo. El caso es que borraba todas las lineas anteriores menos las del primer bloque, en el que no hay nada relaccionado, y seguia sin funcionar hasta que borraba todas las anteriores. Las posteriores con un monton de ifwinexists y SetTiteMatchModes podia dejarlas sin problema. En fin.

Me anoto esa segunda forma :D

Muchisimas gracias!!
sofista
Posts: 650
Joined: 24 Feb 2020, 13:59
Location: Buenos Aires

Re: Extraer parte del titulo de una ventana este donde esté

Post by sofista » 10 Mar 2021, 08:34

De nada, me alegra haber sido de ayuda :)
Post Reply

Return to “Pedir Ayuda”