The windows api code pack

The windows api code pack

1 contributor

Users who have contributed to this file

// Copyright (c) Microsoft Corporation. All rights reserved.
using System . Collections ;
using System . Collections . Generic ;
using System . Collections . ObjectModel ;
using System . Diagnostics ;
using System . Runtime . InteropServices ;
using Microsoft . WindowsAPICodePack . Shell ;
namespace Microsoft . WindowsAPICodePack . Dialogs
<
/// summary >
/// Creates a Vista or Windows 7 Common File Dialog, allowing the user to select one or more files.
/// summary >
///
public sealed class CommonOpenFileDialog : CommonFileDialog
<
private NativeFileOpenDialog openDialogCoClass ;
/// summary >
/// Creates a new instance of this class.
/// summary >
public CommonOpenFileDialog ()
: base ()
<
// For Open file dialog, allow read only files.
base . EnsureReadOnly = true ;
>
/// summary >
/// Creates a new instance of this class with the specified name.
/// summary >
/// param name = » name » >The name of this dialog. param >
public CommonOpenFileDialog ( string name )
: base ( name )
<
// For Open file dialog, allow read only files.
base . EnsureReadOnly = true ;
>
# region Public API specific to Open
/// summary >
/// Gets a collection of the selected file names.
/// summary >
/// remarks >This property should only be used when the
/// see cref = » CommonOpenFileDialog.Multiselect »/>
/// property is b >true b >. remarks >
public IEnumerable string > FileNames
<
get
<
CheckFileNamesAvailable ();
return base . FileNameCollection ;
>
>
/// summary >
/// Gets a collection of the selected items as ShellObject objects.
/// summary >
/// remarks >This property should only be used when the
/// see cref = » CommonOpenFileDialog.Multiselect »/>
/// property is b >true b >. remarks >
public ICollection ShellObject > FilesAsShellObject
<
get
<
// Check if we have selected files from the user.
CheckFileItemsAvailable ();
// temp collection to hold our shellobjects
ICollection ShellObject > resultItems = new Collection ShellObject >();
// Loop through our existing list of filenames, and try to create a concrete type of
// ShellObject (e.g. ShellLibrary, FileSystemFolder, ShellFile, etc)
foreach ( IShellItem si in items )
<
resultItems . Add ( ShellObjectFactory . Create ( si ));
>
return resultItems ;
>
>
private bool multiselect ;
/// summary >
/// Gets or sets a value that determines whether the user can select more than one file.
/// summary >
public bool Multiselect
<
get
set
>
private bool isFolderPicker ;
/// summary >
/// Gets or sets a value that determines whether the user can select folders or files.
/// Default value is false.
/// summary >
public bool IsFolderPicker
<
get
set
>
private bool allowNonFileSystem ;
/// summary >
/// Gets or sets a value that determines whether the user can select non-filesystem items,
/// such as b >Library b >, b >Search Connectors b >, or b >Known Folders b >.
/// summary >
public bool AllowNonFileSystemItems
<
get
set
>
# endregion
internal override IFileDialog GetNativeFileDialog ()
<
Debug . Assert ( openDialogCoClass != null , » Must call Initialize() before fetching dialog interface » );
return ( IFileDialog ) openDialogCoClass ;
>
internal override void InitializeNativeFileDialog ()
<
if ( openDialogCoClass == null )
<
openDialogCoClass = new NativeFileOpenDialog ();
>
>
internal override void CleanUpNativeFileDialog ()
<
if ( openDialogCoClass != null )
<
Marshal . ReleaseComObject ( openDialogCoClass );
>
>
internal override void PopulateWithFileNames ( Collection string > names )
<
IShellItemArray resultsArray ;
uint count ;
openDialogCoClass . GetResults ( out resultsArray );
resultsArray . GetCount ( out count );
names . Clear ();
for ( int i = 0 ; i count ; i ++ )
<
names . Add ( GetFileNameFromShellItem ( GetShellItemAt ( resultsArray , i )));
>
>
internal override void PopulateWithIShellItems ( Collection IShellItem > items )
<
IShellItemArray resultsArray ;
uint count ;
openDialogCoClass . GetResults ( out resultsArray );
resultsArray . GetCount ( out count );
items . Clear ();
for ( int i = 0 ; i count ; i ++ )
<
items . Add ( GetShellItemAt ( resultsArray , i ));
>
>
internal override ShellNativeMethods. FileOpenOptions GetDerivedOptionFlags (ShellNativeMethods. FileOpenOptions flags )
<
if ( multiselect )
<
flags |= ShellNativeMethods . FileOpenOptions . AllowMultiSelect ;
>
if ( isFolderPicker )
<
flags |= ShellNativeMethods . FileOpenOptions . PickFolders ;
>
if ( ! allowNonFileSystem )
<
flags |= ShellNativeMethods . FileOpenOptions . ForceFilesystem ;
>
else if ( allowNonFileSystem )
<
flags |= ShellNativeMethods . FileOpenOptions . AllNonStorageItems ;
>
return flags ;
>
>
>

