Hola, apenas soy nuevo en el foro, hago una duda en general, ya que no se donde meter esta duda :huh:.
Mi duda: Puedo añadir una imagen a una ventana de error hecha en un archivo . vbs?
el programa que use es este:
===============================
lol=msgbox("ERROR",16,"Error")
===============================
La cual tiene un pequeño icono a la izq y me gustaria cambiarlo, pero aun asi, puedo cambiar todo, me refiero en vez de poner error en el texto, poner una imagen y que solo se vea esa imagen en plan "!" o algo asi.
Puedo prescindir de ello?? y cambiar la imagen de la ventana de error de windows???
esa que aparece cuando algo va mal xDD, Podria??
se puede cambiar la ventana de windows y poner una imagen el el codigo vbs que he mostrado (o otro)????? :huh: :huh:
Gracias!!! ;-) ;-) ;-) ;-)
Asi?
Option Explicit
Dim objFSO : Set objFSO = CreateObject("Scripting.FileSystemObject")
Dim objSHL : Set objSHL = CreateObject("Wscript.Shell")
Dim tempFolder : Set tempFolder = objFSO.GetSpecialFolder(2)
Dim tempFile : tempFile = objFSO.GetTempName() & ".hta"
With tempFolder.CreateTextFile(tempFile)
.WriteLine "<html><HTA:APPLICATION SysMenu=""no"" Scroll=""no"" Border=""dialog"">" & _
"<head> <title>Hola</title>" & _
"<script type=""text/javascript""> window.resizeTo(350,260); window.moveTo((screen.width - 350) / 2, (screen.height - 260) / 2);</script>" & _
"</head><body style=""background-color:ededed;""> " & _
"<p align=""center"">" & _
"<img src=""data:image/jpeg;base64,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"">" & _
"!<BR><button type=""button"" onclick=""window.open('', '_self', ''); window.close();"">Aceptar</button>" & _
"</p>" & _
"</body></html>"
.Close
End With
objSHL.Run tempFolder & "\" & tempFile, 1, True
objFSO.DeleteFile tempFolder & "\" & tempFile
En serio creo que quieres esto:
CitarVBA MsgBox: vbCritical
Please find the following code and output. When we click Ok button, It will return value 1 as a output. And, It will display critical Message Icon.
Code:
Sub MessageBox_vbCritical()
'Variable Declaration
Dim OutPut As Integer
'Example of vbCritical
OutPut = MsgBox("Please enter valid Number!", vbCritical, "Example of vbCritical")
End Sub
Output:
(https://mk0analysistabsx3rvl.kinstacdn.com/wp/wp-content/uploads/2013/08/Msgbox-vbCritical.png)
VBA MsgBox in Excel VBA
Top
VBA MsgBox: vbQuestion
Please find the following code and output.When we click Ok button, It will return value 1 as a output. And, It will display Warning Query icon.
Code:
Sub MessageBox_vbQuestion()
'Variable Declaration
Dim OutPut As Integer
'Example of vbQuestion
OutPut = MsgBox("Are you fresher?", vbQuestion, "Example of vbQuestion")
End Sub
Output:
(https://mk0analysistabsx3rvl.kinstacdn.com/wp/wp-content/uploads/2013/08/Msgbox-vbQuestion.png)
VBA MsgBox in Excel VBA
Top
VBA MsgBox: vbExclamation
Please find the following code and output.When we click Ok button, It will return value 1 as a output. And, It will display Warning Message icon.
Code:
Sub MessageBox_vbExclamation()
'Variable Declaration
Dim OutPut As Integer
'Example of vbExclamation
OutPut = MsgBox("Input Data is not valid!", vbExclamation, "Example of vbExclamation")
End Sub
Output:
(https://mk0analysistabsx3rvl.kinstacdn.com/wp/wp-content/uploads/2013/08/Msgbox-vbExclamation.png)
VBA MsgBox in Excel VBA
Top
VBA MsgBox: vbInformation
Please find the following code and output.When we click Ok button, It will return value 1 as a output. And, It will display Information Message icon.
Code:
Sub MessageBox_vbInformation()
'Variable Declaration
Dim OutPut As Integer
'Example of vbInformation
OutPut = MsgBox("Succesessfully Completed the Task.", vbInformation, "Example of vbInformation")
End Sub
Output:
(https://mk0analysistabsx3rvl.kinstacdn.com/wp/wp-content/uploads/2013/08/Msgbox-vbINformation-300x168.png)
VBA MsgBox in Excel VBA
Fuente: https://analysistabs.com/vba/msgbox/ (https://analysistabs.com/vba/msgbox/)
En VBS necesitaras el valor de las variables vbInformation, los dejo aquí:
vbCritical 16 Muestra el icono Mensaje crítico.
vbQuestion 32 Muestra el icono Consulta de advertencia.
vbExclamation 48 Muestra el icono Mensaje de advertencia.
vbInformation 64 Muestra el icono Mensaje de información.
Cita de: FurioMoltisanti en 10 Abril 2018, 16:58 PM
En serio creo que quieres esto:
Más bien lo que pretende hacer es esto:
(https://i.imgur.com/bbhq89K.jpg)
Cita de: AnonimoAnon en 5 Abril 2018, 18:02 PMMi duda: Puedo añadir una imagen a una ventana de error hecha en un archivo . vbs?
(...)
cambiar la imagen de la ventana de error de windows???
No, no es posible hacer eso que pides mediante un lenguaje de scripting limitado como es VBS. Para ello necesitarías usar la API de Windows, y no puedes usar la API
directamente en VBS (primero tendrías que desarrollar una librería COM en la que hayas implementado el algoritmo que haga uso de la API de Windows, y entonces en tu código de VBS instanciar el objeto COM).
Mediante las funciones de enumeración de ventanas en la API de Windows (ej.
EnumThreadWindows) puedes localizar la ventana de diálogo de un
MsgBox creado por un thread de tu aplicación, y obtener el controlador de dicha ventana. Luego, mediante la función
GetDlgItem puedes obtener el controlador de cualquier ventana hija de la venana de diálogo (ej. la ventana donde se muestra el icono), y con las funciones de mensajería de ventanas (ej.
SendMessage) puedes enviar mensajes de ventana para modificar el comportamiento o ciertos aspectos de personalización de una ventana, por ejemplo en este caso te interesaría enviar el mensaje
STM_SETICON para asignar/reemplazar el icono de un control de icono.
...pero todo esto que acabo de explicar por encima es extremadamente tedioso de llevar a cabo; lo más sensato en cualquier caso y siempre que el lenguaje de programación lo permita sería implementar nuestro propio
MessageBox en forma de una clase instanciable que muestre una ventana de diálogo personalizada. ¿Un buen lenguaje para poder hacerlo?,
VB.NET, o
C#, en cualquiera de los dos puedes hacer uso de la API de Windows y también desarrollar un
MessageBox personalizado a través de la herencia de la clase
System.Windows.Forms.Form, o en su defecto
System.Windows.Forms.CommonDialog.
Saludos.