Les composants tactiles ne fonctionnent pas pendant les deux premières minutes après l'ouverture de session avec un shell personnalisé

0

J'ai le même problème que décrit dans ce post . Comme cette question est restée sans réponse pendant des années, j'ai pensé que je verrais si quelqu'un était sur le point de résoudre ce problème.

Le problème est que si nous exécutons Windows avec un shell personnalisé, c'est-à-dire sans explorer.exeexécution, les composants tactiles de Windows ( wisptis.exe) ne semblent rien faire pendant les deux premières minutes. Une fois ce délai écoulé, tout fonctionne comme il se doit.

Donc, il semblerait que explorer.exe fait quelque chose quand il commence wisptis.exeà faire son truc.

Un examen du moniteur de processus montre qu'après deux minutes, wisptis.exedémarre un fil de discussion et lit un ensemble de paramètres dans le registre. Je ne sais pas comment je pourrais découvrir ce qui déclenche cela.

J'ai également remarqué que le Shell Hardware Detectionservice semble démarrer lorsque je me connecte et s'arrêter au bout de deux minutes, exactement au moment où Touch commence à fonctionner. Donc, peut-être que Windows ne sait pas que l'ordinateur a un écran tactile jusqu'à ce que ce Shell Hardware Detectionsoit fait. N'explique toujours pas pourquoi c'est si rapide quand on utilise le shell d'explorateur normal.

Est-ce que quelqu'un a une idée de ce qui se passe ici?

Mise à jour: Désactiver le Shell Hardware Detectionservice ne fait aucune différence.

Chris
la source
La procédure appropriée consisterait à offrir une prime sur cette question. Si vous avez exactement le même problème.
Ramhound
@Ramhound Vous avez raison, cela a du sens. Cette question est cependant un peu compliquée et difficile à lire.
Chris
Il s'agit d'un duplicata de gestes tactiles dans IE ne fonctionnant pas sans que explorer.exe soit exécuté une fois depuis 2012, et celui-ci n'avait pas une seule réponse.
harrymc

Réponses:

0

Nous avons eu le même problème et l'avons résolu. À cause des droits d'auteur, je ne peux pas vous envoyer notre code.

Mais la solution consiste à déclencher l'événement "ShellReady". Consultez cette adresse pour un exemple d'application.

De plus, nous devions définir cette valeur de registre:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System] 
"DelayedDesktopSwitchTimeout"=dword:00000000 
Hans Hubert Vogts
la source
Votre réponse manque le "exemple comment l'implémenter.". S'il vous plaît ajouter plus que juste un lien.
DavidPostill
Intéressant. Je suis sûr que j'ai fini par essayer de tirer cet événement. Je ne suis pas tombé sur cette valeur de registre cependant, je vais l'essayer!
Chris
0

Problème similaire résolu ici .

Pour résoudre le problème avec mon application WPF / C #, j'ai ajouté:

using System;
using System.Runtime.InteropServices;
...
[DllImport("kernel32.dll")]
static extern IntPtr CreateEvent(IntPtr lpEventAttributes, bool bManualReset, bool bInitialState, string lpName);
[DllImport("kernel32.dll")]
static extern bool SetEvent(IntPtr hEevent);
...
YourStartupFunction()
{
    ...
    IntPtr hEvent = default(IntPtr);
    hEvent = CreateEvent(IntPtr.Zero, true, true, "ShellReadyEvent");
    SetEvent(hEvent);        
    ...
}
utilisateur720427
la source