Duda modificar tamaño Msgbox. Topic is solved

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

Moderator: Flipeador

chusski
Posts: 31
Joined: 28 Jan 2018, 03:12

Duda modificar tamaño Msgbox.

07 Apr 2018, 07:28

Buenas.
Alguno me sabría decir que necesito añadir para poder cambiar el tamaño del msgbox?

Muchas gracias.

Code: Select all

waitsecs := 10
OnMessage(0x44, "OnMsgBox")
SetTimer, updMsgBox, 1000
MsgBox 0x40023, Menu, PRUEBA1`nPRUEBA2, % waitsecs

IfMsgBox Yes, {
	StopTimer()
	MsgBox Go
} Else IfMsgBox No, {
	StopTimer()
	MsgBox Restart
} Else IfMsgBox Cancel, {
	StopTimer()
	MsgBox Nº Incidencia
} Else IfMsgBox Timeout, {
	StopTimer()
	MsgBox Exited for Timeout
}
ExitApp

StopTimer(){
	SetTimer, updMsgBox, off
	OnMessage(0x44, "OnMsgBox", 0)
}

OnMsgBox() {
	global waitsecs
    DetectHiddenWindows, On
    Process, Exist
    If (WinExist("ahk_class #32770 ahk_pid " . ErrorLevel)) {
        FormatTime, timx, ,dd-MM-yyyy HH:mm:ss
        ControlSetText Static2, % "Fecha: "timx "`nCountDwon: " --waitsecs
        ControlSetText Button1, +1 MIN
        ControlMove, +1 MIN, 10, , 60
        ControlSetText Button2, RESTART
        ControlMove, RESTART, 70, , 60
        ControlSetText Button3, Nº Incidencia
        ControlMove, Nº Incidencia, 130, , 80	
    }
}

updMsgBox:
	OnMsgBox() 
return
User avatar
Flipeador
Posts: 1204
Joined: 15 Nov 2014, 21:31
Location: Argentina
Contact:

Re: Duda modificar tamaño Msgbox.  Topic is solved

07 Apr 2018, 07:40

Hola, ¿quieres cambiar el tamaño de la ventana que muestra el mensaje? ¿Que utilidad tiene esto?
Si quieres un diálogo más completo te recomiendo utilizar TaskDialogIndirect. Tengo un tema aquí, o sino puedes utilizar MagicBox.
Para cambiar el tamaño puedes utilizar el comando WinMove, por ejemplo WinMove,,,,, 500, 500.
:wave:
chusski
Posts: 31
Joined: 28 Jan 2018, 03:12

Re: Duda modificar tamaño Msgbox.

07 Apr 2018, 08:14

Con el comando Winmove me ha funcionado perfecto muchas gracias.
La utilidad es que necesito que ocupe poco para que no me tape otras cosas.
Estoy haciendo un mensaje que depende del botón que le des, le de una ordenes o otras a una macro del pulover macro. El msgbox lo he creado con el magic. No se programar, así que voy aprendiendo sobre la marcha, entre las ayudas vuestra, tutoriales y tal... Pero me cuesta lo mio XD

-La idea es que tenga un contador de 5 min, y si le doy al botón de +1 min se lo sume al contador, por que cuando acabe el contador se reiniciara al macro del pulover. (esto aun no se como hacerlo).

-Si le das al botón de Restart o se acaba el tiempo del contador, reinicie la macro del pulover. (esto lo haré metiendo una palabra en el clipboard o algo así)

-Si le das al botón de de Nº de incidencia, te abre otro dialogo en el que pones un numero y te lo busca en un excel.(esto lo haré metiendo una palabra en el clipboard o algo así)

Code: Select all

waitsecs := 10
OnMessage(0x44, "OnMsgBox")
SetTimer, updMsgBox, 1000
MsgBox 0x40023, Menu, PRUEBA1`nPRUEBA2, % waitsecs

IfMsgBox Yes, {
	StopTimer()
	MsgBox Go
} Else IfMsgBox No, {
	StopTimer()
	MsgBox Restart
} Else IfMsgBox Cancel, {
	StopTimer()
	MsgBox Nº Incidencia
} Else IfMsgBox Timeout, {
	StopTimer()
	MsgBox Exited for Timeout
}
ExitApp

StopTimer(){
	SetTimer, updMsgBox, off
	OnMessage(0x44, "OnMsgBox", 0)
}

OnMsgBox() {
	global waitsecs
    DetectHiddenWindows, On
    Process, Exist
    If (WinExist("ahk_class #32770 ahk_pid " . ErrorLevel)) {
	winMove,,,,, 215,155
        FormatTime, timx, ,dd-MM-yyyy HH:mm:ss
        ControlSetText Static2, % "Fecha: "timx "`nCountDwon: " --waitsecs
        ControlSetText Button1, +1 MIN
        ControlMove, +1 MIN, 10, , 60
        ControlSetText Button2, RESTART
        ControlMove, RESTART, 70, , 60
        ControlSetText Button3, Nº Incidencia
        ControlMove, Nº Incidencia, 130, , 80	
    }
}

