Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Eleкtro

#7671
Cita de: Carolina Sanchez en 27 Noviembre 2013, 17:24 PM
En mi proyecto, uso autoplay como interfaz para seleccionar los .exe

Mi pregunta es si cabe la posibilidad de cerrar, matar la aplicación de ese .exe, no del autoplay ni desde el autoplay.

Vamos a ver, Carolina, sigo diciéndote lo mismo, está el autoplay media studio, el autoplay menu designer, autoplay menu builder, ny autoplay, y decenas de aplicaciones de autoplay más, si no especificas concrétamente cual estás usando dudo que puedas recibir la ayuda que necesitas, aunque ya te digo que yo no he usado ese tipo de software...pero bueno.

Al menos el autoplay media studio tiene un motor de Scirpting, que puedes usar como usas Batch para indicar las órdenes, así que si usas dicho programa, lo lógico es hacerlo usando ese engine de scripting, no con Batch. (la forma de hacerlo la tienes en mi primer post).

Para dejarlo claro, en Batch no puedes hacer eso, Batch es muy simple, no puedes capturar los eventos del teclado, las pulsaciones. pero una alternativa sencilla y eficaz sería usando el lenguaje AutoIt (para crear un Hotkey global), aunque para eso debes tener un conocimiento mínimo de lo que intentas hacer, pues es muy distinto a Batch.

Saludos!
#7672
@Carolina

1. Puedes empezar por contestar a la primera pregunta que te hice para aclarar el nombre del programa que usas para crear los menues.

2. ¿Entiendes la explicación en inglés?, si la entiendes solo tienes que seguir esos pasos, y probar el código del resumen que hice al final del todo en mi respuesta.

3. Si lo prefieres puedes preguntar que es lo que no entiendes.

EDITO:

El procedimiento es sencillo de entender mira:

1. Creas un archivo bat para matar la aplicación (el código lo tienes arriba).
2. En el autoplay, escribes la instrucción necesaria para ejecutar el archivo bat (el código también lo tienes arriba, en el resumen, aunq no se si esa es la sintaxs correcta).
3. Por último, en el autoplay también, asocias una tecla con la instrucción (la manera de hacer esto lo pone en la cita inglesa).

Yo no puedo ayudar más, no uso autoplay

Saludos!
#7673
Cita de: Carolina Sanchez en 27 Noviembre 2013, 15:33 PMHe creado el TEU con autoplay.

Con autoplay te refieres a la aplicación Autoplay Media Studio? o que otra aplicación Autoplay?.

En caso de ser Autoplay Media Studio y si no tienes problemas para entender el inglés, aquí tienes la solución:

Cita de: http://www.indigorose.com/forums/80-AutoPlay-Media-Studio-7.5-FAQQuestion:
Can AutoPlay Media Studio react to a key pressed on the users keyboard?

Answer:
You can make your application react to keystrokes using the following instructions:

1) Go to Page -> Properties -> Script -> "On Key" of the page that you would like to put this functionality.
2) Find out what the ASCII code of the key that you wish to capture is. There is a full list available from Here .
3) For our example we will capture the space bar. So from looking at the table in step 2 I can see that the Decimal value is 32.
4) Now add the following code:
if e_Key == 32 then
-- Your code that reacts to this keystroke goes here
end

Aquí tienes la lista del equivalente ASCII: http://www.theasciicode.com.ar/ascii-control-characters/escape-ascii-code-27.html

Dentro del bloque, deberías escribir una instrucción para iniciar la CMD (la consola de Windows) con el comando TaskKill (el cual sirve para matar un processo).

Según tengo entendido esta sería la sintaxis, esto sería lo que iria en el bloque de arriba, pero no lo se seguro ya que no uso dicha aplicaicón.

