2010-11-17 2 views
0

J'essaie d'amener mon application en cours d'exécution sur le clic droit de Windows. S'il vous plaît noter que je ne veux pas une nouvelle instance de la même application, mais qui porte la même application à l'avant en utilisant SetForegroundWindowPuis-je utiliser la fenêtre de recherche sans utiliser RegisterClass et CreateWindow

J'ai essayé d'utiliser AfxRegisterClass et Createwindow (previos après here), mais cela crée une nouvelle fenêtre et onclik apporter la nouvelle fenêtre au lieu de mon application actuelle. Est-il possible de faire apparaître mon application à la place de la fenêtre nouvellement créée.

+1

Vous pouvez toujours utiliser 'FindWindow()' sans appeler 'CreateWindow()'. Je ne comprends pas votre question - voulez-vous vous assurer qu'une seule instance de votre application est en cours d'exécution? –

+0

@ In silico, Si j'essaie d'utiliser FindWindow sans utiliser Create Window, le handle devient NULL. Si vous souhaitez jeter un oeil à [code source] (http://stackoverflow.com/questions/4201728/bringwindowtotop-is-not-working-even-if-i-get-the-handle-to-class- fenêtre "FindWindow") – Simsons

Répondre

0

Probablement préférable d'utiliser des mutex, mais oui, vous pouvez utiliser FindWindow pour cela. Quelque chose comme ceci:

HWND hwnd = FindWindow(NULL, "My App's Hopefully Unique Title"); 
if (hwnd) 
{ 
    SetWindowPos(hwnd, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE); 
    SetFocus(hwnd); 
} 
+0

+1 pour corriger la mismodération, vous n'avez vraiment pas besoin de CreateWindow. – MSalters

+0

@ MSalters, je ne comprends pas la raison, mais quand je RegisterClass et puis essayer de Findwindow je reçois la valeur NULL, mais quand j'utilise FindWindow (After CreateWindow), j'obtiens le handle à elle. J'ai tout le code dans le précédent [post] (http://stackoverflow.com/questions/4201728/bringwindowtotop-is-not-working-even-if-i-get-the-handle-to-class-window "BringWindowToTop ne fonctionne pas même si je reçois le handle de la classe Class ") – Simsons

+0

C'est parce qu'il n'y a pas de ** fenêtre pour trouver si vous ne l'avez pas créé. – wj32

Questions connexes