2009-09-22 6 views
1

Je dois utiliser les fonctions Windows7.DesktopIntegration.WindowsFormsExtensions, telles que WindowsFormsExtensions.SetTaskbarProgress, avec certains formulaires ouverts. Ces formulaires ne sont pas ouverts par mon application. Comment obtenir un lien vers l'objet Form de chaque fenêtre? Ou peut-être existe-t-il une autre façon d'utiliser ces fonctions de la barre des tâches?obtenir tous les formulaires ouverts, C#?

Répondre

1

j'ai trouvé un moyen:

 WindowsFormsExtensions.SetAppId(this, "totalcmd"); 
     Process[] processes = Process.GetProcessesByName("TOTALCMD"); 
     foreach (Process p in processes) 
     { 
      IntPtr pFoundWindow = p.MainWindowHandle; 
      //MessageBox.Show(p.ProcessName); 

      Windows7.DesktopIntegration.Windows7Taskbar.SetWindowAppId(pFoundWindow, "totalcmd"); 
      MessageBox.Show(
       Windows7.DesktopIntegration.Windows7Taskbar.GetWindowAppId(pFoundWindow) 
      ); 
     } 
0

Les objets de formulaire existent uniquement pour les formulaires créés par votre propre application.

Les fenêtres créées par d'autres applications ne possèdent que des poignées, à votre connaissance.

peut être être possible de construire des objets Form autour des poignées existantes, mais je dirais que ce n'est probablement pas la meilleure façon de le faire. Pourquoi essayez-vous de contrôler les propriétés sur d'autres formes comme ça, qu'est-ce que vous essayez de faire?

+0

hmm alors comment puis-je, par exemple, modifier un AppId d'autres applications? WindowsFormsExtensions.SetAppId veut un objet Form comme argument –

+0

Avec les extensions managées pour Windows 7, vous ne pouvez probablement pas, mais il s'agit probablement d'une couche gérée au-dessus des fonctions de l'API Win32/64, qui peut prendre uniquement les poignées. . –

Questions connexes