You can’t perform that action at this time.

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.

Windows API Code Pack для .NET Framework

Недавно вышла библиотека Windows API Code Pack 1.0.1. Это не крупное обновление с множеством новых функций, а, скорее, версия, направленная на исправление ошибок, повышение производительности, добавление примеров и обновление нескольких функций (новые оболочки и т.д).

Но прежде чем углубиться в новую версию Windows Code Pack, давайте рассмотрим, что же он из себя представляет.

Windows 7 предлагает такие новые функции, как, например, панель задач, библиотеки, платформа Sensor and Location. Эти функции предполагают новые сценарии и предоставляют разработчикам новые возможности, чтобы лучшим образом адаптировать свои приложения для Windows 7. Все эти функции доступны через Win32 API. На данный момент в .NET Framework нет пространства имен «Windows 7», и также нет простого способа использовать эти функции из приложений, написанных на управляемом коде. Чтобы упростить доступ к ним разработчикам, использующим управляемый код, в августе мы выпустили 1.0 версию Windows API Code Pack for .NET Framework (сразу после Windows 7 RTM).

Windows API Code Pack – это бесплатная библиотека управляемых исходных кодов, поставляемая Microsoft как есть. Вы должны относиться к ней, как если бы сами написали ее, как если бы это был ваш собственный код. Она охватывает множество новых функций Windows 7, а также некоторые из наиболее важных функций Windows Vista. Можете считать Windows API Code Pack вещью наиболее близкой к «официальному» управляемому API для Windows. Но следует помнить, что служба поддержки Microsoft не обеспечивает этому продукту 24х7 поддержку. Мы верим, что это – замечательное решение и что база кода является очень надежной и высококачественной.

Наша цель, которую мы ставим, выпуская Code Pack, заключается в том, чтобы позволить разработчикам, использующим управляемый код, использовать преимущества программируемых интерфейсов Windows, не являющихся частью .NET Framework. Нам кажется, что в качестве общедоступного исходного кода Windows API Code Pack, отделенный от библиотек среды исполнения .NET, дает оптимальный компромисс между Microsoft Win32 и управляемой оболочкой. Следует отметить короткий цикл разработки – мы выпустили Windows API Code Pack всего через месяц после Win7 RTM; кроме того, мы выпускаем полные исходные коды библиотеки.

В состав Windows API Code Pack входит большое число управляемых API для Windows (7). Например:

  • Тесная интеграция с пространством имен Windows Shell, включая поддержку набора свойств Windows Shell, предоставляющего такие элементы управления, как обозреватель проводника, и доступ к Windows Libraries.
  • Полное соответствие функций с неуправляемым Taskbar API (программируемым интерфейсом панели задач), включая (но не ограничиваясь) списки переходов (Jump Lists), дополнительные значки (Icon Overlay), индикатор выполнения (Progress bar), эскизы (Thumbnail), настраиваемый переключатель, кнопка эскизов (Thumbnail Button) и т.д.
  • Windows Task Dialog, другие элементы управления
  • Поддержка API Direct3D 11.0 и DXGI 1.0/1.1
  • Поддержка API Sensor Platform
  • API Extended Linguistic Services
  • Windows Restart Manager
  • API электропитания
  • И многие другие функции

