Hora final basado en hora actual

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

Moderator: Flipeador

Dsalomon
Posts: 22
Joined: 02 Mar 2021, 23:01

Hora final basado en hora actual

Post by Dsalomon » 19 Mar 2021, 17:00

Buen día nuevamente, agradezco el excelente apoyo de este grupo, últimamente he resuelto muchos problemas de mi entorno y he generado pequeñas herramientas gracias a ustedes.

Es el caso que hoy vengo nuevamente con una duda que me solucionaría algo muy intermitente, sucede que necesito hacer unas operaciones matemáticas con la fecha y un punto de partida para determinar horario: como siempre hago códigos para Media Player Classic basado en el ejemplo de la pagina oficial se me ocurrió mostrar el tiempo del archivo actual y con otros post lo pude hacer de la siguiente manera:

https://www.autohotkey.com/boards/viewtopic.php?t=41683

Code: Select all

;-///////////////////////// PARTE GRAFICA ///////////////////////////////////


ColorCualquiera := "EEAA99"  			;	Puede ser de cualquier color RGB (se hará transparente a continuación).
Gui +LastFound -Caption +ToolWindow +AlwaysOnTop 	; 	Sin interfaces de ventanas 
Gui, Color, %ColorCualquiera% 		;	Definir una variable para el color 
Gui, Font, s18 					; 	Opciones de Fuente
Gui, Add, Text, vMiTexto cLime, XXXXXXXXXXXXXXXXXXXXXX YYYYYYYYYYYYYYYYYYYYY 		;Opciones de visibilidad Variable, color, y "Texto"
WinSet, TransColor, %ColorCualquiera% 255	;	Define el color transparente
Gui, Show, x1000 y08 NoActivate		;	Define posición en pantalla


;-///////////////////////// ACTUALIZADOR DE TIEMPO  ///////////////////////////////////


SetTimer, UpdateOSD, 200   			;	Actualizar la pantalla cada 200 milesimas 
Gosub, UpdateOSD					;	
return
UpdateOSD:

;-///////////////////////// LLAMADA DE TIEMPO EN PANTALLA  ///////////////////////////////////

ControlGetText, vTiempo, Static2, ahk_class MediaPlayerClassicW	; Define la Clase Static2 o sea la barra de tiempo de MPC
WinGetActiveTitle, Titulo, ahk_class MediaPlayerClassicW

;WinGetTitle, Titulo, ahk_class MediaPlayerClassicW			; Nombre del archivo en reproducción
NombreNoExt := SubStr(Titulo,1,pos)

vPosicion := InStr(vTiempo, "/") ; Extrae el texto de izquierda o la derecha como referencia el "/"
Transcurrido := SubStr(vTiempo, 1, vPosicion-2) 
vDuracion := SubStr(vTiempo, vPosicion+2)

GuiControl,, MiTexto, Restante: %Titulo% %Transcurrido% 

;cadenaFinal := SubStr(A_NOW,13,2) - SubStr(vTiempo, 1, vPosicion-2)

;  //////////////////////////// RESTAR TIEMPO TRANSCURRIDO - HORA ACTUAL

bueno en si lo que quiero es saber en tiempo real el la hora en que termina lo que esta en reproducción


intente con esto:

Code: Select all

HoraActual = 
EnvDiv, horario, (HoraActual - Transcurrido)

;pero no devuelve nada


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

Re: Hora final basado en hora actual

Post by sofista » 19 Mar 2021, 18:48

Si suponemos que aún faltan emitir 55 minutos, siendo ahora las 20:48, la emisión termina a las

Code: Select all

HoraActual := ""
HoraActual += 55, Min
FormatTime, termina, %HoraActual%, HH:mm
MsgBox, % termina

;Output:

;21:43

Dsalomon
Posts: 22
Joined: 02 Mar 2021, 23:01

Re: Hora final basado en hora actual

Post by Dsalomon » 19 Mar 2021, 20:43

@sofista

Esto es lo que quiero restar

Code: Select all

Transcurrido := SubStr(vTiempo, 1, vPosicion-2) 


Probe el codifo pero devuelve la hora del sistema

Code: Select all

ControlGetText, vTiempo, Static2, ahk_class MediaPlayerClassicW	; Define la Clase Static2 o sea la barra de tiempo de MPC
WinGetTitle, Titulo, ahk_class MediaPlayerClassicW			; Define el Titulo de la ventana


vPosicion := InStr(vTiempo, "/") ; Extrae el texto de izquierda o la derecha como referencia el "/"
Transcurrido := SubStr(vTiempo, 1, vPosicion-2) 
vDuracion := SubStr(vTiempo, vPosicion+2)


HoraActual := ""
HoraActual += Transcurrido, hh
FormatTime, termina, %HoraActual%, HH:mm
;MsgBox, % termina


GuiControl,, MiTexto, %Titulo% Restante:  %termina%

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

Re: Hora final basado en hora actual

Post by sofista » 20 Mar 2021, 09:36

A ver si esto te ayuda. No dispongo del programa en cuestión, así que propongo dos valores cualesquiera de inicio. Supongamos una emisión de dos horas de las cuales ya transcurrió una hora, por lo tanto, resta 1 hora de emisión:

Code: Select all

transcurrido := 1 ; 1 hora
duracion     := 2 ; 2 horas
restante     := duracion - transcurrido

HoraActual := A_Now
HoraActual += restante, hours
FormatTime, termina, %HoraActual%, HH:mm
MsgBox, % termina ; horario de finalización -> 12:36
Doy por supuesto que el cálculo se realiza a partir de la hora actual, establecido por la variable A_Now, que depende del formato de hora que tenga el sistema. Si la hora es arbitraria, entonces habría que asignársela a la variable HoraActual o el nombre que quieras darle, respetando el formato de A_Now.

Post Reply

Return to “Pedir Ayuda”