# Dotnet > Gnral Dotnet > Dveloppement Office System > InfoPath > [IP-2007] Dsactiver la croix de fermeture dans un formulaire InfoPath

## thom07lamy

Bonjour,

je viens de terminer un formulaire sous InfoPath 2007 dont je souhaite dsactiver la croix de fermeture dans la fentre o s'ouvre le formulaire.

J'ai dj fait des recherches et j'ai trouv le code suivant:


```

```

Il me suffit ensuite d'appeler la procdure "Disable" dans le code vnement Form_loading et le tour est jou.

Mais a ne marche pas comme a:

- Pour appeler "Disable", j'ai besoin de pointer sur une instance de System.Windows.Forms.Form
- Tout ce que j'ai c'est une instance de la classe Microsoft.Office.InfoPath.XmlForm, ou  la rigueur de Microsoft.Office.InfoPath.Window
- Dans ces objets, je n'ai aucun lien avec la classe System.Windows.Forms.Form ou System.Windows (un essai de cast me renvoie que mes deux classes sont incompatibles)Je pense avoir donn un maximum d'lments, mais je n'ai pas cod depuis trs longtemps, et l'objet est une notion encore floue.

Note: je programme en VB sous Visual Studio 2005.

Merci d'avance de m'aider  trouver la solution.

----------


## thom07lamy

J'ai un peu avanc sur mon problme, et je crois avoir trouv une solution de rechange, mais l encore, a coince...

J'utilise les objets CommandBars de Microsoft.Office.Infopath.Application.Windows, casts dans la classe Microsoft.Office.Core.CommandBars.

J'ai trouv l'objet CommandBar de nom 'System', dont les contrles contiennent, entre autres, le msoControlButton 'Fermer'.

Mais quand j'applique le code:
_Dans l'inclusion des domaines de noms:_


```

```

_Dans mon code vnement:_


```

```

J'ai le message d'erreur:
System.Runtime.InteropServices.COMException
Une erreur HRESULT E_FAIL a t retourne  partir d'un appel  un composant COM.
    Microsoft.Office.Core.CommandBarControl.set_Enabled(Boolean pvarfEnabled)
    Modle11.FormCode.FormEvents_Loading(Object sender, LoadingEventArgs e)
    Microsoft.Office.InfoPath.Internal.FormEventsHost.OnLoad(DocReturnEvent pEvent)
    Microsoft.Office.Interop.InfoPath.SemiTrust._XDocumentEventSink2_SinkHelper.OnLoad(DocReturnEvent pEvent)
Alors je ne sais plus comment faire.
Aidez-moi SVP, mme des vagues indices feront l'affaire.

----------


## thom07lamy

J'ai fini par trouver, en fait c'tait assez simple.

L'ide c'est simplement de rcuprer le handle de la fentre o le formulaire dmarre.

Avant tout, importer les dll suivantes au dbut du code source:


```

```


Dans les dclarations de classe du FormCode.vb (avant la procdure InternalStartup), on doit mettre:


```

```

Ensuite, dans la procdure FormEvents_Loading on met:


```

```

Et pour terminer, dans le code vnement du bouton destin  la fermeture du formulaire:


```

```

Voila, voila...

Je pense que ce code peut tre adapt sans trop de mal pour toutes les fentres issue d'applications Office 2007.

Si a peut vous servir, tant mieux.

----------


## billout rm

Merci bcp pour ce petit question-rponse qui peut-tre fort utile.
A garder sous le coude!  :;):

----------

