Espero me puedas ayudar necesito formas de manejo y bloque del teclado... Esto por que trabajo en un cyber y estoy aprendiendo a programar por lo cual pretendo hacer una aplicación que me permita administrarlo. De ante mano muchas gracias. Yo Claudio [email protected]
1 Respuesta
Respuesta de orande
1
1
orande, Amplios conocimientos y experiencia en Visual Basic, SQL Server y...
Puede que haya alguna llamada al API que bloquee todo el teclado, pero es muy peligroso porque no puedes luego escribir nada para recuperarlo. Yo te recomiendo que tengas un formulario maximizado y sin bordes, con la propiedad KeyPreview a True, de tal manera que todo lo que pulse el usuario pasa antes por los eventos del Form (KeyDown, KeyPress y KeyUp). Es en estos eventos donde puedes controlar lo que escribe el usuario (salvo el Ctrl+Alt+Supr, que en Windows XP no se puede impedir). Otra sugerencia: puedes convertir el ejecutable que hagas en la consola por defecto del Windows, substituyendo el explorer.exe en el registro de windows (SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell), de esta manera no se podrá acceder al escritorio y solo se podrán cargar las aplicaciones que tu permitas a través del ejecutable que substituye al escritorio.
Hola... Sabes me sirvió la opción de propiedad keypreview pero me parece bastante más interesante la opción de reemplazar mi aplicación por el escritorio el único detalle es que la clave de registro que me indicas (al parecer) es de windows NT y mi aplicación es para win98... Agradecería muchísimo si me pudieres indicar la clave que realiza esta modificación para win98, estuve buscando en internet pero no encontré nada concreto, también revise el registro pero preferí no arriesgarme a hacer pruebas. Espero me puedas ayudar. Atentamente. Yo Claudio [email protected] PD: tengo otra consulta que realizare al tablón: Como sobrepongo un formulario de mi aplicación a todo lo que se este ejecutando y que no pase a segundo plano si el usuario ejecuta o activa otra aplicación. Si me puedes ayudar de antemano gracias
Me temo que no puedo ayudarte con lo del escritorio en Win98, no tengo ya ninguna maquina en la oficina con ese sistema operativo. De todas maneras si quieres buscarlo me imagino que tiene que ser un valor alfanumérico de nombre "Shell" y valor "C:\Windows\Explorer.exe" En cuanto a lo otro lo mas comodo es poner el formulario modal cuando lo muestras: Load Form1 Form1.Show vbModal Se queda en primer plano y no puedes interactuar con el formulario "padre" que lo ha mostrado hasta que cierres el formulario modal. Otra forma es con un "Tricker" mediante llamadas al API. El formulario te queda en primer plano sobre todas las cosas habidas y por haber. Es más peligroso de manejar, pero puede serte muy útil: Private Declare Function SetWindowPos Lib "user32" _ (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, _ ByVal cy As Long, ByVal wFlags As Long) As Long Private Sub pFormularioSiempreVisible(frm As Form, Optional ByVal Poner As Boolean = True) Const HWND_BOTTOM As Integer = 1 Const HWND_NOTOPMOST As Integer = -2 Const HWND_TOP As Integer = 0 Const HWND_TOPMOST As Integer = -1 Const SWP_ASYNCWINDOWPOS As Integer = &H4000 Const SWP_DEFERERASE As Integer = &H2000 Const SWP_FRAMECHANGED As Integer = &H20 Const SWP_DRAWFRAME As Integer = SWP_FRAMECHANGED Const SWP_HIDEWINDOW As Integer = &H80 Const SWP_NOACTIVATE As Integer = &H10 Const SWP_NOCOPYBITS As Integer = &H100 Const SWP_NOMOVE As Integer = &H2 Const SWP_NOOWNERZORDER As Integer = &H200 Const SWP_NOREDRAW As Integer = &H8 Const SWP_NOREPOSITION As Integer = SWP_NOOWNERZORDER Const SWP_NOSENDCHANGING As Integer = &H400 Const SWP_NOSIZE As Integer = &H1 Const SWP_NOZORDER As Integer = &H4 Const SWP_SHOWWINDOW As Integer = &H40 If Poner Then SetWindowPos frm.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE Or SWP_SHOWWINDOW Or SWP_NOACTIVATE Else SetWindowPos frm.hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE Or SWP_SHOWWINDOW Or SWP_NOACTIVATE End If End Sub
No he tenido tiempo para verificar el funcionamiento de la segunda respuesta pero la primera fue buena y cierto la pregunta para no perjudicar al experto. Mil disculpas por la demora. Yo Claudio