Abrir el archivo seleccionado en el explorador de windows en una ventana existente en un monitor determinado

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

Moderator: Flipeador

pishagwann
Posts: 5
Joined: 07 Sep 2023, 03:29

Abrir el archivo seleccionado en el explorador de windows en una ventana existente en un monitor determinado

Post by pishagwann » 07 Sep 2023, 03:45

Hola! Estoy empezando a utilizar Autohotkey y estoy bastante perdido. A ver algún alma caritativa pudiera arrojarme algo de luz.
He creado un script que abre el archivo seleccionado en el explorador de windows en una ventana ya abierta de AutoCAD. El código es el siguiente:

Code: Select all

^!q::
Send ^c ; Copia la ruta del archivo al portapapeles
if WinExist("ahk_exe acad.exe")
{
WinActivate ; Activa la ventana encontrada por WinExist.
sleep, 500 ; Espera 0,5 segundos
Send ^o ; Envía el comando abrir a AutoCAD
sleep, 500 ; Espera 0,5 segundos
SendInput %Clipboard% ; Pega la ruta del archivo desde el portapapeles
Send, {Enter} ; Presiona la tecla Enter para abrir el archivo.
}
else
{
Msgbox, AutoCAD no se está ejecutando.
}
Esto lo hace bien, pero trabajo con varios monitores, 4 concretamente, 2 son 4k y 2 son FHD. El problema que me surge es que siempre tengo 2 instancias de AutoCAD abiertas, una en cada monitor 4k, entonces me gustaría adaptar el código para que abriera el archivo en la instancia de AutoCAD del monitor que yo quiera. Un ejemplo, Ctrl+Alt+1, abriría el archivo en el AutoCAD abierto en monitor 4k de la izquierda, y Ctrl+Alt+2, en el monitor 4k de la derecha.

No sé si me he explicado bien. Muchas gracias y perdón por la turra.
pishagwann
Posts: 5
Joined: 07 Sep 2023, 03:29

Re: Abrir el archivo seleccionado en el explorador de windows en una ventana existente en un monitor determinado

Post by pishagwann » 12 Sep 2023, 01:04

Hola, gracias por contestar.
Según veo en el ejemplo que me envías, lo que hace es ejecutar el programa y luego moverlo. En mi caso, las dos instancias de AutoCAD siempre están abiertas, una en cada monitor. Lo que necesito es que abra la aplicación en la ventana de AutoCAD que yo le diga.
User avatar
ositoMalvado
Posts: 183
Joined: 24 Dec 2019, 12:02
Contact:

Re: Abrir el archivo seleccionado en el explorador de windows en una ventana existente en un monitor determinado

Post by ositoMalvado » 12 Sep 2023, 08:45

@pishagwann

Hice este código para que puedas utilizarlo tú, asegurate de entenderlo bien! Cuando uses para tu AutoCad revisa que las acciones no harána lo que deseas, lo hice en base a notepad para corroborar su función, y sí, es funcional. Saludos, espero que te sirva

Code: Select all

;
;
;	ESTE CÓDIGO PERMITE GUARDAR DOS VENTANAS EN VARIABLES
;	PARA INTERACTUAR CON ELLAS DE DIFERNTES MANERAS
;
;	EJEMPLO ! ! ! [IMPORTANTE, PRUEBALO CON DOS NOTEPAD/BLOC DE NOTAS]
;
;		EN ESTE EJEMPLO CON CTRL+F8 GUARDAREMOS EN F8 LA VENTANA ACTIVA
;		LO MISMO PARA CTRL+F9, GUARDARÁ UNA VENTNA PARA F9
;
;		UNA VEZ QUE ESTÉN ASIGNADAS LAS 2 VENTANAS CON LAS QUE TRABAJAREMOS
;		PODREMOS UTILIZAR F8 PARA IR A LA PRIMERA VENTANA Y F9 PARA IR A LA SEGUNDA
;		LUEGO DE ESO PODEMOS EJECUTAR LOS COMANDOS QUE QUERRAMOS, EN ESTE CASO
;		SE EJECUTARÁ LA FUNCIÓNA "acciones()"
;
;

global instancia_1:="" ;para guardar nuestras ventanas
global instancia_2:="" ;para guardar nuestras ventanas

Return

acciones(){ ;acciones luego de enfocar una ventana
	SendInput, Haz abierto la ventna con la tecla [%A_ThisHotkey%]
}

^F8::
	instancia_1:=obtenerID() ;CTRL+F8 para guardar el ID de la ventana
Return

F8::
	if (instancia_1 != ""){ ;si la ventana está asignada
		WinActivate, ahk_id %instancia_1% ;activar ventana
		acciones() ;llamar función acciones()
	}
Return

^F9::
	instancia_2:=obtenerID() ;CTRL+F9 para guardar el ID de la ventana
Return

F9::
	if (instancia_2 != ""){ ;si la ventana está asignada
		WinActivate, ahk_id %instancia_2% ;activar ventana
		acciones() ;llamar función acciones()
	}
Return

obtenerID(){
	WinGet, active_id, ID, A ;obtencion de id
	WinGetTitle, tit, ahk_id %active_id% ;obtencion de titulo
	ToolTip, % "Haz configurado la ventana " tit "`nTecla asignada " Trim(A_ThisHotkey, "^") ;mostramos mensaje/tooltip
	SetTimer, eliminarTT, 2500 ;timer para eliminar mensaje en 2.5 segundos
	Return active_id ;devolver id de la ventana
}

eliminarTT:
	ToolTip ;eliminar tooltip
Return
My WEB some useful stuff
Post Reply

Return to “Pedir Ayuda”