Question

Je porte l'application .NET de WM5 à WM6.5. Outre une nouvelle résolution, j'ai remarqué un comportement d'interface utilisateur différent pour le menu de démarrage et la barre de titre (barre de légende). Mon application doit fonctionner en mode kiosque où l'utilisateur ne peut pas quitter l'application et contourner notre authentification. À cet effet sur WM5, je cachais le bouton de démarrage et le bouton de fermeture. J'utilise la fonction suivante:

SHFullScreen(hWnd, SHFS_HIDESTARTICON | SHFS_HIDESIPBUTTON); 

La cachette des boutons fonctionne également sur WM6.5, mais il y a un autre problème. L'utilisateur peut appuyer sur la barre de titre (barre de menus, barre de légende - je ne sais pas ce qui est le nom propre pour cela - la barre en haut de l'écran) et accéder au gestionnaire de tâches Windows. Voir la capture d'écran ci-jointeApplication

J'ai des endroits où l'utilisateur peut taper et sortir au gestionnaire de tâches comme ceci:Task Manager starting

Des idées comment désactiver cette interaction? L'appareil est Motorola MC65. Exécution de Windows Mobile 6.5.

Ainsi, la réponse finale fait partie d'une réponse publiée ci-dessous:

IntPtr tWnd = FindWindow("HHTaskBar", null);
EnableWindow(tWnd, false);

Nous trouvons juste le hhtaskbar et le désactivons. Il a un inconvénient, mais dans l'ensemble fait l'affaire.

Était-ce utile?

La solution

Vous pouvez masquer l'ensemble de la barre des tâches et maximiser votre formulaire:

// the following three lines are p/invoked
IntPtr tWnd = FindWindow("HHTaskBar", null);
EnableWindow(tWnd, false);
ShowWindow(tWnd, SW_HIDE);

// maximize your form
form.Size = new Size(240, 320); // or whatever the device's screen dimensions are
form.WindowState = FormWindowState.Maximized;

Autres conseils

Essayez la méthode Écran avec shfs_hidetaskbar qui est décrit de cette façon sur msdn:

Mettez la barre des tâches au bas de l'ordre z. Notez qu'un jeu ou une application qui nécessite l'ensemble de l'écran peut utiliser ce drapeau. Assurez-vous que votre application est dimensionnée en plein écran avant d'utiliser ce drapeau. Sinon, il semblera que la fonction n'avait rien fait.

protected override void OnLoad(EventArgs e)
{
    ...

    SHFullScreen(this.Handle, SHFS_HIDETASKBAR | 
        SHFS_HIDESIPBUTTON | SHFS_HIDESTARTICON);

    base.OnLoad(e);
}

private const int SHFS_SHOWTASKBAR = 0x0001;
private const int SHFS_HIDETASKBAR = 0x0002;
private const int SHFS_SHOWSIPBUTTON = 0x0004;
private const int SHFS_HIDESIPBUTTON = 0x0008;
private const int SHFS_SHOWSTARTICON = 0x0010;
private const int SHFS_HIDESTARTICON = 0x0020;

[DllImport("aygshell")]
static extern bool SHFullScreen(IntPtr hwnd, int dwState);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top