updMsgBox:
	OnMsgBox() 
return
User avatar
Flipeador
Posts: 1204
Joined: 15 Nov 2014, 21:31
Location: Argentina
Contact:

Re: Duda modificar tamaño Msgbox.

07 Apr 2018, 08:47

Sería interesante ver tu Script completo o información mas detallada de lo que intentas hacer, parece que estas queriendo darle un uso incorrecto a MsgBox. MsgBox es para mostrar simples mensajes de confirmación al usuario sobre una determinada acción (o también muy utilizado para depurar tu Script), tal vez lo correcto sería que crees tu propia ventana GUI. Obviamente vas a tener que leer mucho, no es fácil al principio, sobre todo lo confuso que resulta la versión 1 de AHK. Si tienes pensado comenzar a leer y aprender en profundidad, te recomiendo mires la versión 2; no te va a servir el Macro Creator de pulover pero tus Script van a resultar más fiables y optimizados si no dependes de una aplicación externa, además conocerás que hace exactamente tu Script y como funciona, permitiendote detectar errores o actualizar tu código más fácilmente. Dejar que otro programa haga tus Script (programe por ti) tal vez sea aceptable si solo pretendes utilizar AHK para realizar simples re-asignaciones y no te interesa aprender nada en especial, ya sea porque no tienes tiempo o simplemente no te interesa.
chusski
Posts: 31
Joined: 28 Jan 2018, 03:12

Re: Duda modificar tamaño Msgbox.

07 Apr 2018, 10:05

Perdona, como le he dado a soluciones aceptada, he penado que ya no se seguía este.

El Pulover lo uso para abrir una web descargarme unas listas del curro de manera automática, y cada 5 min la cierra y la vuelve a descarga, es la única manera de tener las listas actualizadas continuamente, royo mímica. Sin tener que estar haciéndolo a mano. Una vez se lo baja lanza una macro en en vba dentro del excel para ordenarlas y tal...
Una vez se ha bajado la lista, y excel la ha ordenado, salta el mgsbox para darme una opciones rapidas, tipo cerrar lista y volver a abrirla (reinicia la macro del pulover), aumentar el contador de reinicio por si solo del pulover (+1 min), o buscar un numero concreto de la lista en la web de donde me las bajo.

Osea que uso el pulover a modo mímica, que va buscando imágenes y clicando para bajarse las listas, el vba dentro del excel para ordenar y colorear, y los script de ahk para hacer acciones que el pulover se queda corto.

Lo gracioso es que todo esto lo hago por que yo trabajo controlando estas lista, y el programa que las genera no funciona en los móviles, por lo tanto tuve que hacer el invento para poder ver y controlarlo todo a trabes del móvil con el Teamwier, dado que estoy mucho tiempo fuera de la oficina.

Seguramente, tengas razón que no estoy dándole el uso que debiera, pero con los conocimientos que tengo trato de ser imaginativo... XD
Antes tenia que volver cada poco a la oficia a revisar las listas... ahora los compañeros están super agradecidos con el invento este XD.

A ver si consigo hacer, que el botón de +1 Min, me sume 60 segundos al contador sin cerrar el msgbox, y con eso voy tirando.
User avatar
Flipeador
Posts: 1204
Joined: 15 Nov 2014, 21:31
Location: Argentina
Contact:

Re: Duda modificar tamaño Msgbox.

07 Apr 2018, 10:28

Como te he dicho, lo mejor es crear una ventana GUI. Pero si no te quieres complicar la vida, puedes quitar el botón +1 MIN y asignarle la acción a una tecla de acceso rápido que tu definas. Por ejemplo (presiona F1 para añadir 1 minuto):

Code: Select all

