Comment obtenir la poignée de travail si je POIGNÉE à l'une des fenêtres de l'emploi

StackOverflow https://stackoverflow.com/questions/3193453

  •  02-10-2019
  •  | 
  •  

Question

Mon application a essayé de gratter IE8, ici on obtient en quelque sorte POIGNÉE Internet Explorer Fenêtre / interface utilisateur. Maintenant, je veux la poignée de travail pour IE8. Une idée est de - Faut d'abord déterminer le numéro de processus en utilisant la poignée IE fenêtre à l'aide GetWindowThreadProcessId (), mais après cela, je suis coincé.

Il y a une nouvelle mise en œuvre dans IE8, ici chaque onglet ouvert est un processus dans un travail. Ainsi, nous voyons IE8 est géré comme un travail.

Était-ce utile?

La solution

Je ne pouvais pas trouver un moyen documenté pour faire le travail auquel un processus est lié; aussi, je ne pouvais pas trouver un moyen documenté pour énumérer tous les emplois dans le système, à l'exception du OpenJobObject sur chaque nom de travail que vous pouvez obtenir (ou, si vous parvenez à réduire votre travail avec une heuristique sur les noms d'emploi, même mieux) et utiliser le IsProcessInJob pour vérifier si votre poignée de processus (que vous obtenez avec OpenProcess + GetWindowThreadProcessId ) appartient à l'emploi; une fois que vous obtenez un match, vous êtes ensemble. Rappelez-vous de fermer toutes les poignées! :)

Dans le cas malheureux que les objets de travail utilisés par IE8 sont sans nom, alors tout devient plus difficile. Vous avez probablement besoin de recourir à presque non documentés (par Microsoft, mais largement documenté sur le net) des techniques poignée énumération pour énumérer toutes les poignées par rapport à votre processus cible. Vous pouvez filtrer que le travail poignées d'objets, et utiliser la technique décrite ci-dessus pour obtenir le droit.


D'ailleurs, pourquoi avez-vous besoin d'accéder aux objets métier utilisé par IE8?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top