Windows api windows shell

Windows Shell

The Windows UI provides users with access to a wide variety of objects necessary for running applications and managing the operating system. The most numerous and familiar of these objects are the folders and files that reside on computer disk drives. There are also a number of virtual objects that allow the user to perform tasks such as sending files to remote printers or accessing the Recycle Bin. The Shell organizes these objects into a hierarchical namespace and provides users and applications with a consistent and efficient way to access and manage objects.

Shell Development Scenarios

The following development scenarios relate to application development:

  • Extending the Shell, which consists of creating a data source (versus consuming the Shell data model)
  • Implementing a subset of the Shell data source tasks
  • Supporting libraries and item views in Windows Explorer
  • Using the common file dialog
  • Implementing Control Panel items
  • Managing notifications

The following development scenarios relate to file format ownership:

  • Implementing a subset of the Shell data source tasks
  • Implementing any handler
  • Supporting desktop search

The following development scenarios relate to data storage ownership:

  • Supporting desktop search and OpenSearch
  • Implementing a subset of the Shell data source tasks (virtual folders)
  • Supporting libraries in Windows Explorer

The following development scenario relates to device support:

  • Auto run and auto play

Windows Shell SDK Documentation

This documentation is broken into three major sections:

  • The Shell Developer’s Guide provides conceptual material about how the Shell works and how to use the Shell’s API in your application.
  • The Shell Reference section documents programming elements that make up the various Shell APIs.
  • Shell SDK Samples provides links to Shell samples. Most samples can be downloaded from MSDN Code Gallery. All samples are included in the Windows SDK.

The following table provides an outline of the Shell Reference section. Unless otherwise noted, all programming elements are documented in unmanaged C++.

Запуск приложений (ShellExecute, ShellExecuteEx, ШЕЛЛЕКСЕКУТЕИНФО)

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

Использование ShellExecute и ShellExecuteEx

Чтобы использовать ShellExecute или ShellExecuteEx, приложение должно указать объект файла или папки, к которому будет применена операция, и команду , указывающую операцию. Для ShellExecute присвойте эти значения соответствующим параметрам. Для ShellExecuteEx заполните соответствующие элементы структуры шеллексекутеинфо . Существует также несколько других элементов или параметров, которые можно использовать для точной настройки поведения двух функций.

Читайте также:  Linux set group permissions

Объекты файлов и папок могут быть частью файловой системы или виртуальных объектов, и их можно идентифицировать по путям или указателям на списки идентификаторов элементов (PIDL).

Команды объекта

Команды, доступные для объекта, по сути являются элементами, которые находятся в контекстном меню объекта. Чтобы узнать, какие команды доступны, просмотрите реестр в разделе

HKey _ _Корень классов \ CLSID \ \ \ команда оболочки

где _ CLSID объекта — это идентификатор класса (CLSID) объекта, а глагол — имя доступной команды. Подключ \ команды verb содержит данные, указывающие, что происходит при вызове этой команды.

Чтобы узнать, какие команды доступны для предопределенных объектов оболочки, просмотрите раздел реестра в разделе

HKey _ Классы _ корневого \ объекта _ имя класса \ \ команда оболочки

где _ имя объекта — это имя предопределенного объекта оболочки. Опять же, \ подраздел команды verb содержит данные, указывающие, что происходит при вызове этой команды.

Часто доступные команды включают:

Команда Описание
изменение; Запускает редактор и открывает документ для редактирования.
поиск Инициирует поиск, начиная с указанного каталога.
open Запускает приложение. Если этот файл не является исполняемым файлом, запускается связанное с ним приложение.
print Выводит файл документа.
properties Отображает свойства объекта.
запуск от имени Запускает приложение от имени администратора. Контроль учетных записей (UAC) предложит пользователю подтвердить согласие на
Запустите приложение с повышенными правами или введите учетные данные администратора, используемого для запуска
приложении Aha!.

