abdul subhan mohammed Ответов: 1

Как получить список элементов в меню "Пуск" для Windows 8.1 с#


Дорогие Все,

Я создаю приложение windows с помощью c#, где я автоматизирую windows.

Я пытаюсь получить список элементов в меню " Пуск "в windows 8.1. когда мы нажимаем только клавишу окна и получаем некоторые элементы на экране меню" Пуск", я хочу получить только эти элементы, но не те, которые мы получаем, когда нажимаем кнопку "вниз" в нижней части экрана меню "Пуск".


Нажмите здесь для получения более подробной информации

Что я уже пробовал:

Environment.GetFolderPath(Environment.SpecialFolder.StartMenu);


Я пробовал выше код, но я получаю те элементы, которые мы получаем, когда нажимаем кнопку "DownArrow" в нижней части экрана меню "Пуск".

Но я ищу те предметы, которые мы получаем, когда нажимаем только клавишу окна.

Кто-нибудь может пожалуйста помочь мне.


Заранее спасибо.

1 Ответов

Рейтинг:
0

RickZeeland

См. эту статью: На C#: получить путь из программ меню "Пуск" (Все пользователи) - программирования (C#, с++, Ява, ВБ .NET и т. д.) - Neowin[^]

class Program
{
	[DllImport("shell32.dll")]
	static extern bool SHGetSpecialFolderPath(IntPtr hwndOwner, [Out] StringBuilder lpszPath, int nFolder, bool fCreate);
	const int CSIDL_COMMON_STARTMENU = 0x16;  // \Windows\Start Menu\Programs

	static void Main(string[] args)
	{
		StringBuilder path = new StringBuilder(260);
		SHGetSpecialFolderPath(IntPtr.Zero, path, CSIDL_COMMON_STARTMENU, false);
		string s = path.ToString();
	}
}


Richard Deeming

Нет необходимости в P / Invoke! :)

string s = Environment.GetFolderPath(Environment.SpecialFolder.CommonStartMenu);

Метод GetFolderPath / Microsoft Docs[^]

RickZeeland

Нет, это необходимо, потому что он хочет решение .NET 3.5, а CommonStartMenu был добавлен только из .NET 4 :) :)

Richard Deeming

А! Я подумал, что, должно быть, что-то упустил. :)