Мне нужно использовать функции Windows7.DesktopIntegration.WindowsFormsExtensions, такие как WindowsFormsExtensions.SetTaskbarProgress, с некоторыми открытыми формами. Эти формы не открываются моим приложением.

Как получить ссылку на объект формы каждого окна? Или, может быть, есть другой способ использовать эти функции панели задач?

1
Valentin Golev 22 Сен 2009 в 22:00

2 ответа

Лучший ответ

Я нашел способ:

        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)
            );
        }
1
Valentin Golev 22 Сен 2009 в 22:42

Объекты формы существуют только для тех форм, которые созданы вашим собственным приложением.

Насколько вы понимаете, окна, созданные другими приложениями, имеют только дескрипторы.

Возможно можно создавать объекты Form вокруг существующих дескрипторов, но я бы сказал, что это, вероятно, не лучший способ сделать это.

Почему вы пытаетесь управлять свойствами в других подобных формах, что вы пытаетесь сделать?

0
Lasse V. Karlsen 22 Сен 2009 в 22:17
Хм, а как мне, например, изменить AppId других приложений? WindowsFormsExtensions.SetAppId хочет объект Form в качестве аргумента
 – 
Valentin Golev
22 Сен 2009 в 22:20
С управляемыми расширениями для Windows 7 вы, вероятно, не сможете, но они, вероятно, являются управляемым уровнем поверх функций API Win32 / 64, которые, вероятно, могут принимать только дескрипторы.
 – 
Lasse V. Karlsen
22 Сен 2009 в 22:36