Каждая команда соответствует команде, которая будет использоваться для запуска приложения из окна консоли. Хорошим примером является команда Open , так как она обычно поддерживается. Для файлов exe программа Open просто запускает приложение. Однако чаще используется для запуска приложения, которое работает с определенным файлом. Например, файлы. txt могут быть открыты в Microsoft WordPad. Таким образом, команда Open для TXT-файла будет соответствовать примерно следующей команде:

При использовании ShellExecute или ShellExecuteEx для открытия TXT-файла Wordpad.exe запускается с указанным файлом в качестве аргумента. Некоторые команды могут иметь дополнительные аргументы, например флаги, которые можно добавить при необходимости для правильного запуска приложения. Дальнейшее обсуждение контекстных меню и глаголов см. в разделе расширение контекстных меню.

Как правило, попытка определить список доступных команд для определенного файла немного сложна. Во многих случаях можно просто установить для параметра Лпверб значение NULL, которое вызывает команду по умолчанию для типа файла. Эта процедура обычно эквивалентна установке лпверб в значение «Open», но некоторые типы файлов могут иметь разные команды по умолчанию. Дополнительные сведения см. в разделе расширение контекстных меню и справочная документация по ShellExecuteEx .

Использование ShellExecuteEx для предоставления служб активации с сайта

Службы цепочки сайтов могут управлять множеством поведений активации элементов. Начиная с Windows 8, можно указать указатель на цепочку сайтов, чтобы ShellExecuteEx для включения этих поведений. Чтобы предоставить сайт ShellExecuteEx:

  • Укажите параметр см _ _ . флаг маски _ хинст _ — _ флаг сайта в элементе фмаск элемента шеллексекутеинфо.
  • Укажите IUnknown в члене хинстапп объекта шеллексекутеинфо.

Использование ShellExecute для запуска диалогового окна поиска

Когда пользователь щелкает правой кнопкой мыши значок папки в проводнике Windows, один из пунктов меню — «Search» (Поиск). При выборе этого элемента оболочка запускает свою служебную программу поиска. Эта программа отображает диалоговое окно, которое можно использовать для поиска в файлах указанной текстовой строки. Приложение может программно запустить программу поиска для каталога путем вызова ShellExecuteс параметром «Find» в качестве параметра лпверб , а путь к каталогу — как параметр лпфиле . Например, следующая строка кода запускает программу поиска для каталога c: \ мипрограмс.

Простой пример использования ShellExecuteEx

В следующем примере консольного приложения показано использование ShellExecuteEx. Для ясности опущена большая часть кода проверки ошибок.

Приложение сначала извлекает ПИДЛ каталога Windows и перечисляет его содержимое до тех пор, пока не найдет первый файл. bmp. В отличие от предыдущего примера, ишеллфолдер:: жетдисплайнамеоф используется для получения имени синтаксического анализа файла вместо его отображаемого имени. Так как это папка файловой системы, имя синтаксического анализа — это полный путь, который необходим для ShellExecuteEx.

Windows Shell

The Windows UI provides users with access to a wide variety of objects necessary for running applications and managing the operating system. The most numerous and familiar of these objects are the folders and files that reside on computer disk drives. There are also a number of virtual objects that allow the user to perform tasks such as sending files to remote printers or accessing the Recycle Bin. The Shell organizes these objects into a hierarchical namespace and provides users and applications with a consistent and efficient way to access and manage objects.

Shell Development Scenarios

The following development scenarios relate to application development:

  • Extending the Shell, which consists of creating a data source (versus consuming the Shell data model)
  • Implementing a subset of the Shell data source tasks
  • Supporting libraries and item views in Windows Explorer
  • Using the common file dialog
  • Implementing Control Panel items
  • Managing notifications

The following development scenarios relate to file format ownership:

  • Implementing a subset of the Shell data source tasks
  • Implementing any handler
  • Supporting desktop search

