Еще один прием должен отключить автоматические сборки.
Мне удалось собрать решение, которое не требовало перечисления всех потоков. Вот соответствующие части.
Если вы объявите FindWindowEx
следующим образом
[DllImport("user32.dll")]
private static extern IntPtr FindWindowEx(
IntPtr parentHwnd,
IntPtr childAfterHwnd,
IntPtr className,
string windowText);
Вы можете получить доступ к дескриптору окна для начальной сферы следующим образом:
IntPtr hwndOrb = FindWindowEx(IntPtr.Zero, IntPtr.Zero, (IntPtr)0xC017, null);
и отключить начальную сферу следующим образом:
ShowWindow(hwndOrb, SW_HIDE);
Ключом к этому методу является то, что мы используем тип IntPtr
для переменной className вместо строки в функции FindWindowEx
. Это позволяет нам использовать часть этой функции, которая принимает тип ATOM
, а не строку
. Я смог определить, что конкретный ATOM
, который нужно использовать, находится по адресу 0xC017
из этого сообщения:
Hide Vista Start Orb
Надеюсь, эта упрощенная версия поможет некоторым людям.
ОБНОВЛЕНИЕ: Я создал эту новую страницу проекта кода , чтобы задокументировать этот процесс.