J'essaie d'utiliser la fonction SetForegroundWindow(HWND hWnD)
. J'ai quelques poignées mais cela ne fonctionne pas comme paramètre de la fonction ci-dessus. Ma poignée est un fil et je veux l'exécuter au premier plan.
Quelles sont les différences entre un HWND et un HANDLE?
Ce sont juste types de données abstraits .
Selon MSDN , HANDLE
et HWND
sont définis comme:
HANDLE
est un handle vers un objet.HWND
est un descripteur de fenêtre.Ainsi, un HWND
est un HANDLE
, mais tous les HANDLE
ne sont pas HWND
. En réalité:
typedef void *PVOID;
typedef PVOID HANDLE;
typedef HANDLE HWND;
Vous ne devez transmettre que HWND
à SetForegroundWindow
sauf si vous savez ce que vous faites.
HWND hWnd = FindWindow(NULL, "Calculator");
SetForegroundWindow(hWnd);
Cela obtient d'abord le handle d'une fenêtre intitulée "Calculatrice" avec FindWindow
, puis met cette fenêtre au premier plan.
Un "handle" est le terme général utilisé pour faire référence à un jeton qui identifie une ressource sur le système (un menu, un DLL, un bloc de mémoire, etc.). Souvent appelé un "cookie magique", il est normalement renvoyé lorsque vous créez la ressource pour la première fois. Vous passez ensuite ce handle à d'autres fonctions de l'API responsable du traitement de la ressource. Vous n'avez normalement pas besoin de savoir ce qu'est le handle cependant. Parfois, il peut s'agir d'un pointeur , d'autres fois un nombre, peut-être une structure, ou autre. C'est pourquoi ils le cachent en utilisant des noms comme HWND qui est simplement le handle utilisé pour identifier une fenêtre (retourné par la fonction API "CreateWindow ()"). convertir un "handle" en HWND et vice-versa car un HWND est déjà un "handle" (qui identifie simplement les fenêtres que vous créez).
Trouvé ici http://forums.codeguru.com/showthread.php?135438-Handle-and-HWND
Vous pouvez utiliser FindWindow pour obtenir le hwnd à partir d'une application http://msdn.Microsoft.com/en-us/library/windows/desktop/ms633499 (v = vs.85) .aspx
Cela devrait vous permettre d'obtenir le HWND à condition que vous ayez la poignée de ce que vous recherchez C++ Handle as HWND?
Le HWND est également un MANCHE, mais global. C'est à dire. un HWND valide dans le contexte d'un processus est également valide dans le contexte d'un autre processus.
Quelques informations non documentées sur http://forum.sysinternals.com/internal-wnd-structure-in-win7_topic24988.html .