The following development scenarios relate to data storage ownership:

  • Supporting desktop search and OpenSearch
  • Implementing a subset of the Shell data source tasks (virtual folders)
  • Supporting libraries in Windows Explorer

The following development scenario relates to device support:

  • Auto run and auto play

Windows Shell SDK Documentation

This documentation is broken into three major sections:

  • The Shell Developer’s Guide provides conceptual material about how the Shell works and how to use the Shell’s API in your application.
  • The Shell Reference section documents programming elements that make up the various Shell APIs.
  • Shell Samples provides links to related code samples.

The following table provides an outline of the Shell Reference section. Unless otherwise noted, all programming elements are documented in unmanaged C++.

System. Windows. Shell Пространство имен

Содержит типы, предоставляющие доступ к расширенным функциям панели задач Windows 7 с использованием управляемого кода. Contains types that provide managed code access to the enhanced functionality of the Windows 7 taskbar.

Классы

Представляет базовый класс для классов JumpPath и JumpTask. Represents the base class for the JumpPath and JumpTask classes.

Предоставляет данные для события JumpItemsRejected. Provides data for the JumpItemsRejected event.

Предоставляет данные для события JumpItemsRemovedByUser. Provides data for the JumpItemsRemovedByUser event.

Представляет список элементов и задач, отображаемых на кнопке панели задач Windows 7 в виде меню. Represents a list of items and tasks displayed as a menu on a Windows 7 taskbar button.

Представляет ссылку на файл, отображаемую в списке переходов на панели задач Windows 7. Represents a link to a file that is displayed in a Windows 7 taskbar Jump List.

Представляет ярлык приложения в списке переходов на панели задач Windows 7. Represents a shortcut to an application in the Windows 7 taskbar Jump List.

Представляет сведения об отображении эскиза панели задач. Represents information about how the taskbar thumbnail is displayed.

Представляет сведения об отображении кнопки на эскизе панели задач Windows 7. Represents information about how to display a button in the Windows 7 taskbar thumbnail.

Представляет коллекцию объектов ThumbButtonInfo, связанных с Window. Represents a collection of ThumbButtonInfo objects that are associated with a Window.

Представляет объект, описывающий настройки неклиентской области окна. Represents an object that describes the customizations to the non-client area of a window.

Перечисления

Описывает, почему оболочке Windows не удалось добавить объект JumpItem в список переходов. Describes why a JumpItem could not be added to the Jump List by the Windows shell.

Задает константы, указывающее, какие границы рамки окна не принадлежат клиенту. Specifies constants that indicate which edges of the window frame are not owned by the client.

Задает константы, указывающее направление поведения захвата для изменения размера на элементе ввода. Specifies constants that indicate the direction of the resize grip behavior on an input element.

Определяет состояние индикатора хода выполнения на панели задач Windows. Specifies the state of the progress indicator in the Windows taskbar.

.NET 4.0 — Microsoft.Windows.Shell — where is it?

I’m playing around with the examples for the Sofa V2.5, which is a WPF Docking framework.

These are VS2010, .NET 4.0. In one project, there’s a reference to a «Microsoft.Windows.Shell» assembly, which is unresolved.

When I open the Add Reference and look for .NET assemblies, I don’t see Microsoft.Windows.Shell. Why not? I’m running VS2010 on Windows 7. How can it be missing? If it’s not missing, why can’t VS2010 see it?

6 Answers 6

It is probably included with this : Ribbon (WPF)

It has a NuGet package now:

Update June 2020: Based on update provided by @yaron in the comments, this package is no longer available. As the NuGet page states:

The owner has unlisted this package. This could mean that the package is deprecated or shouldn’t be used anymore.

Get it from NuGet:

Note the addition of -Version 3.0.1 , without this addition an error will be received.

In Microsoft Visual Studio go to

Tools>>NuGet Package Manager>>Package Manager Console

type this in the Package Manager Console window

Оцените статью