CommandLine.Execute("CMD.exe /C ""TaskKill /F /IM ""Nombre de tu menu Autoplay.exe""""", 0);

(Fíjate en las comillas dobles duplicadas, no se si esa es la manera de escapar las comillas dobles en el tal Autoplay.)

Otra forma al aprecer sería ejecutar un archivo bat que ya contenga las instrucciones para matar la aplicaicón (en el caso de que el código de arriba te diese problemas por las comillas y tut ampocos epas como escaparlas...):

File.Run("CloseMenu.bat", , "", SW_SHOWNORMAL, false);

el parámetro SW_SHOWNORMAL indica el tipo de ventana (normal, maximizada, minimizada, etc...), aquí tienes una lista de los posibles parámetros que puedes usar: http://msdn.microsoft.com/en-us/library/windows/desktop/bb762153%28v=vs.85%29.aspx

El parámetro False segúramente esté indicando que no se debe esperar a que la aplicación finalice su ejecución, o eso o a que se muestre la ventana oculta, una de dos. si tienes dudas busca la documentación del programa.

El archivo CloseMenu.bat lo deberías colocar junto al archivo .exe de tu menu, y dentro del archivo CloseMenu.bat deberías escribir esto:

Código (dos) [Seleccionar]
@Echo OFF
TaskKill /F /IM "Nombre de tu menu Autoplay.exe"
Exit





En resumen, para que al apretar la tecla escape se cerrase el menú, supuéstamente (ya te digo, no lo se seguro porque no manejo ese programa) el código debería ser este:

if e_Key == 27 then

   File.Run("CloseMenu.bat", , "", SW_SHOWMINIMIZED, false)

end


EDITO: se me olvidaba comentar que el código no lo debes copiar/pegar y ya está, tienes que suscribirte al evento OnKeyPress del menú, las instrucciones las tienes más arriba, en inglés.

Saludos.
#7674
@oblop

Vuelve a seguir los pasos, pero reinicia el PC en MODO SEGURO.

-> Como iniciar Windows en modo seguro

Y ahí ya le pasas el antivirus tranquílamente.

Cita de: oblop en 27 Noviembre 2013, 13:41 PMQue puede estar pasando?

Que tienes un virus, y parece ser un virus muy lammer que símplemente usa el taskkill para matar procesos (quizás el "virus" intenta matar varios procesos conocidos de antivirus y por eso se te cierra el M.S.E. en cuestión de segundos), quizás también te haya modificado las políticas de grupo para que no puedas iniciar el administrador de tareas.

Se debe reiniciar en modo seguro para que el virus no inice con el sistema, aunque no es 100% seguro, pero si el 99,9%, prueba y nos dices.

Saludos!
#7675
La razón de que no te salte una excepción es que el primer manejo de excepción da positivo, pero lo único que haces para controlar la excepción es salir del método (Exit Sub)...

No manejo Acces, pero puedes empezar por dejar de anidar el manejo de excepciones para averiguar exáctamente donde está el error.

Código (vbnet) [Seleccionar]
          Try
              'Abrimos la conexión
              Conexion.ConnectionString = StrConexion
              Conexion.Open()
              Dim query As String
              query = "INSERT INTO Proveedores (Id, Precio, Cantidad) VALUES (@id, @precio, @cantidad)"
              Dim cmd As OleDbCommand = New OleDbCommand(query, Conexion)
              cmd.Parameters.AddWithValue("@id", CInt(txtIDAnimal.Text))
              cmd.Parameters.AddWithValue("@precio", CInt(txtPrecioAnimal.Text))
              cmd.Parameters.AddWithValue("@cantidad", CInt(txtCantidadAnimales.Text))
              cmd.ExecuteNonQuery()
              'Cerramos la conexión
              Conexion.Close()

          Catch ex As Exception
             MsgBox(ex.Message & ex.stacktrace)

          Finally
             ' Limpio los textboxes
             txtIDAnimal.Clear
             txtPrecioAnimal.Clear
             txtCantidadAnimales.Clear

          End Try


saludos
#7676
Un ejemplo de uso de la librería FrameworkDetection http://www.codeproject.com/Articles/17501/Using-managed-code-to-detect-what-NET-Framework-ve?msg=4706288#xx4706288xx



Código (vbnet) [Seleccionar]
Public Class Form1

    Private Sub Test()

        Dim sb As New System.Text.StringBuilder

        For Each FW In [Enum].GetValues(GetType(Campari.Software.FrameworkVersion))

            sb.AppendLine(String.Format("FW {0} Is installed?: {1}",
                                        FW.ToString.Substring(2),
                                        Campari.Software.FrameworkVersionDetection.IsInstalled(FW)))

            sb.AppendLine(String.Format("FW {0} version: {1}",
                                        FW.ToString.Substring(2),
                                        Campari.Software.FrameworkVersionDetection.GetExactVersion(FW).ToString))

            sb.Append(Environment.NewLine)

        Next

        MsgBox(sb.ToString)

    End Sub

End Class
#7677
Foro Libre / Re: Soy Programador (video Oficial)
25 Noviembre 2013, 21:36 PM


Vaya tela con la crisis...
#7678
Scripting / Re: [batch] conexión FTP en Batch
25 Noviembre 2013, 16:38 PM
Cita de: shadowhunter en 25 Noviembre 2013, 16:25 PMNadie sabe nada del tema?

Subir, descargar, y leer un archivo son cosas fáciles, pero aquí no se le hace el trabajo a nadie, y lo has pedido todo hecho, sin mostrar siquiera un código.

Si no te importa depender de aplicaciones externas entonces para subir puedes usar la aplicación WPUT, para descargar WGET,
y luego, para leer un archivo el comando TYPE, y para buscar una cadena de texto el comando FIND/FINDSTR.

PD: Puedes reemplazar las dos primeras aplicaciones externas por el comando FTP (no lo recomiendo).

Saludos!
#7679
Bueno, con la intención de que el post no muera muy rápido... comparto unos videos terroríficos:

[youtube=640,360]http://www.youtube.com/watch?v=rIT0mCeiGG8[/youtube]     [youtube=640,360]http://www.youtube.com/watch?v=pe3Axn5Rtkg[/youtube]
#7680
Un ayudante para agregar y/o eliminar variables de entorno en el sistema.

Código (vbnet) [Seleccionar]
#Region " Environment Variables Helper "

' [ Environment Variables Helper ]
'
' // By Elektro H@cker
'
' Examples:
' EnvironmentVariables.Add("DirFiles", "Dir /B ""*.*""", EnvironmentVariables.EnvironmentKind.CurrentUser)
' EnvironmentVariables.Remove("DirFiles", EnvironmentVariables.EnvironmentKind.CurrentUser)

