參考 +下載))*{ C#, VB.NET, C++,
JavaScript, HTML >/*
*This sample pack includes all the app code
examples developed and updated for Windows 8.1 Preview. The sample pack provides a convenient
way to download all the samples at once.
The samples in this sample pack are available in C#, C++, and JavaScript >.*
**Get the Windows 8.1 Preview downloads**
**
2013/7/9*****
**譯文
**
---Windows 8.1 Preview. The sample pack provides a convenient way to download all the
samples at once. The samples in this sample pack are available in C#, C++, and JavaScript.
The Windows Samples Gallery contains a variety of code samples that exercise the various
new programming models, platforms, features, and components available in Windows 8.1 --
--Preview and/or Windows Server 2012 R2 Preview. These downloadable samples are provided as
compressed ZIP files that contain a Visual Studio solution (SLN) file for the sample, along with
the source files, assets, resources, and metadata necessary to successfully compile and run the
sample. For more information about the programming models, platforms, languages, and APIs
demonstrated in this sample, please refer to the guidance, tutorials, and reference topics provided
in the Windows 8.1 Preview documentation available in the Windows Developer Center.
This sample is provided as-is in order to indicate or demonstrate the functionality of the
programming models and feature APIs for Windows 8.1 Preview and/or
Windows Server 2012 R2 Preview. **
This pack may be very large and take some time to download **
**瀏覽範例要求**
**JavaScript **
**
**FileAccess.vcxproj**( office )**
*
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|ARM">
<Configuration>Debug</Configuration>
<Platform>ARM</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM">
<Configuration>Release</Configuration>
<Platform>ARM</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{C5B886A7-8300-46FF-B533-9613DE2AF637}</ProjectGuid>
<RootNamespace>SDKSample</RootNamespace>
<DefaultLanguage>en-US</DefaultLanguage>
<MinimumVisualStudioVersion>12.0</MinimumVisualStudioVersion>
<AppContainerApplication>true</AppContainerApplication>
<ProjectName>FileAccess</ProjectName>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<ItemDefinitionGroup>
<ClCompile>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
</ClCompile>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="Constants.h" />
<ClInclude Include="MainPage.xaml.h">
<DependentUpon>MainPage.xaml</DependentUpon>
</ClInclude>
<ClInclude Include="pch.h" />
<ClInclude Include="Common\LayoutAwarePage.h" />
<ClInclude Include="Common\SuspensionManager.h" />
<ClInclude Include="App.xaml.h">
<DependentUpon>App.xaml</DependentUpon>
</ClInclude>
<ClInclude Include="Scenario1.xaml.h">
<DependentUpon>Scenario1.xaml</DependentUpon>
</ClInclude>
<ClInclude Include="Scenario2.xaml.h">
<DependentUpon>Scenario2.xaml</DependentUpon>
</ClInclude>
<ClInclude Include="Scenario3.xaml.h">
<DependentUpon>Scenario3.xaml</DependentUpon>
</ClInclude>
<ClInclude Include="Scenario4.xaml.h">
<DependentUpon>Scenario4.xaml</DependentUpon>
<SubType>Code</SubType>
</ClInclude>
<ClInclude Include="Scenario5.xaml.h">
<DependentUpon>Scenario5.xaml</DependentUpon>
<SubType>Code</SubType>
</ClInclude>
<ClInclude Include="Scenario6.xaml.h">
<DependentUpon>Scenario6.xaml</DependentUpon>
<SubType>Code</SubType>
</ClInclude>
<ClInclude Include="Scenario7.xaml.h">
<DependentUpon>Scenario7.xaml</DependentUpon>
<SubType>Code</SubType>
</ClInclude>
<ClInclude Include="Scenario8.xaml.h">
<DependentUpon>Scenario8.xaml</DependentUpon>
<SubType>Code</SubType>
</ClInclude>
<ClInclude Include="Scenario9.xaml.h">
<DependentUpon>Scenario9.xaml</DependentUpon>
<SubType>Code</SubType>
</ClInclude>
<ClInclude Include="Scenario10.xaml.h">
<DependentUpon>Scenario10.xaml</DependentUpon>
<SubType>Code</SubType>
</ClInclude>
<ClInclude Include="Scenario11.xaml.h">
<DependentUpon>Scenario11.xaml</DependentUpon>
<SubType>Code</SubType>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ApplicationDefinition Include="App.xaml">
<SubType>Designer</SubType>
</ApplicationDefinition>
<Page Include="Common\StandardStyles.xaml">
<SubType>Designer</SubType>
</Page>
<Page Include="MainPage.xaml">
<SubType>Designer</SubType>
</Page>
<Page Include="Sample-Utils\SampleTemplateStyles.xaml">
<SubType>Designer</SubType>
</Page>
<Page Include="Scenario1.xaml">
<SubType>Designer</SubType>
</Page>
<Page Include="Scenario2.xaml">
<SubType>Designer</SubType>
</Page>
<Page Include="Scenario3.xaml">
<SubType>Designer</SubType>
</Page>
<Page Include="Scenario4.xaml">
<SubType>Designer</SubType>
</Page>
<Page Include="Scenario5.xaml">
<SubType>Designer</SubType>
</Page>
<Page Include="Scenario6.xaml">
<SubType>Designer</SubType>
</Page>
<Page Include="Scenario7.xaml">
<SubType>Designer</SubType>
</Page>
<Page Include="Scenario8.xaml">
<SubType>Designer</SubType>
</Page>
<Page Include="Scenario9.xaml">
<SubType>Designer</SubType>
</Page>
<Page Include="Scenario10.xaml">
<SubType>Designer</SubType>
</Page>
<Page Include="Scenario11.xaml">
<SubType>Designer</SubType>
</Page>
</ItemGroup>
<ItemGroup>
<AppxManifest Include="Package.appxmanifest">
<SubType>Designer</SubType>
</AppxManifest>
</ItemGroup>
<ItemGroup>
<ClCompile Include="App.xaml.cpp">
<DependentUpon>App.xaml</DependentUpon>
</ClCompile>
<ClCompile Include="Common\LayoutAwarePage.cpp" />
<ClCompile Include="Common\SuspensionManager.cpp" />
<ClCompile Include="MainPage.xaml.cpp">
<DependentUpon>MainPage.xaml</DependentUpon>
</ClCompile>
<ClCompile Include="Constants.cpp" />
<ClCompile Include="Scenario1.xaml.cpp">
<DependentUpon>Scenario1.xaml</DependentUpon>
</ClCompile>
<ClCompile Include="Scenario2.xaml.cpp">
<DependentUpon>Scenario2.xaml</DependentUpon>
</ClCompile>
<ClCompile Include="Scenario3.xaml.cpp">
<DependentUpon>Scenario3.xaml</DependentUpon>
</ClCompile>
<ClCompile Include="Scenario4.xaml.cpp">
<DependentUpon>Scenario4.xaml</DependentUpon>
<SubType>Code</SubType>
</ClCompile>
<ClCompile Include="Scenario5.xaml.cpp">
<DependentUpon>Scenario5.xaml</DependentUpon>
<SubType>Code</SubType>
</ClCompile>
<ClCompile Include="Scenario6.xaml.cpp">
<DependentUpon>Scenario6.xaml</DependentUpon>
<SubType>Code</SubType>
</ClCompile>
<ClCompile Include="Scenario7.xaml.cpp">
<DependentUpon>Scenario7.xaml</DependentUpon>
<SubType>Code</SubType>
</ClCompile>
<ClCompile Include="Scenario8.xaml.cpp">
<DependentUpon>Scenario8.xaml</DependentUpon>
<SubType>Code</SubType>
</ClCompile>
<ClCompile Include="Scenario9.xaml.cpp">
<DependentUpon>Scenario9.xaml</DependentUpon>
<SubType>Code</SubType>
</ClCompile>
<ClCompile Include="Scenario10.xaml.cpp">
<DependentUpon>Scenario10xaml</DependentUpon>
<SubType>Code</SubType>
</ClCompile>
<ClCompile Include="Scenario11.xaml.cpp">
<DependentUpon>Scenario11.xaml</DependentUpon>
<SubType>Code</SubType>
</ClCompile>
<ClCompile Include="pch.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Image Include="Assets\microsoft-sdk.png" />
<Image Include="Assets\placeholder-sdk.png" />
<Image Include="Assets\smallTile-sdk.png" />
<Image Include="Assets\splash-sdk.png" />
<Image Include="Assets\squareTile-sdk.png" />
<Image Include="Assets\storeLogo-sdk.png" />
<Image Include="Assets\tile-sdk.png" />
<Image Include="Assets\windows-sdk.png" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
*
**App.xaml*( office )*
*
//*********************************************************
//
// Copyright (c) Microsoft. All rights reserved.
//
//*********************************************************
//
// App.xaml.cpp
// Implementation of the App.xaml class.
//
#include "pch.h"
#include "MainPage.xaml.h"
#include "Common\SuspensionManager.h"
using namespace SDKSample;
using namespace SDKSample::Common;
using namespace Concurrency;
using namespace Platform;
using namespace Windows::ApplicationModel;
using namespace Windows::ApplicationModel::Activation;
using namespace Windows::Foundation;
using namespace Windows::Foundation::Collections;
using namespace Windows::UI::Core;
using namespace Windows::UI::Xaml;
using namespace Windows::UI::Xaml::Controls;
using namespace Windows::UI::Xaml::Controls::Primitives;
using namespace Windows::UI::Xaml::Data;
using namespace Windows::UI::Xaml::Input;
using namespace Windows::UI::Xaml::Interop;
using namespace Windows::UI::Xaml::Media;
using namespace Windows::UI::Xaml::Navigation;
/// <summary>
/// Initializes the singleton application object. This is the first line of authored code
/// executed, and as such is the logical equivalent of main() or WinMain().
/// </summary>
App::App()
{
InitializeComponent();
this->Suspending += ref new SuspendingEventHandler(this, &SDKSample::App::OnSuspending);
}
/// <summary>
/// Invoked when the application is launched normally by the end user. Other entry points will
/// be used when the application is launched to open a specific file, to display search results,
/// and so forth.
/// </summary>
/// <param name="args">Details about the launch request and process.</param>
void App::OnLaunched(LaunchActivatedEventArgs^ args)
{
auto rootFrame = dynamic_cast<Frame^>(Window::Current->Content);
// Do not repeat app initialization when the Window already has content,
// just ensure that the window is active
if (rootFrame == nullptr)
{
// Create a Frame to act as the navigation context and associate it with
// a SuspensionManager key
rootFrame = ref new Frame();
SuspensionManager::RegisterFrame(rootFrame, "AppFrame");
auto prerequisite = task<void>([](){});
if (args->PreviousExecutionState == ApplicationExecutionState::Terminated)
{
// Restore the saved session state only when appropriate, scheduling the
// final launch steps after the restore is complete
prerequisite = SuspensionManager::RestoreAsync();
}
prerequisite.then([=](task<void> prerequisite)
{
try
{
prerequisite.get();
}
catch (Platform::Exception^)
{
//Something went wrong restoring state.
//Assume there is no state and continue
}
if (rootFrame->Content == nullptr || args->Arguments != nullptr)
{
// When the navigation stack isn't restored or there are launch arguments
// indicating an alternate launch (e.g.: via toast or secondary tile),
// navigate to the appropriate page, configuring the new page by passing required
// information as a navigation parameter
if (!rootFrame->Navigate(TypeName(MainPage::typeid), args->Arguments))
{
throw ref new FailureException("Failed to create initial page");
}
}
// Place the frame in the current Window
Window::Current->Content = rootFrame;
// Ensure the current window is active
Window::Current->Activate();
}, task_continuation_context::use_current());
}
else
{
if (rootFrame->Content == nullptr || args->Arguments != nullptr)
{
// When the navigation stack isn't restored or there are launch arguments
// indicating an alternate launch (e.g.: via toast or secondary tile),
// navigate to the appropriate page, configuring the new page by passing required
// information as a navigation parameter
if (!rootFrame->Navigate(TypeName(MainPage::typeid), args->Arguments))
{
throw ref new FailureException("Failed to create initial page");
}
}
// Ensure the current window is active
Window::Current->Activate();
}
}
/// <summary>
/// Invoked when application execution is being suspended. Application state is saved
/// without knowing whether the application will be terminated or resumed with the contents
/// of memory still intact.
/// </summary>
/// <param name="sender">The source of the suspend request.</param>
/// <param name="e">Details about the suspend request.</param>
void App::OnSuspending(Object^ sender, SuspendingEventArgs^ e)
{
(void) sender; // Unused parameter
auto deferral = e->SuspendingOperation->GetDeferral();
SuspensionManager::SaveAsync().then([=]()
{
deferral->Complete();
});
} *
**
如果您不是 MSDN 訂閱者,可以從 評估中心下載 Windows 8 的評估版本
(請注意,此版本將會過期,而且無法升級) **
***
應用程式的工具。其中包含 Windows 8 SDK、Blend for Visual Studio 和
專案範本。您必須先安裝 Windows 8。 取得詳細資訊和其他語言。
***
**
Windows 軟體開發套件 (SDK)。Windows 8 SDK 可依照您選擇的
語言包含標頭、程式庫,以及建立 Windows 市集應用程式所需的工具
(包含 Windows 應用程式認證套件)。 深入了解 Windows 8 SDK **
****
***
**
市集應用程式。如需詳細資訊,請參閱 撰寫 Windows 市集應用程式的程式碼。
*
***
取得 Windows 8 Ads SDK
**
取得 Windows Azure 行動服務 ***
*** http://msdn.microsoft.com/zh-TW/windows/apps/br229516 *
*** http://social.msdn.microsoft.com/Forums/windowsapps/zh-tw/home?category=windowsapps&filter=alllanguages&sort=lastpostdesc&page=1 *
**
Windows 8.1 Preview Code Samples
This sample pack includes all the app code examples developed and updated for ------Windows 8.1 Preview. The sample pack provides a convenient way to download all the
samples at once. The samples in this sample pack are available in C#, C++, and JavaScript.
The Windows Samples Gallery contains a variety of code samples that exercise the various
new programming models, platforms, features, and components available in Windows 8.1 --
--Preview and/or Windows Server 2012 R2 Preview. These downloadable samples are provided as
compressed ZIP files that contain a Visual Studio solution (SLN) file for the sample, along with
the source files, assets, resources, and metadata necessary to successfully compile and run the
sample. For more information about the programming models, platforms, languages, and APIs
demonstrated in this sample, please refer to the guidance, tutorials, and reference topics provided
in the Windows 8.1 Preview documentation available in the Windows Developer Center.
This sample is provided as-is in order to indicate or demonstrate the functionality of the
programming models and feature APIs for Windows 8.1 Preview and/or
Windows Server 2012 R2 Preview. **
This pack may be very large and take some time to download **
**瀏覽範例要求**
**JavaScript **
**
此範例已經由 Windows SDK team 驗證並測試。
Official Windows SDK Sample
- Microsoft
Official Windows SDK Sample MSFT
Windows SDK samples are developed and tested by the
Windows team to ensure that you have a great experience.
View samples
The Geolocation sample demonstrates how to use the
Windows.Devices
geographic location of the user's device.
|
學習焦點
|
此範例已經由 Windows SDK team 驗證並測試。
Official Windows SDK Sample
- Microsoft
Official Windows SDK Sample MSFT
Windows SDK samples are developed and tested by the
Windows team to ensure that you have a great experience.
View samples
This sample pack includes all the app code examples developed and updated for Windows 8.1 Preview. The sample pack provides a
convenient way to download all the samples at once. The samples
in this sample pack are available in C#, C++, and JavaScript.
|
2011/9/14
789,503
下載專區
|
此範例已經由 Windows SDK team 驗證並測試。
Official Windows SDK Sample
- Microsoft
Official Windows SDK Sample MSFT
Windows SDK samples are developed and tested by the Windows team to ensure that you have a great experience.
View samples
This sample demonstrates the Play To API.
|
(5)
2011/9/14
17,805 下載專區
|
This sample demonstrates how to create master-detail ListBox
in Windows Store app
|
(0)
2013/6/5
6,395 下載專區
|
此範例已經由 Windows SDK team 驗證並測試。
Official Windows SDK Sample
- Microsoft
Official Windows SDK Sample MSFT
Windows SDK samples are developed and tested by the Windows team to ensure that you have a great experience.
View samples
This sample shows how to create, read, write, copy and delete a file, how to retrieve file properties, and how to track a file or folder so that your app can access it again. This sample uses Windows.Storage and Windows.Storage
|
2011/9/14
111,424
下載專區
|
此範例已經由 Windows SDK team 驗證並測試。
Official Windows SDK Sample
- Microsoft
Official Windows SDK Sample MSFT
Windows SDK samples are developed and tested by the Windows team to ensure that you have a great experience.
View samples
This sample shows how to imitate the splash screen that Windows displays for your app by positioning a similar image correctly when Windows dismisses the splash screen that it displays. This sample uses the SplashScreen class in the Windows.Applica
|
2011/9/14
141,995
下載專區
|
此範例已經由 Windows SDK team 驗證並測試。
Official Windows SDK Sample
- Microsoft
Official Windows SDK Sample MSFT
Windows SDK samples are developed and tested by the Windows team to ensure that you have a great experience.
View samples
This sample shows how to use an app tile, which is the representation and launch point for your app in the Start screen, and a badge on that tile, which is a method for the app to relay status information to the user when the app is not running.
|
2012/2/29
下載專區
|
此範例已經由 Windows SDK team 驗證並測試。
Official Windows SDK Sample
- Microsoft
Official Windows SDK Sample MSFT
Windows SDK samples are developed and tested by the Windows team to ensure that you have a great experience.
View samples
This sample demonstrates how to use the application settings API and settings flyouts to integrate an app's settings UI with the Settings charm.
|
2012/2/29
下載專區
|
This sample provides completed versions of the apps you create by following the Create your first Windows Store app using JavaScript tutorial series.
|
2013/6/27
下載專區
|
此範例已經由 Windows SDK team 驗證並測試。
Official Windows SDK Sample
- Microsoft
Official Windows SDK Sample MSFT
Windows SDK samples are developed and tested by the Windows team to ensure that you have a great experience.
View samples
This sample shows you how demonstrates the use of the
HttpClient class in new Windows.Web.Htt
upload and download various types of content from an
HTTP server using the networking features provided by
the Windows Runtime.
|
2012/2/29
下載專區
|
Official Windows SDK Sample MSFT
Windows SDK samples are developed and tested by the
2011/9/14
下載專區
Windows team to ensure that you have a great experience.
View samples
This sample demonstrates how to use the MediaCapture API to capture video, audio, and pictures from a capture device, such as a webcam.
|
**FileAccess.vcxproj**( office )**
*
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|ARM">
<Configuration>Debug</Configuration>
<Platform>ARM</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM">
<Configuration>Release</Configuration>
<Platform>ARM</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{C5B886A7-8300-46FF-B533-9613DE2AF637}</ProjectGuid>
<RootNamespace>SDKSample</RootNamespace>
<DefaultLanguage>en-US</DefaultLanguage>
<MinimumVisualStudioVersion>12.0</MinimumVisualStudioVersion>
<AppContainerApplication>true</AppContainerApplication>
<ProjectName>FileAccess</ProjectName>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<ItemDefinitionGroup>
<ClCompile>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
</ClCompile>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="Constants.h" />
<ClInclude Include="MainPage.xaml.h">
<DependentUpon>MainPage.xaml</DependentUpon>
</ClInclude>
<ClInclude Include="pch.h" />
<ClInclude Include="Common\LayoutAwarePage.h" />
<ClInclude Include="Common\SuspensionManager.h" />
<ClInclude Include="App.xaml.h">
<DependentUpon>App.xaml</DependentUpon>
</ClInclude>
<ClInclude Include="Scenario1.xaml.h">
<DependentUpon>Scenario1.xaml</DependentUpon>
</ClInclude>
<ClInclude Include="Scenario2.xaml.h">
<DependentUpon>Scenario2.xaml</DependentUpon>
</ClInclude>
<ClInclude Include="Scenario3.xaml.h">
<DependentUpon>Scenario3.xaml</DependentUpon>
</ClInclude>
<ClInclude Include="Scenario4.xaml.h">
<DependentUpon>Scenario4.xaml</DependentUpon>
<SubType>Code</SubType>
</ClInclude>
<ClInclude Include="Scenario5.xaml.h">
<DependentUpon>Scenario5.xaml</DependentUpon>
<SubType>Code</SubType>
</ClInclude>
<ClInclude Include="Scenario6.xaml.h">
<DependentUpon>Scenario6.xaml</DependentUpon>
<SubType>Code</SubType>
</ClInclude>
<ClInclude Include="Scenario7.xaml.h">
<DependentUpon>Scenario7.xaml</DependentUpon>
<SubType>Code</SubType>
</ClInclude>
<ClInclude Include="Scenario8.xaml.h">
<DependentUpon>Scenario8.xaml</DependentUpon>
<SubType>Code</SubType>
</ClInclude>
<ClInclude Include="Scenario9.xaml.h">
<DependentUpon>Scenario9.xaml</DependentUpon>
<SubType>Code</SubType>
</ClInclude>
<ClInclude Include="Scenario10.xaml.h">
<DependentUpon>Scenario10.xaml</DependentUpon>
<SubType>Code</SubType>
</ClInclude>
<ClInclude Include="Scenario11.xaml.h">
<DependentUpon>Scenario11.xaml</DependentUpon>
<SubType>Code</SubType>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ApplicationDefinition Include="App.xaml">
<SubType>Designer</SubType>
</ApplicationDefinition>
<Page Include="Common\StandardStyles.xaml">
<SubType>Designer</SubType>
</Page>
<Page Include="MainPage.xaml">
<SubType>Designer</SubType>
</Page>
<Page Include="Sample-Utils\SampleTemplateStyles.xaml">
<SubType>Designer</SubType>
</Page>
<Page Include="Scenario1.xaml">
<SubType>Designer</SubType>
</Page>
<Page Include="Scenario2.xaml">
<SubType>Designer</SubType>
</Page>
<Page Include="Scenario3.xaml">
<SubType>Designer</SubType>
</Page>
<Page Include="Scenario4.xaml">
<SubType>Designer</SubType>
</Page>
<Page Include="Scenario5.xaml">
<SubType>Designer</SubType>
</Page>
<Page Include="Scenario6.xaml">
<SubType>Designer</SubType>
</Page>
<Page Include="Scenario7.xaml">
<SubType>Designer</SubType>
</Page>
<Page Include="Scenario8.xaml">
<SubType>Designer</SubType>
</Page>
<Page Include="Scenario9.xaml">
<SubType>Designer</SubType>
</Page>
<Page Include="Scenario10.xaml">
<SubType>Designer</SubType>
</Page>
<Page Include="Scenario11.xaml">
<SubType>Designer</SubType>
</Page>
</ItemGroup>
<ItemGroup>
<AppxManifest Include="Package.appxmanifest">
<SubType>Designer</SubType>
</AppxManifest>
</ItemGroup>
<ItemGroup>
<ClCompile Include="App.xaml.cpp">
<DependentUpon>App.xaml</DependentUpon>
</ClCompile>
<ClCompile Include="Common\LayoutAwarePage.cpp" />
<ClCompile Include="Common\SuspensionManager.cpp" />
<ClCompile Include="MainPage.xaml.cpp">
<DependentUpon>MainPage.xaml</DependentUpon>
</ClCompile>
<ClCompile Include="Constants.cpp" />
<ClCompile Include="Scenario1.xaml.cpp">
<DependentUpon>Scenario1.xaml</DependentUpon>
</ClCompile>
<ClCompile Include="Scenario2.xaml.cpp">
<DependentUpon>Scenario2.xaml</DependentUpon>
</ClCompile>
<ClCompile Include="Scenario3.xaml.cpp">
<DependentUpon>Scenario3.xaml</DependentUpon>
</ClCompile>
<ClCompile Include="Scenario4.xaml.cpp">
<DependentUpon>Scenario4.xaml</DependentUpon>
<SubType>Code</SubType>
</ClCompile>
<ClCompile Include="Scenario5.xaml.cpp">
<DependentUpon>Scenario5.xaml</DependentUpon>
<SubType>Code</SubType>
</ClCompile>
<ClCompile Include="Scenario6.xaml.cpp">
<DependentUpon>Scenario6.xaml</DependentUpon>
<SubType>Code</SubType>
</ClCompile>
<ClCompile Include="Scenario7.xaml.cpp">
<DependentUpon>Scenario7.xaml</DependentUpon>
<SubType>Code</SubType>
</ClCompile>
<ClCompile Include="Scenario8.xaml.cpp">
<DependentUpon>Scenario8.xaml</DependentUpon>
<SubType>Code</SubType>
</ClCompile>
<ClCompile Include="Scenario9.xaml.cpp">
<DependentUpon>Scenario9.xaml</DependentUpon>
<SubType>Code</SubType>
</ClCompile>
<ClCompile Include="Scenario10.xaml.cpp">
<DependentUpon>Scenario10xaml</DependentUpon>
<SubType>Code</SubType>
</ClCompile>
<ClCompile Include="Scenario11.xaml.cpp">
<DependentUpon>Scenario11.xaml</DependentUpon>
<SubType>Code</SubType>
</ClCompile>
<ClCompile Include="pch.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Image Include="Assets\microsoft-sdk.png" />
<Image Include="Assets\placeholder-sdk.png" />
<Image Include="Assets\smallTile-sdk.png" />
<Image Include="Assets\splash-sdk.png" />
<Image Include="Assets\squareTile-sdk.png" />
<Image Include="Assets\storeLogo-sdk.png" />
<Image Include="Assets\tile-sdk.png" />
<Image Include="Assets\windows-sdk.png" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
*
**App.xaml*( office )*
*
//*********************************************************
//
// Copyright (c) Microsoft. All rights reserved.
//
//*********************************************************
//
// App.xaml.cpp
// Implementation of the App.xaml class.
//
#include "pch.h"
#include "MainPage.xaml.h"
#include "Common\SuspensionManager.h"
using namespace SDKSample;
using namespace SDKSample::Common;
using namespace Concurrency;
using namespace Platform;
using namespace Windows::ApplicationModel;
using namespace Windows::ApplicationModel::Activation;
using namespace Windows::Foundation;
using namespace Windows::Foundation::Collections;
using namespace Windows::UI::Core;
using namespace Windows::UI::Xaml;
using namespace Windows::UI::Xaml::Controls;
using namespace Windows::UI::Xaml::Controls::Primitives;
using namespace Windows::UI::Xaml::Data;
using namespace Windows::UI::Xaml::Input;
using namespace Windows::UI::Xaml::Interop;
using namespace Windows::UI::Xaml::Media;
using namespace Windows::UI::Xaml::Navigation;
/// <summary>
/// Initializes the singleton application object. This is the first line of authored code
/// executed, and as such is the logical equivalent of main() or WinMain().
/// </summary>
App::App()
{
InitializeComponent();
this->Suspending += ref new SuspendingEventHandler(this, &SDKSample::App::OnSuspending);
}
/// <summary>
/// Invoked when the application is launched normally by the end user. Other entry points will
/// be used when the application is launched to open a specific file, to display search results,
/// and so forth.
/// </summary>
/// <param name="args">Details about the launch request and process.</param>
void App::OnLaunched(LaunchActivatedEventArgs^ args)
{
auto rootFrame = dynamic_cast<Frame^>(Window::Current->Content);
// Do not repeat app initialization when the Window already has content,
// just ensure that the window is active
if (rootFrame == nullptr)
{
// Create a Frame to act as the navigation context and associate it with
// a SuspensionManager key
rootFrame = ref new Frame();
SuspensionManager::RegisterFrame(rootFrame, "AppFrame");
auto prerequisite = task<void>([](){});
if (args->PreviousExecutionState == ApplicationExecutionState::Terminated)
{
// Restore the saved session state only when appropriate, scheduling the
// final launch steps after the restore is complete
prerequisite = SuspensionManager::RestoreAsync();
}
prerequisite.then([=](task<void> prerequisite)
{
try
{
prerequisite.get();
}
catch (Platform::Exception^)
{
//Something went wrong restoring state.
//Assume there is no state and continue
}
if (rootFrame->Content == nullptr || args->Arguments != nullptr)
{
// When the navigation stack isn't restored or there are launch arguments
// indicating an alternate launch (e.g.: via toast or secondary tile),
// navigate to the appropriate page, configuring the new page by passing required
// information as a navigation parameter
if (!rootFrame->Navigate(TypeName(MainPage::typeid), args->Arguments))
{
throw ref new FailureException("Failed to create initial page");
}
}
// Place the frame in the current Window
Window::Current->Content = rootFrame;
// Ensure the current window is active
Window::Current->Activate();
}, task_continuation_context::use_current());
}
else
{
if (rootFrame->Content == nullptr || args->Arguments != nullptr)
{
// When the navigation stack isn't restored or there are launch arguments
// indicating an alternate launch (e.g.: via toast or secondary tile),
// navigate to the appropriate page, configuring the new page by passing required
// information as a navigation parameter
if (!rootFrame->Navigate(TypeName(MainPage::typeid), args->Arguments))
{
throw ref new FailureException("Failed to create initial page");
}
}
// Ensure the current window is active
Window::Current->Activate();
}
}
/// <summary>
/// Invoked when application execution is being suspended. Application state is saved
/// without knowing whether the application will be terminated or resumed with the contents
/// of memory still intact.
/// </summary>
/// <param name="sender">The source of the suspend request.</param>
/// <param name="e">Details about the suspend request.</param>
void App::OnSuspending(Object^ sender, SuspendingEventArgs^ e)
{
(void) sender; // Unused parameter
auto deferral = e->SuspendingOperation->GetDeferral();
SuspensionManager::SaveAsync().then([=]()
{
deferral->Complete();
});
} *
**
Windows 8
MSDN 訂閱者可以從 MSDN 訂閱者下載中取得 Windows 8。如果您不是 MSDN 訂閱者,可以從 評估中心下載 Windows 8 的評估版本
(請注意,此版本將會過期,而且無法升級) **
***
Visual Studio Express 2012 for Windows 8
Microsoft Visual Studio Express 2012 for Windows 8 是建置 Windows應用程式的工具。其中包含 Windows 8 SDK、Blend for Visual Studio 和
專案範本。您必須先安裝 Windows 8。 取得詳細資訊和其他語言。
***
**
取得 Windows 8 SDK
如果您已經有編譯器和建置環境,您可以分別下載適用於 Windows 8 的Windows 軟體開發套件 (SDK)。Windows 8 SDK 可依照您選擇的
語言包含標頭、程式庫,以及建立 Windows 市集應用程式所需的工具
(包含 Windows 應用程式認證套件)。 深入了解 Windows 8 SDK **
****
***
工具組和延伸模組
Windows 應用程式認證套件
在您提交應用程式之前先行測試,以取得認證並陳列於 Windows 市集。 深入了解 Windows 應用程式認證套件**
適用於 JavaScript Windows Library 的
Visual Studio 擴充功能
這些資源可讓您輕鬆使用 JavaScript 的 Windows Library 建置 Windows市集應用程式。如需詳細資訊,請參閱 撰寫 Windows 市集應用程式的程式碼。
*
***
應用程式 SDK 中的 Windows 8 Ads
藉由廣告讓應用程式獲利,同時將豐富、吸引人的沈浸式廣告體驗呈現給使用者。取得 Windows 8 Ads SDK
**
Windows Azure 行動服務
新增可調整且安全的雲端後端,以及結合結構化儲存空間、使用者驗證和推送通知。取得 Windows Azure 行動服務 ***
*** http://msdn.microsoft.com/zh-TW/windows/apps/br229516 *
*** http://social.msdn.microsoft.com/Forums/windowsapps/zh-tw/home?category=windowsapps&filter=alllanguages&sort=lastpostdesc&page=1 *
**
File access sample (Windows 8.1)
This sample shows how to create, read, write, copy and delete a file, how to retrieve file properties, and how to track a file or folder so that your app can access it again. This sample uses Windows.Storage and Windows.Storage.AccessCache API. **
**
The sample demonstrates these tasks:
To obtain an evaluation copy of Microsoft Visual Studio 2013 Preview, go to Visual Studio 2013 Preview.
To run the app without debugging, press Ctrl+F5 or use Debug > Start Without Debugging **
**
**
**
**
* http://msdn.microsoft.com/zh-hk/windows/hardware *
**
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
Note For Windows 8 app samples, download the Windows 8 app samples pack. The samples in the Windows 8 app samples pack will build and run only on Microsoft Visual Studio 2012.
This sample shows how to create, read, write, copy and delete a file, how to retrieve file properties, and how to track a file or folder so that your app can access it again. This sample uses Windows.Storage and Windows.Storage.AccessCache API. The sample demonstrates these tasks:
- Create a file in the Pictures library
Uses one of the StorageFolder.CreateFileAsync methods to create the file. - Get a file's parent folder
Uses the GetParentAsync method to get the parent folder of the file that was created in the Picture folder. The app has the Pictures library capability, so it can access the folder where the file was created. - Write and read text in a file
Uses the FileIO.WriteTextAsync and FileIO.ReadTextAsync methods to write and read the file. For a walkthrough of this task, see Quickstart: reading and writing a file. - Write and read bytes in a file
Uses the FileIO.WriteBufferAsync and FileIO.ReadBufferAsync methods to write and read the file. For a walkthrough of this task, see Quickstart: reading and writing a file. - Write and read a file using a stream
Uses the following API to write and read the file using a stream.- StorageFile.OpenTransactedWriteAsync method
- DataWriter class
- DataReader class
- Display file properties
Uses the StorageFile.GetBasicPropertiesAsync method and the StorageFile.Properties property to get the properties of the file. - Track a file or folder so that you can access it later (persisting access)
Uses the StorageApplicationPermissions.FutureAccessList and StorageApplicationPermissions.MostRecentlyUsedList properties to remember a file or folder so that it can be accessed later.
For a walkthrough of this task, see How to track recently used files and folders. - Copy a file
Uses one of the StorageFile.CopyAsync methods to copy the file. - Compare two files to see if they're the same
Uses the IsEqual method to compare two files. - Delete a file
Uses one of the StorageFile.DeleteAsync methods to delete the file. - Try to get a file without getting an error
Uses the TryGetItemAsync method to get a file without raising an exception.
Note If you want to learn about accessing files using a file picker, see Quickstart: Accessing files with file pickers.
To obtain an evaluation copy of Windows 8.1 Preview, go to Windows 8.1 Preview.To obtain an evaluation copy of Microsoft Visual Studio 2013 Preview, go to Visual Studio 2013 Preview.
Related topics
- Windows 8 app samples
- Related samples
- File picker sample
- Folder enumeration sample
- Programmatic file search sample
- File and folder thumbnail sample
Related technologies
Windows.Storage namespace, Windows.Storage.AccessCache namespace, Windows.Storage.FileProperties, Windows.Storage.Streams namespaceOperating system requirements
Client |
|
---|---|
Server |
|
Build the sample
- Start Visual Studio 2013 Preview and select File > Open > Project/Solution.
- Go to the directory in which you unzipped the sample. Go to the directory named for the sample, and double-click the Microsoft Visual Studio Solution (.sln) file.
- Press F6 or use Build > Build Solution to build the sample.
Run the sample
To debug the app and then run it, press F5 or use Debug > Start Debugging.To run the app without debugging, press Ctrl+F5 or use Debug > Start Without Debugging **
**
Design
Windows 8 touchpads
Mobile operator apps
Human interface devices
Hardware buttons
Multi-touch hardware
*Mobile operator apps
Human interface devices
Hardware buttons
Multi-touch hardware
**
**
**
* http://msdn.microsoft.com/zh-hk/windows/hardware *
**
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&