Quiero desarrollar una aplicación que no permita al usuario abrir o saltar a otra aplicación mientras está abierta. Debe estar en Visual Basic
. Por ejemplo, si mi aplicación está abierta (ejecutándose) y el usuario intenta abrir cualquier otra aplicación de Windows como "reproductor de medios", entonces no debería abrirse. La aplicación ni siquiera debería permitir la ejecución del "administrador de tareas". La aplicación debería bloquear completamente el entorno de Windows mientras se está ejecutando.¿Desarrollar una aplicación que no pierda su enfoque?
Respuesta
Una muy buena pregunta. :)
¿Es posible lograrlo en VB?
La respuesta es Sí!
¿Es fácil?
Definitivamente no!
Sin embargo, aquí hay algunos consejos sobre cómo abordar el problema.
1) Desactivar el Administrador de tareas
Sub DisableTaskManager()
Shell "REG add HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System /v DisableTaskMgr /t REG_DWORD /d 1 /f", vbNormalFocus
End Sub
Sub EnableTaskManager()
Shell "REG add HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System /v DisableTaskMgr /t REG_DWORD /d 0 /f", vbNormalFocus
End Sub
2) Asegúrese de que el programa está siempre encima
a) Ocultar la barra de tareas
Option Explicit
'~~> http://allapi.mentalis.org/apilist/FindWindow.shtml
Private Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName _
As String) As Long
'~~> http://allapi.mentalis.org/apilist/SetWindowPos.shtml
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 Const SWP_HIDEWINDOW = &H80
Private Const SWP_SHOWWINDOW = &H40
'~~> Show/Hide Taskbar
Sub Sample()
'~~> To show the taskbar
ShowTskBar True
'~~> To hide the taskbar
ShowTskBar False
End Sub
Sub ShowTskBar(ShouldI As Boolean)
Dim Sid As Long
Sid = FindWindow("Shell_traywnd", "")
If ShouldI = True Then
If Sid > 0 Then _
Sid = SetWindowPos(Sid, 0, 0, 0, 0, 0, SWP_SHOWWINDOW)
Else
If Sid > 0 Then _
Sid = SetWindowPos(Sid, 0, 0, 0, 0, 0, SWP_HIDEWINDOW)
End If
End Sub
b) Muestre su aplicación siempre en la parte superior
'~~> http://www.allapi.net/apilist/SetWindowPos.shtml
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
Const HWND_TOPMOST = -1
Const HWND_NOTOPMOST = -2
Const SWP_NOSIZE = &H1
Const SWP_NOMOVE = &H2
Const SWP_NOACTIVATE = &H10
Const SWP_SHOWWINDOW = &H40
Private Sub Form_Activate()
SetWindowPos Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, _
SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE
End Sub
b) Muestre su aplicación en modo maximizado
Maximizar el formulario para que el escritorio muestra sólo su forma como se muestra en una aplicación de kiosco . Dependiendo de la necesidad, también puede desactivar el botón de minimizar o la barra de título. En tal caso, recuerde agregar un botón para que el usuario pueda hacer clic en eso para salir del formulario.
3) Desactivar el menú de inicio
Este código depende de la versión de Windows que está utilizando. Haga una búsqueda en Google, encontrará muchos ejemplos.
Del mismo modo, debe ocuparse de algunas pequeñas cosas pequeñas, pero esta publicación le dará un buen comienzo. Si usted está buscando una solución completa en un solo lugar entonces dudo que tendrá que conseguirlo;)
HTH
+1 para el pensamiento lógico. –
+1 cosas horribles –
Gracias Pradeep/JFC :) –
Tome un vistazo a la Desktop APIi para crear su propia "caja de arena", pero mucho cuidado ya que es muy fácil para encerrarse en el escritorio principal.
Ver también this question para obtener un poco más de información.
- 1. ¿Cómo puedo hacer que "apple-mobile-web-app-capable" no pierda su sesión?
- 2. Windows 7: evitar que la aplicación pierda el foco
- 3. ¿Cómo evito que un GtkAspectFrame pierda espacio?
- 4. ¿Cómo puedo evitar que CompileAssemblyFromSource pierda memoria?
- 5. usando osgi para desarrollar una aplicación
- 6. Desarrollar aplicación de alarma
- 7. Delphi 2009: ¿Cómo evito que la aplicación de red pierda una sección crítica?
- 8. Enfoque para una aplicación WPF multilingüe
- 9. Cómo simular un clic para que la entrada actual pierda su foco con JavaScript
- 10. Cómo desarrollar un plan para su javascript
- 11. ¿Cómo desarrollar una aplicación de reconocimiento de rostros para iPhone?
- 12. ¿Cómo puedo evitar que BufferManager/PooledBufferManager en mi aplicación de cliente WCF pierda memoria?
- 13. ¿Cómo hacer que el elemento no pierda el foco cuando se presiona el botón?
- 14. Desarrollar una aplicación privada de anclaje de iPhone
- 15. ¿Cuál es su enfoque para probar aplicaciones de iPhone/iPad?
- 16. Desarrollar la aplicación para iPhone sin una Mac?
- 17. ¿Cómo implementar una función de flotación aleatoria para que no pierda entropía? (PHP)
- 18. Desarrollar un sistema operativo que no sea x86
- 19. ¿Cómo eliminar una aplicación que está esperando su revisión?
- 20. ¿Puedo desarrollar para Android en algo que no sea Java?
- 21. VSTO: Enfoque de la aplicación
- 22. ¿Buenas prácticas al desarrollar una aplicación en Erlang (y Riak)?
- 23. ¿Qué ventajas hay para desarrollar una aplicación Win32 en C++ sobre una aplicación .NET en C#?
- 24. Cómo desarrollar una aplicación web que sea amigable con el balance de carga
- 25. ¿El mejor enfoque para una aplicación de MDI en WPF?
- 26. Desarrollar una aplicación web con Mono (opensource .NET) ¿algún ejemplo?
- 27. Desarrollar una aplicación de Android de derecha a izquierda
- 28. ¿Es posible desarrollar una aplicación Flash usando solo código abierto?
- 29. evitar que la vista de lista pierda el elemento seleccionado
- 30. Detener que un cuadro de texto WPF pierda el foco
Bueno, buena suerte con eso –
Si está creando una aplicación de Kiosco como las que se encuentran en muchas tiendas electrónicas, tendrá que depender de la Política de grupo en Windows 7 más que de las restricciones en su propia aplicación. Google, "Desactivar el Administrador de tareas en Windows 7" –
Esto solía llamarse una "Ventana modal del sistema". Digo "solía hacerlo" porque, desde Win32, Microsoft no ha proporcionado una forma integrada para hacerlo, y desaconseja en gran medida incluso intentar hacerlo. (Aunque intentan hacerlo por sus propios productos a veces). – RBarryYoung