Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[Débutant] Comment faire une fonction FindWindow ?

1 réponse
Avatar
Philippe Cazaux-Moutou
Bonjour

Venant de Delphi, je me servais de FindWindow pour savoir si une fenetre
etait ouverte

comment faire la meme chose avec C#, car je ne trouves pas cette fonction

en fait ce serait pour remplacer ce code, avec lequel j ai des soucis,
car il plante la dessus

private FFilmsListe m_aFFilmsListe;

private void mListeFilms_ItemClick(object sender,
DevExpress.XtraBars.ItemClickEventArgs e)
{

//if (m_aFFilmsListe != null || m_aFFilmsListe.bOpen != true)
// return;

if (m_aFFilmsListe == null)
{
// Déclaration de la fenetre
m_aFFilmsListe = new FFilmsListe(this);

}

// On docke la fenetre dans le Tab 1
m_aFFilmsListe.Dock = System.Windows.Forms.DockStyle.Fill;
m_aFFilmsListe.FormBorderStyle =
System.Windows.Forms.FormBorderStyle.None;

m_aFFilmsListe.TopLevel = false;
panel2.Controls.Add(m_aFFilmsListe);

// Affichage de la fenetre
m_aFFilmsListe.Show();
// m_aFFilmsListe = null;
}


Merci

1 réponse

Avatar
Paul Bacelar
Je pense qu'il vaut mieux affronter le Dragon que fuir.

Votre exemple de code m'inspire les inquiétudes suivantes:

- La méthode "mListeFilms_ItemClick" semble être une méthode utilisée via un
delegate.

- Hors, on ne maîtrise pas le thread qui exécute un delegate.

- Dans la méthode "mListeFilms_ItemClick", vous modifiez des propriétés et
appelez des méthodes de classes graphiques qui ne sont pas thread-safe,
elles ne doivent être modifiées ou appelé que par le thread créateur de la
fenêtre.



Je pense donc que l'utilisation de la méthode Invoke des composants
graphiques s'impose pour que le bon thread fasse le travail de modifications
de propriétés et d'appels de méthodes.
--
Paul Bacelar
MVP VC++


"Philippe Cazaux-Moutou" wrote in message
news:44501e0e$0$20171$
Bonjour

Venant de Delphi, je me servais de FindWindow pour savoir si une fenetre
etait ouverte

comment faire la meme chose avec C#, car je ne trouves pas cette fonction

en fait ce serait pour remplacer ce code, avec lequel j ai des soucis,
car il plante la dessus

private FFilmsListe m_aFFilmsListe;

private void mListeFilms_ItemClick(object sender,
DevExpress.XtraBars.ItemClickEventArgs e)
{

//if (m_aFFilmsListe != null || m_aFFilmsListe.bOpen != true)
// return;

if (m_aFFilmsListe == null)
{
// Déclaration de la fenetre
m_aFFilmsListe = new FFilmsListe(this);

}

// On docke la fenetre dans le Tab 1
m_aFFilmsListe.Dock = System.Windows.Forms.DockStyle.Fill;
m_aFFilmsListe.FormBorderStyle =
System.Windows.Forms.FormBorderStyle.None;

m_aFFilmsListe.TopLevel = false;
panel2.Controls.Add(m_aFFilmsListe);

// Affichage de la fenetre
m_aFFilmsListe.Show();
// m_aFFilmsListe = null;
}


Merci