Public Class EnvironmentVariables

#Region " API, Constants, Enums"

    ''' <summary>
    ''' User Environment Subkey.
    ''' </summary>
    Private Shared ReadOnly UserEnvironmentKey As String = "Environment\"

    ''' <summary>
    ''' System Environment Subkey.
    ''' </summary>
    Private Shared ReadOnly SystemEnvironmentKey As String = "SYSTEM\CurrentControlSet\Control\Session Manager\Environment\"

    ''' <summary>
    ''' Sends the specified message to one or more windows.
    ''' </summary>
    <System.Runtime.InteropServices.
    DllImport("user32.dll", SetLastError:=True)> _
    Public Shared Function SendMessageTimeout(
                  ByVal windowHandle As IntPtr,
                  ByVal Msg As Integer,
                  ByVal wParam As IntPtr,
                  ByVal lParam As String,
                  ByVal flags As SendMessageTimeoutFlags,
                  ByVal timeout As Integer,
                  ByRef result As IntPtr
    ) As IntPtr
    End Function

    ''' <summary>
    ''' Kind of environment.
    ''' </summary>
    Public Enum EnvironmentKind As Short

        ''' <summary>
        ''' Indicates that the environment variable
        ''' should only be accesible for the current user.
        ''' </summary>
        CurrentUser = 0

        ''' <summary>
        ''' Indicates that the environment variable
        ''' should be accesible for all users.
        ''' </summary>
        System = 1

    End Enum

    ''' <summary>
    ''' Sends the specified message to one or more windows.
    ''' </summary>
    <Flags()> _
    Public Enum SendMessageTimeoutFlags As Integer

        ''' <summary>
        ''' The calling thread is not prevented from processing
        ''' other requests while waiting for the function to return.
        ''' </summary>
        SMTO_NORMAL = &H0

        ''' <summary>
        ''' Prevents the calling thread from processing any other requests until the function returns.
        ''' </summary>
        SMTO_BLOCK = &H1

        ''' <summary>
        ''' The function returns without waiting for the time-out period
        ''' to elapse if the receiving thread appears to not respond or "hangs."
        ''' </summary>
        SMTO_ABORTIFHUNG = &H2

        ''' <summary>
        ''' The function does not enforce the time-out period
        ''' as long as the receiving thread is processing messages.
        ''' </summary>
        SMTO_NOTIMEOUTIFNOTHUNG = &H8

        ''' <summary>
        ''' The function should return 0 if the receiving window is destroyed
        ''' or its owning thread dies while the message is being processed.
        ''' </summary>
        SMTO_ERRORONEXIT = &H20

    End Enum

    ''' <summary>
    ''' A message that is sent to all top-level windows when
    ''' the SystemParametersInfo function changes a system-wide setting or when policy settings have changed.
    ''' <remarks>
    ''' Applications should send WM_SETTINGCHANGE to all top-level windows when they make changes to system parameters
    ''' (This message cannot be sent directly to a window.)
    '''  To send the WM_SETTINGCHANGE message to all top-level windows,
    ''' use the SendMessageTimeout function with the hwnd parameter set to HWND_BROADCAST.
    ''' </remarks>
    ''' </summary>
    Private Const WM_SETTINGCHANGE = &H1A

    ''' <summary>
    ''' the message is sent to all top-level windows in the system,
    ''' including disabled or invisible unowned windows.
    ''' The function does not return until each window has timed out.
    ''' Therefore, the total wait time can be up to the value of uTimeout multiplied by the number of top-level windows.
    ''' </summary>
    Public Const HWND_BROADCAST = &HFFFF&