waitsecs := 10
OnMessage(0x44, "OnMsgBox")
SetTimer, updMsgBox, 1000
MsgBox 0x40023, Menu, PRUEBA1`nPRUEBA2

IfMsgBox Yes, {
    StopTimer()
    MsgBox Exited for Timeout
} Else IfMsgBox No, {
    StopTimer()
    MsgBox Restart
} Else IfMsgBox Cancel, {
    StopTimer()
    MsgBox Nº Incidencia
}
ExitApp

StopTimer(){
    SetTimer, updMsgBox, off
    OnMessage(0x44, "OnMsgBox", 0)
}

OnMsgBox() {
    global waitsecs
    DetectHiddenWindows On
    Process Exist
    If (WinExist("ahk_class #32770 ahk_pid " . ErrorLevel)) {
        If (waitsecs < 1)
        {
            ControlClick Button1
            Return
        }
        winMove ,,,,, 215,155
        FormatTime timx, ,dd-MM-yyyy HH:mm:ss
        ControlSetText Static2, % "Fecha: "timx "`nCountDwon: " --waitsecs
        ControlSetText Button1, Close Timeout
        ControlMove Button1, -100, , 60
        ControlSetText Button2, RESTART
        ControlMove RESTART, 70, , 60
        ControlSetText Button3, Nº Incidencia
        ControlMove Nº Incidencia, 130, , 80   
    }
}

updMsgBox:
    OnMsgBox() 
return

F1:: waitsecs += 60
chusski
Posts: 31
Joined: 28 Jan 2018, 03:12

Re: Duda modificar tamaño Msgbox.

07 Apr 2018, 10:33

Estoy probando esto que me dices del GUI, he clonado la venta esta, voy a mirar si me aclaro...
chusski
Posts: 31
Joined: 28 Jan 2018, 03:12

Re: Duda modificar tamaño Msgbox.

07 Apr 2018, 11:06

Uff a volver a empezar... XD bueno a ver si entre hoy y mñn voy entendiendo y lo puedo terminar.

Code: Select all

; Generated by AutoGUI 2.2.5a
#NoEnv
#SingleInstance Force
Gosub,currentTime
Gosub,guiupdator
SetTimer,currentTime,500
SetWorkingDir %A_ScriptDir%



Gui Add, Button, x7 y96 w60 h26, +1MIN
Gui Add, Button, x67 y96 w60 h26, RESTART
Gui Add, Button, x127 y96 w80 h26, Incidencia
Gui Add, Picture, x9 y9 w32 h32 0x6 +Border
Gui Add, Text, x7 y55 w231 h32, Fecha: Time `nCountDown: 6
Gui Add, Progress, x82 y70 w123 h13 -Smooth, 100
Gui, Add, Text, x40 y10 w70 h20 vsimpletime, Time
Gui Show, w209 h127, Menu

currentTime:
FormatTime,Time,T12,hh:mm:ss
Gosub,guiupdator
Return

guiupdator:
GuiControl, text, simpletime , %Time%
return

Button+1MIN:

Return

ButtonRESTART:

Return

ButtonIncidencia:

Return


GuiEscape:
GuiClose:
    ExitApp
User avatar
Flipeador
Posts: 1204
Joined: 15 Nov 2014, 21:31
Location: Argentina
Contact:

Re: Duda modificar tamaño Msgbox.

07 Apr 2018, 11:29

Hola, te invito a que leas este tema, donde aconsejo un editor muy bueno y doy algunas buenas prácticas de programación, para que tengas en cuenta. También si te interesa AHK, dale una oportunidad a la nueva versión 2, en mi firma tienes el enlace, incluye la documentación.
Voy a estar viendo el tema del GUI, cuando lo tenga te paso el código en un nuevo comentario.
User avatar
Flipeador
Posts: 1204
Joined: 15 Nov 2014, 21:31
Location: Argentina
Contact:

Re: Duda modificar tamaño Msgbox.

07 Apr 2018, 14:24

Code: Select all

Title := "Menu || AHK"
Timeout := 10

Gui Add, Button, x7 y96 w60 h26 g1min, +1MIN
Gui Add, Button, x67 y96 w60 h26 grestart, RESTART
Gui Add, Button, x127 y96 w80 h26 ginc, Incidencia
Gui Add, Picture, x9 y9 w32 h32 0x6 +Border Icon1, explorer.exe
Gui Add, Progress, x82 y70 w123 h13 -Smooth, 100
Gui Add, Text, x50 y10 w231 h40 vsimpletime, Time
Gui Show, w209 h127, % Title
SetTimer chk, 1000
Return

chk:
FormatTime Time, T12, hh:mm:ss
GuiControl text, simpletime , Fecha: %Time%`nCountDown: %Timeout%
ToolTip % Timeout
If (Timeout-- < 1)
{
    SetTimer chk, Off
    Goto Timeout
}
Return

