2010-05-11 6 views
1

Je suis actuellement en train de créer un simple bouton supplémentaire sur ma barre d'outils Internet Explorer 7. Le bouton fonctionne. J'utilise Visual C++.Bouton Ajouter à la barre d'outils Internet Explorer pendant l'exécution

Mais maintenant, je voudrais créer un pour créer un bouton pendant que mon Internet Explorer est en cours d'exécution. Moyens, sous certaines conditions, mon programme (une DLL enregistrée avec regsvr32) ajoutera un bouton à la barre d'outils. et après certaines conditions, le bouton peut également être disparu.

Comment puis-je y parvenir?

mise à jour:

J'ai essayé d'utiliser cette ligne:

ShowWindow(hWndButton, SW_HIDE); 

Il cache mon navigateur Internet Explorer. Sous le Gestionnaire des tâches, il est toujours en cours d'exécution. Comment faire pour masquer seulement l'objet bouton?

modifier:

Je souhaite modifier ce code ..

STDMETHODIMP CButtonDemoBHO::Exec(const GUID*, DWORD nCmdID, DWORD d, VARIANTARG*, VARIANTARG* pvaOut){ 
ATLTRACE("CButtonDemoBHO::Exec\n"); 

switch (nCmdID){ 
case BUTTON_PRESSED: 

MessageBox(m_hWnd, L"You have pressed the button", L"Button Pressed", MB_OK); 

    <------- I would like to hide the button here. 

    break; 
case MENU_ITEM_SELECT: 
MessageBox(m_hWnd, L"You have simulated a button press with the menu ", L"Menu Pressed", MB_OK); 
    break; 
    } 
    return S_OK; 
} 
+0

Vous dites "le bouton fonctionne" - cela signifie que ** vous ** avez créé le bouton - correct? Comment le créez-vous? – egrunin

+0

oui. Le bouton est enregistré en utilisant regsvr32. Mais, par défaut, je veux qu'il se cache, et après certaines conditions dans mon programme cpp, le bouton apparaîtra. – karikari

+0

Tout d'abord: regsvr32 enregistre le ** BHO ** pas le ** bouton **. Voir ma nouvelle réponse éditée pour la solution réelle à votre problème ... – egrunin

Répondre

2

Pouvez-vous ajouter le bouton toujours (comme vous êtes maintenant), mais le cacher/réafficher quand vous voulez voir?

Edité à ajouter:

Pour masquer le bouton, vous devez utiliser ShowWindow(). Voici deux façons:

  1. Si le bouton est un CButton, appelez theButton.ShowWindow(SW_HIDE)
  2. Si le bouton est une fenêtre simple, appelez ShowWindow(hWndButton, SW_HIDE)

Modifié à nouveau:

J'ai trouvé le code source que vous essayez de modifier: forum-assist.

Fondamentalement, quelle que soit la classe définit le bouton, ou sait comment le trouver (probablement RebarHandler.cpp) est l'endroit où vous devez ajouter des méthodes pour afficher et masquer le bouton. Ensuite, vous devez appeler cela de CButtonDemoBHO::Exec().

Je ne peux pas vous dire comment passer de CButtonDemoBHO à CRebarHandler sans analyser l'ensemble du projet.

+0

C'est également correct. mais je ne sais pas comment le faire. – karikari

+0

Ce bouton se trouve dans la barre d'outils IE. Lequel dois-je utiliser? – karikari

+0

Comment puis-je savoir si le bouton est un CButton ou une fenêtre ordinaire? – karikari

Questions connexes