Каждая технология, представленная в Windows API Code Pack, сопровождается рядом демонстраций и примеров (включая исходные коды) на C# и VB. Мы планируем выпускать обновления для Windows API Code Pack приблизительно каждые три месяца. Мы будем работать над стабильностью (то есть исправлением ошибок), ядром пакета, тестированием и документацией, а также над поддержкой новых функций (ориентируясь на обратную связь клиентов).

Вы можете задаться вопросом: «Почему Windows API Code Pack не входит в состав .NET Framework?»

Мы выпускаем открытый код, который можем включить в среду исполнения в будущем, если дальнейший рост ее размера окажется оправданным. Не забывайте, что .NET Framework работает как на Windows Vista, так и на Windows XP. Однако Windows 7 уже здесь, и мы хотим предоставить доступ к этому бесплатному, открытому набору исходных кодов раньше, а не позже. Мы выпускаем библиотеку в том виде, в каком она требуется сообществу и, как можете видеть, намереваемся обновлять ее в дальнейшем. В то время как эта версия (1.0.1) – небольшое обновление, в течение следующих нескольких месяцев мы планируем новый выпуск. Тем временем, вы пользуетесь преимуществами обоих измерений в пакете, который можете использовать целиком или частично без любых ограничений.

Другой вопрос, который можно задать: «Отпадет ли с появлением .NET 4 необходимость использования Windows API Code Pack?»

Когда выйдет .NET 4, вы сможете использовать его функции, связанные с Windows 7, в таких областях как панель задач, интеграция мультисенсорных устройств с WPF, поддержка DirectWrite и API местоположения посредством пространства имен Devices. Доступ к другим функциям, таким как библиотеки, Restart Manager и Sensors, будет и далее осуществляться посредством Windows API Code Pack.

Наконец, мы ожидаем откликов от сообщества – от вас, разработчиков на .NET, использующих эту библиотеку для написания на управляемом коде приложений для Windows 7. На веб-узле Windows API Code Pack вы можете задать вопрос, оставить отзыв, сообщить об ошибках и проследить за открытыми ошибками. Ваше участие очень важно для продолжения существования этой библиотеки, так что, пожалуйста, отправляйте нам свои отклики и вопросы.

Чтобы больше узнать о том, как использовать Windows API Code Pack, ознакомьтесь с тренингом по Windows 7 на Channel 9.

WindowsAPICodePack- Core 1.1.2

Core library for Windows API Code Pack

Release Notes

See CHANGELOG in project site.

Dependencies

This package has no dependencies.

Used By

NuGet packages (8)

Showing the top 5 NuGet packages that depend on WindowsAPICodePack-Core:

Package Downloads
WindowsAPICodePack-Shell

GitHub repositories (23)

Showing the top 5 popular GitHub repositories that depend on WindowsAPICodePack-Core:

Repository Stars
canton7/SyncTrayzor

Version History

Version Downloads Last updated
1.1.2 438 400 01.02.2016
1.1.1 318 252 24.10.2014
1.1.0 28 481 19.01.2014
    last updated 01.02.2016 Project SiteLicense InfoContact ownersReportDownload package (68.65 KB) Open in Package Explorer
  • Open in FuGet Package Explorer

Statistics

    785 133 total downloads 438 400 downloads of current version 296 downloads per day (avg)

View full stats

Owners

Authors

Share

Got questions about NuGet or the NuGet Gallery?

Find out the service status of NuGet.org and its related services.

Read the Frequently Asked Questions about NuGet and see if your question made the list.

Читайте также:  Microsoft docker windows server
Оцените статью