1min:
Timeout += 60
Return

Timeout:
inc:
restart:
SetTimer chk, Off
MsgBox % A_ThisLabel
ExitApp

GuiEscape:
GuiClose:
ExitApp
chusski
Posts: 31
Joined: 28 Jan 2018, 03:12

Re: Duda modificar tamaño Msgbox.

08 Apr 2018, 00:54

Muchas gracias tío eres un maquina.

Me he bajado el Sublime text 3, y he seguido la guia. Pero no veo donde esta el Run o debuggin para probar. :(
Con este ultimo código que me has pasado, estoy tratando de que la barra de progreso le siga el royo al timeout, que a medida que baja el tiempo vaya subiendo, pero si le das al +1 min, baje otra vez a lo que toca pero no le pillo el royo. Imagino que es asignado una variable...
Luego al lanza el script primero sale en blanco todo y pone Time a secas y luego carga el resto, tampoco consigo ver el problema. :(

Gracias por tu ayuda y paciencia^^
User avatar
Flipeador
Posts: 1204
Joined: 15 Nov 2014, 21:31
Location: Argentina
Contact:

Re: Duda modificar tamaño Msgbox.

08 Apr 2018, 05:43

Pero no veo donde esta el Run o debuggin para probar.
¿A que te refieres?
estoy tratando de que la barra de progreso le siga el royo al timeout

Code: Select all

Title := "Menu || AHK"
Timeout := 10
Percentage := 100
Step := 100.0 / Timeout 

Gui Add, Button, x7 y96 w60 h26 g1min, +1MIN
Gui Add, Button, x67 y96 w60 h26 grestart, RESTART
Gui Add, Button, x127 y96 w80 h26 ginc, Incidencia
Gui Add, Picture, x9 y9 w32 h32 0x6 +Border Icon1, explorer.exe
Gui Add, Progress, x50 y70 w145 h13 -Smooth vprog Range0-100, 100
FormatTime Time, T12, hh:mm:ss
Gui Add, Text, x50 y10 w145 h40 vsimpletime, Fecha: %Time%`nCountDown: %Timeout%
Gui Show, w209 h127, % Title
SetTimer chk, 1000
Return

chk:
--Timeout, Percentage -= Step
FormatTime Time, T12, hh:mm:ss
GuiControl ,, simpletime , Fecha: %Time%`nCountDown: %Timeout%
GuiControl ,, prog , % Percentage
If (Timeout < 1)
{
    SetTimer chk, Off
    Goto Timeout
}
Return

1min:
Timeout += 60
Percentage := 100
Step := 100.0 / Timeout
Return

Timeout:
inc:
restart:
SetTimer chk, Off
MsgBox % A_ThisLabel
ExitApp

GuiEscape:
GuiClose:
ExitApp
chusski
Posts: 31
Joined: 28 Jan 2018, 03:12

Re: Duda modificar tamaño Msgbox.

08 Apr 2018, 11:32

Muchas gracias tio.

Me refiero al boton tipico, para ejecutar el script, y probarlo desde el programa.
User avatar
Flipeador
Posts: 1204
Joined: 15 Nov 2014, 21:31
Location: Argentina
Contact:

Re: Duda modificar tamaño Msgbox.

08 Apr 2018, 11:54

Me refiero al boton tipico, para ejecutar el script, y probarlo desde el programa.
Bueno... eso se puede hacer, pero hay que "programarlo" y añadirlo a la sintaxis de AutoHotkey, creo que utiliza el lenguaje Python para eso. Sinceramente no lo implementé porque no tengo idea como, cuando tenga tiempo (y ganas) me pondré a ello; voy a tener que tomar como ejemplo otras sintaxis.
De todas formas, yo utilizo una combinación de teclas (RSHIFT+E para 64-bit y RHISFT+R para 32-bit) para ejecutar el texto seleccionado como un Script de AHK, entonces puedo probar el código directamente del navegador (o cualquier lado) sin necesidad de crear un archivo. Muy útil.
Aquí tengo una función para ejecutar texto en AHK. Pero es para AHKv2.

Return to “Pedir Ayuda”

Who is online

Users browsing this forum: No registered users and 13 guests