| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
wintermute Recien nacido

Registrado: 19 Mar 2007 Mensajes: 16
|
Publicado: Jue 10/05/2007 Asunto: No permitir acceso a menú inicio |
|
|
Hola a todos:
Estoy desarrollando una aplicación para PocketPC Windows Mobile 2003
SE con el Compact Framework 2.0 (C#). La idea es que sólo pueda usarse
en las PDAs esa aplicación, de manera que no pueda cerrarse de ninguna
manera (exceptuando la introducción de un código concreto) ni se pueda
acceder al menú inicio.
De momento, quitando el ControlBox de los formularios y poniéndolos
con TopMost a true no permite cerrar, pero si acceden al menú inicio
el foco de la ventana se pierde y tendrían que pulsar en la ventana
para volver a ella.
Sé que tiene que haber alguna manera de hacer ésto, ya que las PDAs
que usamos vienen con un programa de administración que bloquea todo
menos su formulario, de manera que sólo puede salirse de esa
aplicación introduciendo una clave.
¿Alguien me podría echar una mano?
Muchas gracias.
Un saludo. |
|
| Volver arriba » |
|
 |
tolgalen VIP

Registrado: 18 Jun 2005 Mensajes: 5349
|
Publicado: Vie 11/05/2007 Asunto: |
|
|
Yo intentaría capturar las pulsaciones de las teclas de hardware para evitar perder el foco.
Prueba con el evento OnKeyDown a ver si te funciona bien.
Otra opción que tienes, ya fuera de programarlo tu, es usar el SPBKiosk que te permite poner la PDA en modo "kiosko"
http://www.spbsoftwarehouse.com/products/kioskengine/?es |
|
| Volver arriba » |
|
 |
wintermute Recien nacido

Registrado: 19 Mar 2007 Mensajes: 16
|
Publicado: Mar 15/05/2007 Asunto: |
|
|
Muchas gracias por la respuesta.
El OnKeyDown ya le controlo, pero mi mayor problema ahora mismo es que, aunque maximice la ventana de mi aplicación, la barra de inicio siempre se queda por encima, con lo cual aunque no se muestre lo que ejecute sí que cambia el foco de la ventana.
Lo del modo quiosco es más o menos lo que quiero hacer, pero el tema es que en principio la idea es hacerlo yo de alguna manera (creo que, para el contexto en el que estoy, con conseguir que la barra de inicio quede por detrás de la ventana de la aplicación será suficiente).
¿Se te ocurre alguna manera de hacer ésto?
Muchas gracias de nuevo. |
|
| Volver arriba » |
|
 |
tolgalen VIP

Registrado: 18 Jun 2005 Mensajes: 5349
|
Publicado: Mar 15/05/2007 Asunto: |
|
|
Pues sí, usando la dll Coredll y usando las API FindWindow y EnableWindow. Con FindWindow obtienes un puntero a una ventana y con EnableWindow la activas o desactivas (pasandole el puntero obtenido con FindWindows).
La barra de inicio de windows es una ventana llamada HHTaskBar. |
|
| Volver arriba » |
|
 |
tolgalen VIP

Registrado: 18 Jun 2005 Mensajes: 5349
|
Publicado: Mar 15/05/2007 Asunto: |
|
|
| Ojo, acuerdate de activarla al salir de la aplicación o la dejas desactiva y tendrías que hacer un soft-reset. |
|
| Volver arriba » |
|
 |
wintermute Recien nacido

Registrado: 19 Mar 2007 Mensajes: 16
|
Publicado: Vie 18/05/2007 Asunto: |
|
|
¡Muchas gracias! A ver cuándo lo puedo probar. Si no consigo que funcione, volveréis a tener noticias mías...  |
|
| Volver arriba » |
|
 |
tolgalen VIP

Registrado: 18 Jun 2005 Mensajes: 5349
|
Publicado: Vie 18/05/2007 Asunto: |
|
|
Hombre, mejor cuentanos como te fue, si funciono o no  |
|
| Volver arriba » |
|
 |
wintermute Recien nacido

Registrado: 19 Mar 2007 Mensajes: 16
|
Publicado: Jue 31/05/2007 Asunto: |
|
|
Bueno, por fin he podido probar.
Ha funcionado perfectamente.
Por si a alguien le viene bien, el código es el siguiente:
static class clsBarraTareas
{
[DllImport("Coredll.dll", EntryPoint = "FindWindow")]
private static extern System.IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("coredll.dll", EntryPoint = "EnableWindow")]
private static extern bool EnableWindow(IntPtr hWnd, bool value);
/// <summary>
/// Método para ocultar la barra de tareas.
/// </summary>
public static void HideTaskbar()
{
IntPtr taskBarHandle;
taskBarHandle = FindWindow("HHTaskBar", "");
EnableWindow(taskBarHandle, false);
}
/// <summary>
/// Método para mostrar la barra de tareas.
/// </summary>
public static void ShowTaskbar()
{
IntPtr taskBarHandle;
taskBarHandle = FindWindow("HHTaskBar", "");
EnableWindow(taskBarHandle, true);
}
}
Muchas gracias.
Un saludo. |
|
| Volver arriba » |
|
 |
tolgalen VIP

Registrado: 18 Jun 2005 Mensajes: 5349
|
Publicado: Lun 02/07/2007 Asunto: |
|
|
Gracias por el cacho código , me alegro que te funcionara. |
|
| Volver arriba » |
|
 |
|