Ver Mensaje Individual
  #2 (permalink)  
Antiguo 05/11/2010, 03:42
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 18 años, 3 meses
Puntos: 29
Respuesta: Bloquear Comandos de Windows

Así deberias poder evitar que se cambie de tarea o se cierre el programa si no es cerrando el sistema:

Configura el form de tu programa con borderstyle=fixeddialog y usa estas líneas:

Código vb:
Ver original
  1. 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
  2.  
  3. 'Hacemos el form "Siempre visible"
  4. Private Sub Form_Load()
  5.   Const conHwndTopmost = -1
  6.   Const conHwndNoTopmost = -2
  7.   Const conSwpNoSize = &H1
  8.   Const conSwpNoMove = &H2
  9.   Const conSwpNoActivate = &H10
  10.   Const conSwpShowWindow = &H40
  11.   SetWindowPos Me.hWnd, conHwndTopmost, 0, 0, 0, 0, conSwpNoActivate Or conSwpNoMove Or conSwpNoSize
  12. End Sub


Código vb:
Ver original
  1. 'Lo maximizamos
  2. Private Sub Form_Resize()
  3.   Me.WindowState=vbMaximized
  4. End Sub

Código vb:
Ver original
  1. ' Evitamos que se pueda cerrar
  2. Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
  3.   If UnloadMode = vbFormControlMenu Then Cancel = 1
  4. End Sub

Y despues añades un timer

Código vb:
Ver original
  1. Private Sub Timer1_Timer()
  2.   ' enfocamos el programa cada x milisegundos
  3.  Me.SetFocus
  4. End Sub

Saludos

PD: Ya lo tuve que reescribir porque no era del todo correcto el código que puse antes, y me vuelvo a encontrar igual. El timer con el setfocus puede impedir usar los botones del form, y si lo pongo en el evento LostFocus tampoco parece hacer efecto. Hay que buscar otro modo de recuperar el foco si se pierde, o calcular un interval que permita trabajar con el programa.
De todas formas si pones un interval no muy bajo (>=250) parece que permite trabajar.
__________________
No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza!

Última edición por pkj; 05/11/2010 a las 05:05