#End Region

#Region " Public methods "

    ''' <summary>
    ''' Sets an environment variable.
    ''' <remarks>If a variable already exists, will be replaced.</remarks>
    ''' </summary>
    ''' <param name="VariableName">Indicates the variable name.</param>
    ''' <param name="Value">Indicates the variable value.</param>
    ''' <param name="EnvironmentKind">Indicates the kind of environment where the variable should be added.</param>
    Public Shared Sub Add(ByVal VariableName As String,
                   ByVal Value As String,
                   ByVal EnvironmentKind As EnvironmentKind)

        Select Case EnvironmentKind

            Case EnvironmentKind.CurrentUser
                My.Computer.Registry.CurrentUser.
                    OpenSubKey(UserEnvironmentKey, True).
                    SetValue(VariableName, Value)

            Case EnvironmentKind.System
                My.Computer.Registry.LocalMachine.
                    OpenSubKey(SystemEnvironmentKey, True).
                    SetValue(VariableName, Value)

        End Select

        UpdateRegChange()

    End Sub

    ''' <summary>
    ''' Sets an environment variable.
    ''' </summary>
    ''' <param name="VariableName">Indicates the variable name.</param>
    ''' <param name="EnvironmentKind">Indicates the kind of environment from where the variable should be removed.</param>
    Public Shared Sub Remove(ByVal VariableName As String,
                      ByVal EnvironmentKind As EnvironmentKind)

        Select Case EnvironmentKind

            Case EnvironmentKind.CurrentUser
                My.Computer.Registry.CurrentUser.
                    OpenSubKey(UserEnvironmentKey, True).
                    DeleteValue(VariableName, True)

            Case EnvironmentKind.System
                My.Computer.Registry.LocalMachine.
                    OpenSubKey(SystemEnvironmentKey, True).
                    DeleteValue(VariableName, True)

        End Select

        UpdateRegChange()

    End Sub

#End Region

#Region " Private methods "

    Private Shared Sub UpdateRegChange()

        ' Update Registry Change
        SendMessageTimeout(HWND_BROADCAST,
                           WM_SETTINGCHANGE,
                           0,
                           "Environment",
                           SendMessageTimeoutFlags.SMTO_ABORTIFHUNG,
                           1,
                           IntPtr.Zero)

    End Sub

#End Region

End Class

#End Region