วันพุธที่ 16 พฤษภาคม พ.ศ. 2555

Photo Gallery Wall

An attractive image gallery containing 16 images. Images and their captions (if configured) can be viewed by clicking. If no images are selected, the gallery will automatically switch to slideshow mode after 10 seconds. Includes a how-to document that provides an overview of the creation process using Blend and detailed description of functionality! View Download (706K ZIP)

Create image gallery,store picture in SQL Server 2005 Express

How do the user add picture?
I have an example here like using Upload
C#
private void Btn_AddAtt_Click(object sender, RoutedEventArgs e)
{
OpenFileDialog d = new OpenFileDialog();
d.Filter = "Image (*.jpg, *.png)|*.jpg;*.png";
d.Multiselect = true;
if (d.ShowDialog() == true)
{
foreach (FileDialogFileInfo f in d.SelectedFiles)
{
Stream s = f.OpenRead();
byte[] fileBytes = new byte[s.Length];
int byteCount = s.Read(fileBytes, 0, (int)s.Length);
string fileContent = Convert.ToBase64String(fileBytes);
s.Close();
//Upload here
// mydata.UploadFileAsync(f.Name, fileContent);
}
}
}
mydata.LoadImage_Completed(....)
{
byte[] m;
Stream b;
if (e.Error == null)
{
List<ImageFile> k = e.Result as List<ImageFile>;
//using for-looping with int i to get the content and change it back to Image
m = Convert.FromBase64String(k[ i].Content);
b.WriteByte(m);
BitmapImage k = new BitmapImage();
k.SetSource(b);
Image mypic = new Image();
mypic.Source = k;
LayoutRoot.Children.Add(mypic);
}
}
In the WCF
public void UploadFile(string fileName, string text)
{
//you have now the text with Base64 Configuration, you can insert it into your SQL database
// next time you can get it back by loadImage
}
public class ImageFile
{
public string Name { get; set; }
public string Content { get; set; }
}
public string LoadImage()
{
//you can now find all the Row in the Database and send back the Name and Text
//you may return List<ImageFile>
}
I didnt try them all in VS but the upload part should work very well

Silverlight Tip How to Dynamically Load and Display Images

How to Dynamically Load and Display Images

Loading images in Silverlight is fairly straight forward. The first step is to create what’s called a Uniform Resource Identifier (URI). The URI is essentially a string that points to a resource. The resource can be locally in the project or out on the Internet. Images that are loaded locally must be first added to your Visual Studio project.

Image image = new Image();
Uri uri = new Uri("images/myImage.png", UriKind.Relative);
ImageSource img = new System.Windows.Media.Imaging.BitmapImage(uri);
image.SetValue(Image.SourceProperty, img)
Now, to display the image you will need to add it to the Children of an element that you have declared in your XAML. For example, let’s say you have created a Canvas object in your Page.xaml under the parent Grid object. Using the x:Name tag, give it the name “Map”:
<Grid x:Name="MainGrid">
  <Canvas x:Name="Map">
   </Canvas>
</Grid>
Now, back in your Page.xaml.cs file you can dynamically add the image you just created to the canvas object like this:
Map.Children.Add(image);
Btw, declaring an image in your XAML works the same way. Example:
<Image Source="images/MyImage.png"></Image>

Creating New Database Server in the Azure Portal

Introduction:


In this article we are going to see how to create a new database server in the Azure Management portal.

Overview:


Database servers are created for each subscription based on the level of the registered account. Each subscription can contain multiple logical Azure database servers. Each server is created based on the region selected at the time of configuration of the server. Once the server is created we can see a read only Master database is created automatically with some login credentials. We can create our own database after the servers are configured correctly based on our requirement.

Steps:


Log in to the Azure portal using the link below. You will see the screen look similar to below.
http://www.microsoft.com/windowsazure/

image

Login to the portal using your Microsoft Windows Live credentials with Azure credentials to the management portal and you will see the screen as shown in the screen below:
SEE MORE

ResizeImage Spec. MaxSize

using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;

public static void ResizeImage(string fileNameIn, string fileNameOut, int maxWidthOrHeight)
{
// Open the image
Bitmap bmpSource = new Bitmap(fileNameIn);

Size originalSize = bmpSource.Size;
Size newSize = new Size(0, 0);

bmpSource.Dispose();

decimal maxHeightDecimal = Convert.ToDecimal(maxWidthOrHeight);
decimal maxWidthDecimal = Convert.ToDecimal(maxWidthOrHeight);

decimal resizeFactor = 0;

if (originalSize.Height > originalSize.Width)
{
// Portrait
resizeFactor = Convert.ToDecimal(Decimal.Divide(originalSize.Height, maxHeightDecimal));
newSize.Height = maxWidthOrHeight;
newSize.Width = Convert.ToInt32(originalSize.Width / resizeFactor);
}
else
{
// Lanscape
resizeFactor = Convert.ToDecimal(Decimal.Divide(originalSize.Width, maxWidthDecimal));
newSize.Height = Convert.ToInt32(originalSize.Height / resizeFactor);
newSize.Width = maxWidthOrHeight;
}

Bitmap mySourceBitmap = null;
Bitmap myTargetBitmap = null;
Graphics myGraphics = null;

try
{
mySourceBitmap = new Bitmap(fileNameIn);

int newWidth = newSize.Width;
int newHeight = newSize.Height;

myTargetBitmap = new Bitmap(mySourceBitmap, newWidth, newHeight);

myGraphics = Graphics.FromImage(myTargetBitmap);

myGraphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
mySourceBitmap.Dispose();

// Save th new image
myTargetBitmap.Save(fileNameOut, ImageFormat.Jpeg);
}
catch (Exception)
{
throw;
}
finally
{
if (myGraphics != null) myGraphics.Dispose();
if (mySourceBitmap != null) mySourceBitmap.Dispose();
if (myTargetBitmap != null) myTargetBitmap.Dispose();
}
}

Http Handlers to handle Images

HTTP handlers implement the following two methods:
1) ProcessRequest: called to process http requests and
2) IsReusable which indicates whether this instance of http handler can be reused for fulfilling another requests of the same type.

In your website Add new Item Generic Handler and name it as ImageHandler.ashx

Here is ImageHandler.ashx file

<%@ WebHandler Language="C#" Class="ImageHandler" %>

using System;
using System.Web;
using System.IO;

public class ImageHandler : IHttpHandler
{

public void ProcessRequest(HttpContext context)
{
string sImageFileName = "";
int iThumbSize = 0;
decimal dHeight, dWidth, dNewHeight, dNewWidth;

sImageFileName = context.Request.QueryString["img"];
iThumbSize = Convert.ToInt32(context.Request.QueryString["sz"]);

System.Drawing.Image objImage = System.Drawing.Bitmap.FromFile(System.Web.HttpContext.Current.Server.MapPath("Image Path" + sImageFileName));
if (sImageFileName != null)
{
if (iThumbSize == 1)
{

dHeight = objImage.Height;
dWidth = objImage.Width;
dNewHeight = 120;
dNewWidth = dWidth * (dNewHeight / dHeight);
objImage = objImage.GetThumbnailImage((int)dNewWidth, (int)dNewHeight, new System.Drawing.Image.GetThumbnailImageAbort(callback), new IntPtr());
}
if (iThumbSize == 2)
{

dHeight = objImage.Height;
dWidth = objImage.Width;
dNewHeight = 200;
dNewWidth = dWidth * (dNewHeight / dHeight);
objImage = objImage.GetThumbnailImage((int)dNewWidth, (int)dNewHeight, new System.Drawing.Image.GetThumbnailImageAbort(callback), new IntPtr());
}

MemoryStream objMemoryStream = new MemoryStream();
objImage.Save(objMemoryStream, System.Drawing.Imaging.ImageFormat.Jpeg);
byte[] imageContent = new byte[objMemoryStream.Length];
objMemoryStream.Position = 0;
objMemoryStream.Read(imageContent, 0, (int)objMemoryStream.Length);
context.Response.ContentType = "image/jpeg";
context.Response.BinaryWrite(imageContent);
}
}


private bool callback()
{
return true;
}
public bool IsReusable
{
get
{
return false;
}
}

}

Following is the way to write it..

<img id="Image1" src='../ImageHandler.ashx?img=ImageName&sz=1' />

Upload Image and Resize


1.  using System.IO;
2.  using System.Web;

3.  public static string UploadImage(string newFileName, string directory, FileUpload fileUpload, int imageSize, bool overwrite)
4.  {
5.  if (fileUpload.HasFile)
6.  {
7.  string oldFileName = fileUpload.FileName;
8.  DirectoryInfo dirTempInfo = new DirectoryInfo(HttpContext.Current.Request.PhysicalApplicationPath + "Temp");
9.  if (!dirTempInfo.Exists) dirTempInfo.Create();
10. string tempPath = dirTempInfo.FullName + @"\" + oldFileName;
11. fileUpload.SaveAs(tempPath);
12. FileInfo tempInfo = new FileInfo(tempPath);
13. string extension = tempInfo.Extension;
14. if (newFileName == "") newFileName = tempInfo.Name.Substring(0, tempInfo.Name.IndexOf(extension));
15. string newFullName = newFileName + extension;
16. DirectoryInfo dirInfo = new DirectoryInfo(HttpContext.Current.Request.PhysicalApplicationPath + directory);
17. if (!dirInfo.Exists) dirInfo.Create();
18. string filePath = dirInfo.FullName + @"\" + newFullName;
19. FileInfo fileInfo = new FileInfo(filePath);
20. if (!fileInfo.Exists || overwrite)
21. {
22. if (fileInfo.Exists) fileInfo.Delete();
23. if (imageSize > 0)
24. {
25. ResizeImage(tempPath, filePath, imageSize);
26. tempInfo.Delete();
27. }
28. else tempInfo.MoveTo(filePath);
29. }
30. else tempInfo.Delete();
31. return directory + "/" + newFullName;
32. }
33. else return "";
34. }

35.  เราต้องกำหนดขนาดไฟล์สูงสุดที่ upload หน่วยเป็น KB ได้ที่ web.config แต่เท่าที่ทำแม้กำหนดไฟล์ใหย๋มากๆ ก็ส่งไฟล์ขนาดมากๆขึ้นไปไม่ได้อยู่ดีเพราะ Timeout return error

36. <system.web>
<httpRuntime maxRequestLength="4096"/>
< /system.web>

SQL2012 Save (Not Permitted) Dialog Box

Save (Not Permitted) Dialog Box

The Save (Not Permitted) dialog box warns you that saving changes is not permitted because the changes you have made require the listed tables to be dropped and re-created.
The following actions might require a table to be re-created:
  • Adding a new column to the middle of the table
  • Dropping a column
  • Changing column nullability
  • Changing the order of the columns
  • Changing the data type of a column
To change this option, on the Tools menu, click Options, expand Designers, and then click Table and Database Designers. Select or clear the Prevent saving changes that require the table to be re-created check box.

Introduction

SQL Server 2008 Error: Saving changes is not permitted.

Solution

While creating and editing a database in SQL Server 2008 I ran into a brick wall, or a 'by design' feature of the Database Management Studio.
When you design a table in a database and then try to make a change to a table structure that requires the table to be recreated, the Database Management Studio will not allow you to save the changes. This is caused by a configuration setting that results in the following dialog:
This dialog states: "Saving changes is not permitted. The changes you have made require the following tables to be dropped and re-created. You have either made changes to a table that can't be re-created or enabled the option Prevent saving changes that require the table to be re-created."
You can only react by clicking the Cancel button. And then Management Studio shows this dialog:
So what do you want to do to configure the setting with the value you want (should be the default setting!)?

Go to: Tools > Options

“Designers –> "Table and Database Designers”

And uncheck the option: "Prevent saving changes that require table re-creation". Once you save the changes it will work.


Silverlight Hardware Acceleration

Silverlight Hardware Acceleration

           
Caching visual elements as bitmaps allows you to take advantage of hardware acceleration. Once an object or tree of objects has been cached as a bitmap, it no longer goes through the render phase as the application refreshes, rather, the cached bitmap is rendered. The cached bitmap swapping is able to take advantage of hardware acceleration from the user’s GPU which can yield significant performance improvements for some scenarios.
Shows how caching can improve performance.Hardware acceleration can benefit performance for the following scenarios:
  • Blending two static layers using opacity. For example, you can mark both trees of objects as cached, and the opacity animation will be executed using Hardware Acceleration.
  • Transforming objects (e.g. stretching and rotating).
NoteNote:
Caching objects can hurt performance if you misuse it. See How Hardware Acceleration Works below.
In order to cache objects and allow them to take advantage of hardware acceleration, do the following:
1. Enable composition caching at the plug-in level by setting the EnableGPUAcceleration parameter to "true".
<param name="EnableGPUAcceleration" value="true" />
2. You can now enable GPU acceleration on the element(s) you wish to cache by specifying a CacheMode value of BitmapCache on the object or container of objects.
<StackPanel CacheMode="BitmapCache" … />
You can cache a single UIElement or, as in the StackPanel example above, a container UIElement and all of its children.
The illustration below summarizes how Hardware Acceleration works.
Diagram showing hardware accleration process.
Notice that not everything can be hardware accelerated. Effects like DropShadowEffect and OpacityMask can only be rendered by the software. Also, WriteableBitmap goes through its own rendering pipeline and therefore cannot take advantage of hardware acceleration.
When you cache an object, you are creating multiple rendering surfaces in the VRAM which are then accelerated using the GPU. Other visible objects in your application that are not cached are rendered as surfaces in software. Your performance will be best if you can minimize the total number of rendering surfaces and get the hardware to do work where it can. Note that BitmapCache is the only supported cache-mode.

How to Silverlight application close browser?

What do you mean by "terminate the application"? Do you want to close your browser window or you want to take the user to another page outside of your silverlight application?
If you want to close the browser window, put the following code to the button click event handler:

HtmlPage.Window.Invoke("CloseWindow");

and put a CloseWindow javascript function on your page:

function CloseWindow()
{
window.close();
}

If you want to take the user to another page:
HtmlPage.Window.Navigate(new Uri("SomeUrl));

If you are developing a secured site and want to close the browser window just after the user logout from the application, this small tip will help you. This is not a difficult job to implement. Just a single line of code will do the trick for you.

Use "System.Windows.Browser.HtmlPage.Window.Invoke()" method to call the Close() method of the browser window as shown in the below code snippet:
 
private void OnCloseClick(object sender, RoutedEventArgs e)
{
    System.Windows.Browser.HtmlPage.Window.Invoke("close");
}


The above code when called will close the browser window where your Silverlight application is hosted. If it is a tab, it will close the Window tab instead. If you are using it inside the Internet Explorer, it will confirm you whether you really want to close the browser. If you press "No", it will remain in that page and clicking "Yes" will close the browser tab/window.

SNAGHTMLfcd46a3

วันเสาร์ที่ 12 พฤษภาคม พ.ศ. 2555

Installing IIS 7 on Windows Vista and Windows 7

Introduction


You can use the Microsoft® Web Platform Installer (Web PI) to easily install Internet Information Services (IIS), and applications that run on IIS. To learn more about the Web PI, see Learn about and install the Web PI.

If you choose to install IIS 7.0 or IIS 7.5 (collectively known as IIS 7) manually, you can use this article for guidance.

Before You Begin


Ensure that you have installed one of the editions of Windows Vista or Windows 7 on which IIS 7 is supported before you proceed. Not all IIS features are supported on all editions of Windows Vista and Windows 7. Home Basic and Starter editions include only limited basic features of IIS. To see a list of which features are supported on the edition of Windows you are using, see one of the following:


Also be sure that you have administrative user rights on the computer. By default, you do not have administrative user rights if you are logged on as a user other than the built-in administrator, even if you were added to the local Administrators group on the computer (this is a new security feature in Windows Server® 2008 called Local User Administrator). Log on either to the built-in administrator account, or explicitly invoke applications as the built-in administrator by using the runas command-line tool.

Note that you can run runas /user:administrator cmd.exe so that every application you run from that command line will be elevated, eliminating the need to use the runas syntax from that command line.

If you are logged on to an account other than the built-in local administrator account, you may see the following security alert dialog box.



Figure 1: Windows Security (User Account Control)

Install IIS 7


1. To open the Windows Features dialog box, click Start, and then click Control Panel.


Figure 2: Windows Vista Start menu

2. In the Control Panel, click Programs.



Figure 3: Control Panel Home

3. Click Turn Windows features on or off.


Figure 4: Control Panel install options

4. You may receive the Windows Security warning. Click Allow to continue. The Windows Features dialog box is displayed.



Figure 5: Windows Security dialog box

5. Expand Internet Information Services. Additional categories of IIS features are displayed. Select Internet Information Services to choose the default features for installation.


Figure 6: Windows Features dialog box - IIS

6. Expand the additional categories displayed, and select any additional features you want to install, such as Web Management Tools.



Figure 7: Windows Features dialog box - IIS feature selection

7. If you are installing IIS 7 for evaluation purposes, you may want to select additional features to install. Select the check boxes for all IIS features you want to install, and then click OK to start installation.



Figure 8: Windows Features dialog box - Installation selection

8. The progress indicator appears.


Figure 9: Progress indicator

9. When the installation completes, the Windows Features dialog box closes, and the Control Panel is displayed.



Figure 10: Control Panel Home page

10. IIS 7 is now installed with a default configuration on Windows Vista or Windows 7. To confirm that the installation succeeded, type the following URL into your browser, http://localhost.



Figure 11: Default Web site

11. Next, you can use Internet Information Services Manager to manage and configure IIS. To open IIS Manager, click Start, type inetmgr in the Search Programs and Files box, and then press ENTER.



Figure 12: Default Web Site Home page

If you want to use ASP, Microsoft® ASP.NET, or PHP, install the modules needed to host these pages; this can be done during the installation of IIS or after the installation is complete.

Use Unattended Setup to Install IIS 7.0


IIS 7.0 can also be installed unattended on Windows Vista. For detailed instructions and scripts, see Using Unattended Setup to Install IIS 7.0.

Links for More Information



How to install ASP.NET 1.1 with IIS7 on Vista and Windows 2008.

Installing IIS 7 on Vista.

วันศุกร์ที่ 11 พฤษภาคม พ.ศ. 2555

Windows Phone 7.5 Mango มีอะไรให้ใช้งานบ้าง

 โนเกียกำลังจะขายมือถือ Lumia ที่ใช้ระบบปฏิบัติการ Windows Phone อย่างเป็นทางการในประเทศไทย ซึ่งถือเป็นการทำตลาด Windows Phone อย่างจริงจังครั้งแรกในไทยด้วย (นอกเหนือไปจาก Windows Phone รุ่นแรกที่จับตลาดเฉพาะ early adopter เมื่อปีที่แล้ว)

หมายเหตุ: เนื่องจาก Windows Phone 7.5 ยังไม่รองรับการจับภาพหน้าจอโดยไม่ unlock

เริ่มต้นกับ Windows Phone

Windows Phone ใช้การติดต่อกับผู้ใช้งานด้วยระบบที่เรียกว่า Metro UI

การใช้งาน Windows Phone เริ่มจากหน้า lock screen ซึ่งไม่มีอะไรต่างไปจาก lock screen ของระบบปฏิบัติการอื่นๆ มากนัก นั่นคือมีภาพพื้นหลัง นาฬิกา วันที่ และการแจ้งเตือนอื่นๆ เช่น อีเมล นัดหมาย สายที่โทรเข้ามา ฯลฯ

การปลดล็อคหน้าจอทำโดยสไลด์หน้าจอขึ้นไปด้านบน จากนั้นเราจะพบกับหน้าจอ Start ซึ่งประกอบด้วย Live Tiles เรียงกันลงไปในแนวบน-ล่าง
ทุกครั้งที่เรากดปุ่ม Start บนตัวเครื่องมือถือ มันจะพาเรากลับมายังหน้าจอ Live Tiles นี้เสมอ
ที่มุมขวาบนของหน้าจอ Start มีลูกศรชี้ไปทางขวามือ กดแล้วจะเห็นรายการแอพทั้งหมดภายในเครื่อง เรียงลงไปตามแนวบน-ล่างเช่นกัน

สรุปว่าหน้าจอพื้นฐานของ Windows Phone มีเพียงแค่ 2 จอเท่านี้ คือ หน้าจอซ้ายสำหรับแอพที่ใช้บ่อยๆ ก็ปักเป็น Tiles เอาไว้ ส่วนหน้าจอขวาก็เอาไว้เรียกแอพที่นานๆ ใช้ที เราสามารถปาดซ้าย-ขวาเพื่อสลับไปมาระหว่างสองหน้าจอนี้ได้ โดยไม่จำเป็นต้องกดปุ่มลูกศรเสมอไป
สำหรับคนที่คุ้นกับระบบปฏิบัติการหน้าจอเยอะๆ แบบ Android อาจรู้สึกแปลกๆ กับหน้าจออันน้อยนิดของ Windows Phone บ้าง แต่ก็ไม่มีปัญหาอันใดต่อการใช้งานครับ

Live Tiles

Live Tiles ถือเป็นจุดขายหลักของ Windows Phone เลยก็ว่าได้ แนวคิดของมันเป็นลูกผสมระหว่างไอคอนกับ widget ทำหน้าที่ทั้งเป็นช็อตคัตของแอพ และแสดงการแจ้งเตือนต่างๆ จากแอพตัวนั้น

ไม่ใช่ Tiles ทุกตัวที่สามารถแสดงข้อมูลได้ บางตัวเป็นแค่ไอคอนเท่านั้น ตัวอย่างเช่น IE หรือ Settings พวกนี้เป็นแค่ไอคอนที่ช่วยให้เราเรียกแอพได้สะดวก
โดยรวมแล้ว Tiles ทำงานตอบโจทย์การใช้งานได้ดี แนวคิดดูแปลกใหม่ แต่ข้อติก็คือการวางหน้าจอ Tiles ของไมโครซอฟท์ยังไม่มีประสิทธิภาพมากนัก เพราะจากภาพจะเห็นว่าหน้าจอปกติแสดง Tiles ได้ประมาณ 8 อัน (Tiles อันล่างๆ ถูกตัดตกขอบไปสักเล็กน้อยด้วย) ทำให้คนที่มี Tiles แบบแจ้งเตือนเยอะๆ ต้องเลื่อนลงไปดูข้อมูลอยู่บ่อยๆ
ผมคิดว่าถ้าไมโครซอฟท์ปรับหน้าจอ Tiles ให้แต่ละตารางมีขนาดเล็กลง และยัดข้อมูลมาได้สัก 3 คอลัมน์ น่าจะช่วยให้การใช้หน้าจอมีประสิทธิภาพมากกว่านี้ครับ (แต่ก็ต้องแลกมาด้วยหน้าจอที่ซับซ้อนขึ้นล่ะนะ)
ปัญหาอีกประการหนึ่งของ Windows Phone ที่ไมโครซอฟท์ควรใช้ Tiles ช่วยคือ Windows Phone ไม่มีวิธีเปิด-ปิดฟีเจอร์ที่ใช้บ่อย เช่น Wi-Fi, 3G, Bluetooth, GPS แบบง่ายๆ ต้องเข้าไปยังหน้า Settings เท่านั้น
ปัญหานี้ Android แก้โดยแนบ Toggle Widget มาให้เลย ช่วยให้ชีวิตง่ายขึ้นมาก กรณีของ Windows Phone สามารถทำแบบเดียวกันโดยเพิ่ม Tiles สำหรับตั้งค่าพวกนี้มาให้ด้วย แต่ไมโครซอฟท์ก็ยังไม่ทำเรื่องนี้ใน Mango ต้องใช้วิธีโหลดแอพภายนอกมาติดตั้งเอาเอง (ใน Marketplace มีแอพ Cellular Data ที่ไมโครซอฟท์ทำเองให้หนึ่งตัว ถ้าอยากเปิดปิดอย่างอื่นต้องหากันเอง)

App List

หน้าจอรายชื่อแอพนั้นตรงไปตรงมามาก คือมีรายชื่อแอพพร้อมไอคอน แสดงเรียงตามตัวอักษรยาวลงไปเรื่อยๆ เท่าจำนวนแอพที่เราติดตั้งไว้ในเครื่อง

ไมโครซอฟท์คงไม่อยากให้ระบบปฏิบัติการซับซ้อน เลยไม่ให้วิธีจัดกลุ่มรายการแอพใดๆ มาให้เลย ดังนั้นถ้าอยากเรียกแอพแบบรวดเร็วก็ต้องปักหมุดไว้ใน Tiles หรือจะกดปุ่มค้นหาที่มุมซ้ายบน แล้วพิมพ์ชื่อแอพเอาก็ได้
ผมคิดว่าทั้งสองวิธีนี้ยังไม่ค่อยมีประสิทธิภาพเต็มที่นัก เพราะบางทีเรานึกชื่อแอพไม่ออก จะพิมพ์หาก็คงใช้ไม่ได้ทุกครั้งไป ส่วนการปักหมุดใน Tiles ก็อย่างที่บอกคือเวลา Tiles เริ่มยาวๆ ก็ต้องเลื่อนหาเยอะอยู่ดี

วิธีการปักหมุดเป็น Tiles ให้เรากดค้างไว้ที่รายชื่อแอพ จะมีคำสั่ง pin to start โผล่ขึ้นมา (ในกรณีที่เป็นแอพที่เราติดตั้งเองผ่าน Marketplace จะมีคำสั่ง rate/review และ uninstall เพิ่มเข้ามาด้วย)

การสลับแอพ

การสลับแอพที่เปิดอยู่ ให้ใช้วิธีกดปุ่ม Back ค้างเอาไว้เพื่อเข้าหน้าจอ multitasking ซึ่งจะแสดง thumbnail ของแอพที่เปิดอยู่ขึ้นมา เลื่อนซ้ายขวาเพื่อสลับไปยังแอพที่ต้องการ (คล้ายกับ webOS แต่ปัดขึ้นเพื่อปิดแอพแบบ webOS ไม่ได้)

การปิดแอพเหมือนกับ Android/iOS คือไม่ต้องไปยุ่งอะไรกับมัน ระบบปฏิบัติการจัดการให้เองทั้งหมดครับ ซึ่งกรณีของ Windows Phone ผมลองแล้วพบว่าจัดการเรื่องประสิทธิภาพได้ค่อนข้างดีกว่า Android มาก เนื่องจากมีแอพเพียงบางตัวเท่านั้นที่ได้รับอนุญาตให้ทำงานอยู่เบื้องหลัง ดังนั้นจะเปิดแอพมากหรือน้อยก็ไม่ค่อยมีผลกับระบบสักเท่าไร
การทำงานของ Windows Phone ลื่นไหลมาก แอนิเมชันสวยงาม ตรงนี้คงไม่กล่าวถึงเยอะ ใครอยากเห็นก็หาวิดีโอหรือของจริงดูกันเองได้ไม่ยาก

Status Bar

Windows Phone ไม่มี status bar ที่แสดงผลค้างเอาไว้ด้านบนของหน้าจอเหมือนกับ Android/iOS และนี่เป็นสิ่งที่น่าหงุดหงิดมากอย่างหนึ่ง

status bar ของ Windows Phone มีด้วยกัน 3 โหมด คือ
  1. ไม่แสดง status bar เลย
  2. แสดงเฉพาะนาฬิกาที่มุมขวาบน
  3. แสดงข้อมูลครบ ทั้งสัญญาณมือถือ ไอคอนต่างๆ และแบตเตอรี่


ปัญหาของ Windows Phone คือรูปแบบของ status bar แตกต่างกันออกไปตามแต่ละหน้าจอครับ เท่าที่ผมสังเกตได้ ถ้าเข้าแอพตระกูล Hub ทั้งหลาย จะไม่แสดง status bar เลย (ไม่เสมอไป) แต่ถ้าเป็นหน้าจอทั่วๆ ไปมักแสดงเฉพาะนาฬิกา
ส่วน status bar แบบเต็ม เราสามารถสั่งให้มันโผล่ขึ้นมาโดยเอานิ้วกดตรงนาฬิกาแล้วปัดลงมา เราจะเห็นข้อมูลสถานะต่างๆ ครบถ้วนอยู่ระยะหนึ่ง แล้วมันปิดกลับไปเป็นแค่นาฬิกาเหมือนเดิม
การทำงานแบบนี้ไม่เวิร์คอย่างแรง เพราะเรามักต้องการรู้ว่าตอนนี้ต่อเน็ตอยู่หรือไม่ สัญญาณ Wi-Fi เป็นอย่างไร แบตใกล้หมดหรือยัง ฯลฯ ซึ่งผมคิดว่าแสดงค้างไว้แบบระบบปฏิบัติการอื่นๆ ดีกว่า และไม่ได้เปลืองที่อะไรมากมายนัก

Notification

สำหรับการแจ้งเตือนเหตุการณ์ต่างๆ เช่น SMS เข้า, อีเมลใหม่, นัดหมาย ฯลฯ ตามปกติแล้วจะแสดงบน Tiles โดยตรง
แต่ในเหตุการณ์สำคัญบางกรณี เช่น SMS เข้า หรือมีคนแชทมาหาเรา มันจะขึ้นแถบแจ้งเตือนที่ขอบด้านบนของทุกหน้าจอในตอนนั้น ดังภาพ

กดแล้วจะเข้าไปยังหน้าจอของแอพที่แจ้งเตือนเรามาด้วย ไม่ต่างอะไรกับระบบปฏิบัติการอื่นๆ

Metro Apps

หมดเรื่องของการทำงานพื้นฐานของตัวระบบ มาดูส่วนของแอพกันบ้างนะครับ
แอพของ Windows Phone ส่วนใหญ่ออกแบบด้วย Metro UI ที่ใช้การเลื่อนหน้าจอไปด้านซ้ายหรือขวาเรื่อยๆ (เลื่อนเป็นวงกลม คือสุดด้านใดด้านหนึ่งแล้ววนกลับ)
จริงๆ แล้วการออกแบบแอพลักษณะนี้เหมือนกับ "แท็บ" เพียงแต่ดีไซน์ให้สวยหน่อยตามสไตล์ Metro เท่านั้น เท่าที่ใช้แอพลักษณะนี้มา ผมว่าเข้าใจง่ายดี คือแอพทุกตัวใช้ UI คล้ายๆ กันหมดทำให้เราคุ้นกับการเลื่อนซ้าย-ขวาไปเรื่อยๆ เวลาเข้าไปในตัวแอพ (มีแอพบางตัวเหมือนกันที่ไม่ใช้ UI แบบนี้ เช่น IE หรือ เครื่องคิดเลข แต่แอพสำหรับงานเฉพาะทางแบบนี้ก็คงทำหน้าตาที่ต่างออกไปลำบาก)
จุดที่อาจปรับปรุงได้อีกหน่อยคือ แอพลักษณะนี้ใช้พื้นที่สำหรับแสดงข้อความตรงส่วนหัวมากไปหน่อย (ชื่อแอพและแท็บ) ทำให้เหลือพื้นที่แสดงผลจริงน้อยลง

อีกประเด็นที่ผมใช้แล้วไม่ค่อยชอบ คือ "ทูลบาร์" สำหรับปุ่มสั่งงานต่างๆ ของแอพบน Windows Phone ที่วางไว้ขอบด้านล่างสุดของจอ ทูลบาร์เหล่านี้แสดงเฉพาะไอคอนของปุ่มเท่านั้น ปัญหาอยู่ที่ว่ามันดูไม่ออกว่าเป็นปุ่มอะไรในหลายๆ ครั้ง (โดยเฉพาะพวกไอคอนแปลกๆ) ซึ่งเราต้องกดตรงไอคอน ... ทางขวามือ มันจะแสดงคำอธิบาย (label ของปุ่ม) ขึ้นมาให้เห็น พร้อมกับคำสั่งอื่นๆ (ถ้ามี) เพราะ Windows Phone อนุญาตให้วางปุ่มคำสั่งแค่ 4 ปุ่มเท่านั้น

Settings

หน้าจอ Settings ของ Windows Phone แบ่งออกเป็น 2 แท็บ คือ เซ็ตค่าของระบบ และเซ็ตค่าของแอพพลิเคชันที่มากับระบบ (แอพลงเองก็ไปเซ็ตแยกกันเองในแอพแต่ละตัว)

สำหรับหน้าจอตั้งค่าคงไม่มีอะไรซับซ้อนมาก เป็นค่าแต่ละหมวดเรียงลงไป (ไม่เรียงตามตัวอักษร) ที่ใช้บ่อยหน่อยคงเป็นการเปิดปิดฟีเจอร์ต่างๆ ของฮาร์ดแวร์

ส่วนที่น่าสนใจคือธีม (Theme) ที่สามารถเปลี่ยนสีพื้นหลังได้ 2 แบบ (ขาว-ดำ) และเปลี่ยนสีไฮไลต์ (Accent Color) ซึ่งเป็นพื้นหลังของ Tiles และปุ่มต่างๆ ได้อีกจำนวนหนึ่ง

อีกหน้าจอที่น่าสนใจคือ email+account ที่ให้เราตั้งค่าบัญชีอีเมลหรือ social network ต่างๆ
เรื่องบัญชีอีเมลคงไม่ต่างอะไรกับระบบปฏิบัติการอื่นๆ คือป้อนข้อมูลแล้วใช้งานได้ทันที ที่น่าสนใจกว่าคือบัญชี social network ที่รองรับทั้ง Windows Live, Facebook, Twitter, LinkedIn มาตั้งแต่แรก (จะกล่าวต่อไปในส่วนของ People Hub)

Hub

นอกเหนือจากเรื่อง Live Tiles ที่เป็นจุดขายหลักของ Windows Phone แล้ว ก็คงต้องยกให้กับแนวคิดเรื่อง Hub ที่โดดเด่นและยังหาระบบปฏิบัติการอื่นมาเทียบเคียงได้ยาก
แนวคิดการออกแบบ Hub ของ Windows Phone คือการผนวกรวมเครือข่ายสังคมและบริการออนไลน์ต่างๆ เข้ามารวมกันที่ตัวระบบปฏิบัติการ โดยตัวระบบปฏิบัติการจะแยกตาม "ลักษณะงาน" ให้ (เช่น รูปภาพ เกม สถานะ) แต่รวมเครือข่ายที่ต่างกันเข้ามาไว้ที่เดียวกัน (เช่น ภาพจาก SkyDrive กับภาพจาก Facebook อยู่ใน Pictures Hub ด้วยกัน)
การใช้งานทั้งหมดทำผ่านตัว Hub เลย ไม่ต้องลงแอพของเครือข่ายเหล่านี้แยกต่างหาก (ถ้าอยากลงก็ลงได้นะครับ) ซึ่ง Hub ก็ตอบสนองงานพื้นฐานเกือบหมดอยู่แล้ว ถ้าไม่ต้องการฟีเจอร์อะไรมากมาย ก็สามารถใช้ Windows Phone เท่าที่ไมโครซอฟท์ให้มาโดยไม่ต้องลงแอพเพิ่มเลย
การประสานงานระหว่างเครือข่ายต่างๆ ของ Windows Phone ถือว่าทำออกมาได้ดีมาก ระบบปฏิบัติการคู่แข่งอย่าง webOS หรือ Android มีแนวคิดลักษณะนี้อยู่บ้าง แต่ก็จำกัดเฉพาะอีเมลและสมุดที่อยู่เท่านั้น ในขณะที่ Windows Phone รองรับไปถึงรูปภาพ เกม เพลง ฯลฯ ด้วย
เครือข่ายสังคมที่ไมโครซอฟท์รองรับแน่ๆ คือตระกูล Windows Live, Zune และ Xbox Live ของตัวเอง (และถ้าใช้ระบบเมลองค์กรของไมโครซอฟท์จะได้พวก Exchange กับ Lync มาด้วย) นอกจากนี้ยังรองรับเครือข่ายยอดนิยมอย่าง Twitter, Facebook, LinkedIn มาให้
เครือข่ายของค่ายคู่แข่งอย่างกูเกิลก็รองรับพอประมาณคือ Gmail, Contacts และ Calendar แต่ถ้าอยากได้พวก Picasa, YouTube, Google+ ด้วยก็ต้องรอกูเกิลทำให้สถานเดียวเท่านั้น
อย่างไรก็ตาม จุดอ่อนของ Hub ใน Windows Phone อยู่ที่มันรองรับเครือข่ายสังคมฮิตๆ บางอันเท่านั้น และผมเข้าใจว่าไมโครซอฟท์ไม่ได้เปิด API สำหรับแอพภายนอกอื่นๆ มาเรียกใช้มากนัก (ถ้าผิดแก้ด้วยนะครับ) ดังนั้นถ้าเราอยากใช้เครือข่ายสังคมหรือบริการอื่นๆ มาร่วมด้วย เช่น เชื่อมระบบเพลงจาก iTunes หรือ Last.fm, ภาพจาก Flickr หรือ Picasa, เกมจาก PSN หรือ OpenFient, เช็คอินบน Foursquare, ไฟล์เอกสารจาก Google Docs หรือ Zimbra พวกนี้หมดสิทธิ์แน่ๆ 100% ต้องรอบริษัทเหล่านี้ทำแอพให้ และไปใช้งานแยกในแอพพวกนี้เท่านั้น
ทีนี้มาดูรายละเอียดกันทีละ Hub ดีกว่าครับ

People Hub


People Hub คือจุดที่โดดเด่นที่สุดของ Windows Phone ถ้าให้อธิบายง่ายๆ มันคือ สมุดที่อยู่ + แอพ social network จำพวก Tweetdeck

ส่วนของสมุดที่อยู่คงไม่มีอะไรแปลกกว่าปกติ ใช้แนวคิดรวมเพื่อนคนเดียวกันจากเครือข่ายต่างๆ เข้าด้วยกัน (ผมเข้าใจว่าค่ายแรกที่ทำแบบนี้คือ Synergy ของ webOS)
สำหรับกรณีของ Windows Phone รวมได้ทั้งจากสมุดที่อยู่ตามเบอร์โทรปกติ, Windows Live, Facebook, Twitter, Google Contacts, Outlook, LinkedIn (ของ Yahoo! ก็น่าจะได้ครับแต่ไม่ได้ลอง)

หน้ารายการเพื่อนสามารถพิมพ์เพื่อค้นหาได้ หรือกดที่ตัวอักษรของแต่ละหมวดหมู่ เพื่อกระโดดไปยังหมวดที่ต้องการก็ได้ (ฟีเจอร์นี้สะดวกดีมาก)

เรายังสามารถเลือกเชื่อมบัญชีเพื่อนเข้าด้วยกัน (linked profile) ได้เองด้วย และการที่ไมโครซอฟท์มีสายสัมพันธ์อันดีกับ Facebook ทำให้การเชื่อมสมุดที่อยู่เข้ากับเพื่อนใน Facebook ทำได้ทันที ง่ายกว่าของ Android มาก
เมื่อเพื่อนของเราอัพเดตสถานะในเครือข่ายที่เชื่อมเอาไว้ มันจะแสดงขึ้นมาในแท็บ What's New ของเพื่อนคนนั้นด้วย (ตรงนี้เป็นจุดที่กูเกิลลอกไปใช้ในแอพ People ของ ICS ที่มาแทน Contacts ทั้งหมดใช้แนวคิดเดียวกัน)

แต่ทั้งหมดที่กล่าวไปนั้นเป็นแค่ครึ่งหนึ่งของ People Hub เพราะความเจ๋งของมันอยู่ที่ว่า พอเราเข้าแอพ People Hub แล้ว จะมีแท็กที่เรียกว่า What's New ซึ่งเปรียบได้กับ timeline ของเพื่อนๆ เราทั้งหมด
ไม่ว่าจะเป็นการอัพเดตใน Facebook/Twitter หรือเครือข่ายอื่นๆ ก็ตาม มันแสดงรวมมาให้เราทั้งหมด (เลือกแสดงเฉพาะบางเครือข่ายก็ได้นะครับ) และเราสามารถกดไลค์ ตอบคอมเมนต์ รีทวีต ได้จากหน้าจอนี้โดยตรง ไม่จำเป็นต้องลงแอพ social network อื่นๆ แต่อย่างใด

เท่านั้นยังไม่พอครับ ใน Windows Phone Mango ยังมีฟีเจอร์ใหม่อีกอย่างหนึ่งคือ group หรือการจัดกลุ่มเพื่อนๆ เข้าด้วยกันตามต้องการ
สมุดที่อยู่บนมือถือสามารถจัดกลุ่มเพื่อนได้มานานแล้ว แต่พอมันมาอยู่บน People Hub ที่รองรับฟีเจอร์ด้าน social network ในตัว ทำให้มันมีสถานะกลายเป็น list ของ Facebook/Twitter ไปด้วย
นี่แปลว่าเราสามารถกรองดูสถานะอัพเดตของเพื่อนเฉพาะกลุ่มได้โดยตรงจากตัวระบบปฏิบัติการเลย ยิ่งไปกว่านั้น ผมสามารถปักหมุดกลุ่มเพื่อนนี้ไว้บน Live Tiles ได้ด้วย เจ๋งไหมล่ะครับ?

Me Hub

People Hub ทำหน้าที่แสดงผลแค่ timeline หรือ stream ของเพื่อนๆ เราเท่านั้น ถ้าเราอยากดูข้อความที่ส่งมาหาเรา (mentions ของ Twitter หรือ notifications ของ Facebook) เราต้องใช้แอพอีกตัวที่อยู่ใน People Hub ที่เรียกว่า Me (ตัวฉัน) ซึ่งปักไว้ที่ Live Tiles ให้อยู่แล้วด้วย


Me แบ่งออกเป็น 3 ส่วน (ดูภาพประกอบ) ได้แก่
  • Profile - สถานะล่าสุดของเราเอง, ปุ่มโพสต์ข้อความ (Windows Live/Facebook/Twitter), ปุ่มเช็คอิน (Facebook), ปุ่มเซ็ตข้อความสถานะ (WLM)
  • Notifications - มันคือ notifications ของ Facebook รวมกับ mentions ของ Twitter)
  • What's New - stream/timeline ของเราเอง ที่โพสต์ลงเครือข่ายสังคมต่างๆ
จะเห็นว่าถ้าเราใช้งาน People Hub กับ Me ควบคู่กันไป มันคือ social network client ที่รองรับทั้ง Facebook และ Twitter ในตัว มาพร้อมกับตัวระบบปฏิบัติการเลย ถ้าไม่ต้องการฟีเจอร์อะไรมาก ก็อาจไม่ต้องลงแอพของเครือข่ายพวกนี้เลยด้วยซ้ำ
หมายเหตุ: แต่ People Hub ก็ยังมีข้อจำกัดบางอย่างที่อาจต้องพึ่งแอพเฉพาะกิจอยู่บ้างนะครับ เช่น มันไม่สามารถแสดง retweet หรือ จำนวนคนกดไลค์ หรือการกดไลค์คอมเมนต์ได้ เป็นต้น แต่โดยรวมแล้วพอใช้สำหรับงานพื้นฐานส่วนใหญ่แล้วล่ะครับ

Pictures Hub

คนที่เคยใช้ Android มาคงคุ้นกับแอพ Gallery ที่มันไปดึงอัลบั้มภาพจาก Picasa ของเรามาให้ด้วย

Pictures Hub ก็เหมือนกัน มันคือ Gallery เวอร์ชันที่ดึงภาพจาก SkyDrive และ Facebook Albums มาให้เลย (บอกแล้วว่าไมโครซอฟท์นั้นใกล้ชิดกับ Facebook จริงๆ) อย่างไรก็ตาม มันยังจำกัดเฉพาะ SkyDrive กับ Facebook เท่านั้น ยังไม่รองรับอัลบั้มภาพจาก Flickr (แม้จะมีแอพ Flickr บน WP ก็ตาม) หรือ Picasa

นอกจากการแสดงอัลบั้มภาพทั้งออนไลน์และออฟไลน์แล้ว มันยังแสดงอัพเดต "ภาพใหม่" ที่เพื่อนๆ ของเราโพสต์ลง Facebook หรือ Windows Live ด้วย ซึ่งตรงนี้เหมือนกับหน้า What's New ของ People Hub (และแยกกลุ่มได้ด้วย)

Windows Phone รองรับการแชร์ภาพไปยังเครือข่ายอื่นๆ แบบเดียวกับ Android เพียงแต่สนิทชิดเชื้อกับ Facebook เป็นพิเศษ มีคำสั่งแชร์ไปยัง Facebook ให้โดยตรงในเมนู (อันนี้เปลี่ยนได้)
ฟีเจอร์เล็กๆ อีกอันที่ผมชอบคือ favorites หรือการเลือกรูปภาพที่ชอบ ภาพพวกนี้จะถูกนำไปแสดงเป็นภาพพื้นหลังใน Pictures Hub หรือแสดงใน Live Tiles ตรงนี้ช่วยให้เรากำหนดภาพสวยๆ มาแสดงเป็นพื้นหลังได้ ไม่ใช่เป็นการแสดงภาพแบบสุ่ม (ที่ภาพจากกล้องมือถือส่วนมากมักไม่สวย)
สิ่งที่น่าติมากๆ ของ Pictures Hub คือเราไม่สามารถเลือกรูปภาพพร้อมๆ กันหลายภาพเพื่ออัพโหลดไปทีเดียวได้ ต้องนั่งอัพโหลดทีละภาพเท่านั้น (ลำบากโคตร) เป็นสิ่งที่หวังว่าไมโครซอฟท์จะรีบปรับปรุงในเวอร์ชันต่อๆ ไป

Music+Videos Hub


แอพเล่นมัลติมีเดียของ Windows Phone ชื่อว่า Music+Videos Hub ซึ่งก็ตรงตามชื่อคือรวมทั้งเพลงและวิดีโอไว้ในตัว
แอพตัวนี้เชื่อมโยงกับ Zune ค่อนข้างมาก ทั้งตัวโปรแกรม Zune Desktop บนพีซี และ Zune Marketplace บริการขายเพลงออนไลน์ของไมโครซอฟท์
การใช้งานค่อนข้างตรงไปตรงมา (เล่นเพลง-หนัง) แต่ที่ผมชอบคือมันสแกนเพลงของเรา แล้วดึงภาพศิลปินจากอินเทอร์เน็ตมาเป็นพื้นหลังให้ด้วย ช่วยให้โปรแกรมดูดีขึ้นอีกหลายเท่าตัว!

ที่น่าสนใจหน่อยคงมีแค่ภาพพื้นหลังของหน้า lock screen ตอนเรากำลังเล่นเพลงด้วย Zune เปลี่ยนเป็นภาพศิลปินคนนั้นๆ ที่ Zune ดึงจากอินเทอร์เน็ตมาให้เราอัตโนมัติ ทำให้ดูหรูหราไฮโซขึ้นมาก
สิ่งที่น่าเสียดายคงเป็นว่า Music+Video Hubs เชื่อมโยงได้แค่ Zune ของไมโครซอฟท์เท่านั้น บริการเพลงออนไลน์อื่นๆ หมดสิทธิ์ (ถ้าซื้อ Zune Pass โหลดเพลงไม่จำกัดก็คงมันส์ไปอีกแบบ)

Office Hub

โปรแกรมที่หลายคนอยากให้มีบนมือถือแน่ๆ คือ Microsoft Office ซึ่ง Windows Phone ก็ตอบสนองความต้องการนี้ให้ (บางส่วน)

Microsoft Office บน Windows Phone ถูกเรียกตรงตัวว่า Office Hub มันรวมเอาเอกสารไว้ให้เราดังนี้
  • เอกสารบนมือถือ
  • เอกสารบน SkyDrive
  • เอกสารบน Office 365
  • เอกสารจาก SharePoint
ส่วนประเภทของเอกสารที่รองรับก็มี Word, Excel, PowerPoint และโน้ตจาก OneNote มาใช้เป็น to-do list และการจดโน้ตทั่วไป
เท่าที่ลองใช้ดู Office บน Windows Phone สามารถแสดงเอกสาร Word ภาษาไทยได้ถูกต้อง แก้ไขได้นิดหน่อย (แก้ข้อความเป็นหลัก แก้ฟอร์แมตได้บ้างแต่ไม่สะดวกนัก) ส่วน Excel ไม่ได้ลองแต่เท่าที่เข้าใจคือสามารถแก้สูตรได้ด้วย

Games Hub


ไมโครซอฟท์ใช้ประโยชน์ของแบรนด์ Xbox และฐานผู้เล่นจำนวนมากให้เป็นประโยชน์ เกมจำนวนมากบน Windows Phone ที่แปะตรา Xbox มาด้วยจะรองรับฟีเจอร์ออนไลน์ของ Xbox Live พวก avatar, achievements, leaderboard, gamer tag มาให้ด้วย ถือเป็นฟีเจอร์ที่สะดวกถ้าหากว่าเราเล่น Xbox Live อยู่แล้วครับ (ผมไม่มี Xbox ก็ต้องเล่นแบบเหงาๆ ไปคนเดียว)

E-mail

แอพอีเมลของ Windows Phone มีฟีเจอร์มาตรฐานทั่วไป อ่านเมลได้ ตอบเมลได้ เลือกแสดงเมลตามสถานะ unread/flag ได้

ฟีเจอร์ที่ยังขาดไปคือ การเลือกเมลว่าเป็นสแปม และการแสดงไฟล์แนบแบบ inline ส่วนฟีเจอร์พิเศษของ Gmail อย่างพวก priority inbox อะไรแบบนี้ไม่มีแน่นอน
แอพอีเมลรองรับการแยกบัญชีอีเมล (โดยใช้อินเทอร์เฟซแบบเดียวกันหมด) บัญชีที่รองรับได้แก่ Hotmail, Exchange, Office 365, Yahoo!, Google และ POP/IMAP ทั่วไป เมื่อเราสร้างบัญชีแต่ละอันแล้ว จะเห็นแอพของบัญชีนั้นๆ โผล่ขึ้นมาใน App List และเราสามารถปักไอคอนแต่ละอันไว้บน Live Tiles ได้

ฟีเจอร์เจ๋งที่เพิ่มเข้ามาใน Mango คือ Linked Inbox หรือการเชื่อมบัญชีอีเมลมากกว่าหนึ่งอันเข้าด้วยกันได้ ตรงนี้สะดวกกว่า Universal Inbox ที่บังคับรวมอีเมลทุกบัญชีเข้าด้วยกัน เพราะเราสามารถจับคู่เลือกบัญชีบางส่วนเข้ากันได้อย่างอิสระ (เปลี่ยนชื่อ Linked Inbox ได้อีกต่างหาก)

Messages

ไมโครซอฟท์รวมการสนทนาผ่าน SMS และการแชทผ่าน IM เข้าด้วยกันตามสมัยนิยมเป็นแอพ Messages

ตอนนี้ยังรองรับเฉพาะ Windows Live Messenger และ Facebook Chat เท่านั้น ใครอยากใช้ Google Talk หรือ Whatsapp ก็ต้องไปหาแอพเอาเอง

Calendar

แอพปฏิทินไม่มีอะไรพิสดารเช่นกัน แสดงโหมด agenda, to-do, today, month (แต่ไม่มีแบบ week) และรองรับปฏิทินที่อยู่บนอินเทอร์เน็ตได้

มันสามารถเชื่อมต่อกับปฏิทินของ Windows Live, Exchange, Google Calendar และ Facebook Events ได้ แยกสีระหว่างกันได้
หมายเหตุ: คนที่ใช้ Google Calendar โดยมีปฏิทินหลายอันแบบผม ต้องเข้าไปเซ็ตค่าในฝั่งของกูเกิลเสียก่อน จึงจะเห็นปฏิทินทั้งหมด (ถ้าไม่เซ็ตจะเห็นแค่ปฏิทินหลักแค่อันเดียว) รายละเอียดดูได้จาก Microsoft Support

Internet Explorer

ไมโครซอฟท์อัพเดต IE ใน Mango ให้เป็น IE9 Mobile ที่มีความสามารถดีขึ้นกว่า IE ใน Windows Phone รุ่นแรก

การใช้งานคงไม่ต่างอะไรจากเบราว์เซอร์บนมือถือทั่วไปครับ มันรองรับการแสดงผลหลายแท็บ (สูงสุด 6 แท็บ) และสามารถปักหมุดเว็บเพจไว้บน Tiles ได้
การเปิดแท็บทำได้ลำบากเล็กน้อยเพราะต้องเปิดเมนู tabs ขึ้นมาก่อนเสมอ (ไม่มีแท็บจริงๆ ให้กดเลือกง่ายๆ)


มันไม่รองรับ Flash (และคาดว่าคงไม่มีวันนั้น) และภาษาไทยเข้าขั้นใช้ไม่ได้เลย อันนี้ไม่มีทางเลือกอื่นนอกจาก "ทำใจ" รอไมโครซอฟท์แก้ไขให้ในรุ่นหน้า หรือไม่ก็เปลี่ยนไปใช้แอพ CoreSharp BrowserThai พอแก้ขัดได้บ้างเป็นบางเว็บ (Blognone ยังเปิดแล้วไม่เห็นตัวอักษรภาษาไทยอยู่ดีครับ)

Keyboard

คีย์บอร์ดของ Windows Phone ดูเรียบง่ายแต่ตัวช่วยตรวจสะกด (auto-correction) ทำงานได้ค่อนข้างดี พิมพ์ไม่ค่อยผิดเท่าไร (ผมไม่ได้ทดสอบเรื่องการพิมพ์ภาษาอังกฤษจริงจัง คงบอกไม่ได้ว่าดีกว่าหรือแย่กว่าค่ายอื่น)

จุดติของคีย์บอร์ดมีอยู่เล็กน้อย
  • มันไม่มีโหมดกดค้างเพื่อป้อนอักษรพิเศษ เหมือนกับที่ Android กดปุ่มแถวบนสุดค้างเพื่อป้อนตัวเลขได้
  • มีปุ่มสำหรับป้อน emoticon ซึ่งไม่ค่อยได้ใช้ แต่ถ้าต้องการป้อนสัญลักษณ์ที่ใช้บ่อยๆ เช่น @ หรือ ? กลับต้องสลับไปยังโหมดตัวเลข-สัญลักษณ์แทน ควรจะสลับกัน

การ copy & paste คล้ายกับระบบปฏิบัติการอื่นๆ คือกดค้างตรงข้อความที่ต้องการ copy แต่ตอน paste ง่ายขึ้นหน่อยเพราะมีไอคอน Paste แถมมาด้านบนคีย์บอร์ดให้ด้วย
Windows Phone ไม่สามารถลงคีย์บอร์ดอื่นๆ ได้ (เช่นเดียวกับ iOS) และคีย์บอร์ดที่แถมมาด้วยก็ไม่มีภาษาไทยมาให้ (คงต้องรอ Apollo กันต่อไป)

ทางออกเดียวในตอนนี้คงเป็นแอพ Pim Thai ที่เป็นแอพคีย์บอร์ดแยกต่างหาก แล้วค่อย copy ข้อความภาษาไทยไป paste ในแอพที่ต้องการแทนครับ (ต้องขอบคุณคุณ สันติสุข อนามพงษ์ และ อัฑฒ์ ณ นคร ที่ทำแอพนี้ออกมาใช้แก้ขัดและแจกฟรี)

screenshot นี้เอามาจาก Marketplace ครับ ไม่ได้ทำเองนะ

Speech

ถ้ากด Back ค้างไว้จะกลายเป็นหน้าจอสลับแอพ แต่ถ้าเรากดปุ่ม Windows ค้างไว้ จะกลายเป็นโหมดสั่งงานด้วยเสียงแทน

โหมดสั่งงานด้วยเสียงของ Windows Phone ใช้เอนจินวิเคราะห์เสียง Microsot Tellme และสามารถทำงานได้โดยไม่ต้องต่อกับอินเทอร์เน็ต
ความสามารถด้านเสียงของ Windows Phone ยังจำกัดอยู่บ้าง สามารถใช้ได้แค่การโทร/ส่งข้อความหาเพื่อนในสมุดที่อยู่ และเปิดแอพที่มีอยู่ในเครื่องเท่านั้น (ถ้าต่อเน็ตไว้ด้วยก็สามารถหาข้อมูลจาก keyword จาก Bing ได้อีกอย่างหนึ่ง) เทียบกับฟีเจอร์ของ Siri บน iPhone หรือ Voice Actions บน Android แล้วยังห่างไกลอยู่พอสมควร

Camera



แอพกล้องของ Windows Phone ก็ทำงานได้พื้นฐานเท่าที่แอพกล้องบนมือถือพึงมี สามารถเลือกโหมดการถ่ายรูปตามซีน (scene) ได้, เปลี่ยนค่า white balance/exposure/ISO/contrast, เลือกจุดวัดแสงว่าใช้ค่าเฉลี่ยหรือวัดเฉพาะจุด, ปรับโหมดถ่ายมาโคร และเปิด-ปิดแฟลชได้
สิ่งอำนวยความสะดวกที่ผมชอบคือแสดงภาพที่เพิ่งถ่ายล่าสุดไว้ที่ขอบด้านบนของแอพถ่ายภาพด้วย ช่วยให้เรากดดูภาพล่าสุดได้ง่ายขึ้นมาก

ภาพที่ถ่ายแล้วยังมีฟีเจอร์ face recognition ช่วยเหลือการแท็กเพื่อนบน Facebook ได้ด้วย

Bing

ปุ่ม Search ของ Windows Phone ดูเผินๆ อาจเหมือนกับปุ่ม Search ของ Android แต่แท้จริงแล้วมันต่างกันอย่างสิ้นเชิง
เพราะหน้าที่ของปุ่ม Search ใน Android แปรเปลี่ยนตามหน้าจอแอพในตอนนั้น เช่น กดตอนอยู่หน้า Home จะเป็นการค้นกูเกิล แต่กดตอนอยู่ในหน้า Contacts จะค้นหาชื่อเพื่อนแทน (ซึ่งก็สร้างความสับสนบ้างในบางกรณี)
แต่ปุ่ม Search ของ Windows Phone ทำหน้าที่เพียงอย่างเดียวคือ เข้าไปยังหน้าของ Bing (ส่วนการค้นหาภายในแอพต้องใช้ soft button ของแต่ละแอพเอาเอง)

การใช้งานเหมือน Bing บนเว็บทุกประการ คือพิมพ์ในช่องค้นหาแล้วแสดงลิงก์ จุดต่างอยู่ที่ปุ่มด้านล่าง 4 ปุ่ม มันเป็นการค้นหาเฉพาะทาง ดังนี้ (เรียงจากซ้ายไปขวา)
  • Local Scout - ค้นหาสถานที่โดยรอบ คล้ายกับ Google Places
  • Music - ค้นหาด้วยเพลง เหมือนกับพวก Shazam, SoundHound
  • Vision - ค้นหาด้วยภาพ เหมือนกับ Google Goggles
  • Voice - ค้นหาด้วยเสียงพูด เหมือนกับ Voice Search ของ Android

แต่ในของจริงที่ผมใช้ มีเฉพาะ 2 ไอคอนหลัง (Vision/Voice) เข้าใจว่า Bing แสดงฟีเจอร์เฉพาะประเทศที่รองรับเท่านั้น (บน Lumia มีแอพ Local Scout มาให้ด้วย แต่ใช้งานไม่ได้ ไม่มีข้อมูลสถานที่โผล่ขึ้นมาเลย)

Maps

แอพแผนที่ของ Windows Phone ย่อมต้องใช้ Bing Maps (ตัวแอพชื่อ Maps เฉยๆ)

ฟีเจอร์ของตัวแผนที่ก็ตามมาตรฐาน ค้นหาสถานที่ได้ แสดงเส้นทางได้ มีภาพถ่ายทางอากาศ ส่วนความละเอียดของแผนที่ก็ดูกันเองผ่าน Bing Maps เวอร์ชันเดสก์ท็อป

Marketplace

ร้านขายแอพของไมโครซอฟท์ ซึ่งจริงๆ แล้วมันยังมีเพลง เกม และพ็อดแคสต์ให้ดาวน์โหลดด้วย (ไม่มีหนังและรายการทีวีนะครับ)

ขั้นตอนการค้นหาและติดตั้งแอพก็ไม่มีอะไรต่างไปจากค่ายอื่นๆ ครับ การจ่ายเงินต้องผ่านบัตรเครดิตเท่านั้น (ใส่ข้อมูลบัตรได้ผ่านเว็บไซต์ windowsphone.com)

แอพที่น่าสนใจ

ในเมื่อมีโอกาสได้ลองเล่นแอพบ้างนิดหน่อย ก็มีแอพฟรีบางตัวมาแนะนำ เผื่อจะเป็นประโยชน์

  • Facebook ถือเป็นแอพ Facebook บนมือถือที่ดูดีที่สุดตั้งแต่เคยใช้มา และเป็น Metro UI ที่ออกแบบได้สวยมากตัวหนึ่ง จุดเด่นคือมันนำรูปภาพในอัลบั้มของเรามาแสดงเป็นภาพพื้นหลังด้วย (เปลี่ยนภาพได้) ความสามารถเยอะพอตัวแต่ก็ยังขาดฟีเจอร์สำคัญหลายอย่าง ซึ่งกำลังจะมาในเร็วๆ นี้
  • Twitter แอพเฉพาะสำหรับการใช้ทวิตเตอร์ ฟีเจอร์พื้นฐานครบถ้วน แต่ก็ยังไม่รองรับการแสดง retweet ในแถบ mentions ที่ระบบปฏิบัติการอื่นได้กันแล้ว
  • Pulse แอพอ่านข่าวยอดนิยมบนมือถือหลายแพลตฟอร์ม รูปแบบการใช้งานไม่ต่างกับเวอร์ชันอื่น แต่บน WP ยังไม่รองรับ Pulse.me ที่ช่วยบันทึกข่าวและแหล่งข่าวให้เรา

  • Foursquare แอพอย่างเป็นทางการอีกเหมือนกัน ถือเป็น Foursquare เวอร์ชันที่สวยมากๆ อันหนึ่งเลยครับ
  • Flickr แอพอย่างเป็นทางการของยาฮู ดูภาพได้ อัพโหลดภาพได้ แต่ยังไม่เชื่อมกับ Pictures Hub และอัพโหลดได้ทีละภาพเท่านั้น

แอพที่ยังขาด

  • YouTube - มีแอพที่ไมโครซอฟท์ทำเอง ซึ่งเป็นแค่การลิงก์ไปยัง m.youtube.com ยังขาดแอพเต็มตัวแบบของ Android
  • แอพตระกูล Google - ตอนนี้มีเพียงตัวเดียวคือ Google Search ที่ทำอะไรอื่นไม่ได้เลยนอกจากค้นหา ผลิตภัณฑ์ตัวอื่นของกูเกิลมีแต่แอพแบบไม่เป็นทางการ
  • Instagram - แน่นอนว่ายังไม่มี Instagram บน Windows Phone (ใช้ตัวอื่นอย่าง Fhotoroom แทนได้)

Zune Desktop

สำหรับ Windows Phone รุ่นแรกจนถึงปัจจุบัน ไมโครซอฟท์ยังเดินตามรอยของแอปเปิลคือบังคับการเชื่อมต่อกับพีซีผ่านซอฟต์แวร์ของตัวเอง ซึ่งในที่นี้คือ Zune Desktop

Zune Desktop ทำหน้าที่หลักๆ สองประการคือ
  • จัดการไฟล์มัลติมีเดียภายในเครื่อง (เพลง-วิดีโอ-ภาพ)
  • จัดการอุปกรณ์ที่มาเชื่อมต่อกับพีซี (ไม่ว่าจะเป็น Zune เครื่องเล่นเพลงหรือ Windows Phone) ทั้งในเรื่องการซิงก์และการอัพเดตเฟิร์มแวร์
เราไม่สามารถนำ Windows Phone มาเสียบสาย USB แล้วลากไฟล์ใส่โดยตรงแบบ Android ได้นะครับ เพราะนับถึงตอนนี้ Windows Phone ยังไม่มีโหมด USB mass storage ทุกอย่างต้องทำผ่าน Zune Desktop เท่านั้น (ถ้าใช้แมคก็มี Windows Phone 7 Connector for Mac ส่วนคนใช้ลินุกซ์หมดสิทธิ์)
เท่าที่ดูจากข่าวที่ออกมาในช่วงหลังๆ (ไมโครซอฟท์หยุดขายแอพผ่าน Zune Desktop) คาดว่าไมโครซอฟท์จะทิ้ง Zune Desktop ในอีกไม่ช้า แต่ตอนนี้เราก็ต้องอยู่กับ Zune กันไปก่อน

My Windows Phone


ไมโครซอฟท์ยังเปิดเว็บไซต์ windowsphone.com ซึ่งถ้าล็อกอินด้วย Live ID สามารถบริหารจัดการมือถือของเราได้จากหน้าเว็บโดยตรง

สิ่งที่ใช้งานได้ผ่านหน้าเว็บคือ
  • ค้นหามือถือหาย (Find My Phone)
  • ภาพและวิดีโอที่อัพโหลดขึ้น SkyDrive
  • รายชื่อแอพในเครื่องทั้งหมด (ลงแอพผ่านหน้าเว็บได้แบบเดียวกับ Google Play)
  • รายชื่อเอกสารใน SkyDrive
  • คะแนนและข้อมูลต่างๆ ของ Xbox Live

สำหรับฟีเจอร์ Find My Phone ลองแล้วก็เวิร์คดีครับ หาสถานที่ได้ค่อนข้างแม่น (ในภาพมันกำลังค้นหาอยู่) แค่เรากรอกเบอร์โทรของตัวเองไว้กับเว็บไซต์ windowsphone.com แล้วเปิดเครื่องและต่อกับเครือข่ายมือถือไว้ก็พอ
เมื่อเรากด Find ไมโครซอฟท์จะส่ง SMS ที่มีโค้ดเฉพาะมายังเครื่องของเรา ซึ่งเป็นการสั่งให้เครื่องทำงานในโหมดพิเศษ (ล็อคเครื่อง ส่งเสียง หรือลบข้อมูลในเครื่อง) จำกัดบัญชีละ 15 ข้อความต่อเดือน

สรุป

Windows Phone เป็นระบบปฏิบัติการมือถือที่น่าสนใจและมีศักยภาพมากในอนาคต (ในเรื่องความลื่นไหลนั้นดีกว่า Android ทุกตัวที่ผมเคยใช้มา) แต่สถานะในปัจจุบันมันยังขาดความสมบูรณ์ในหลายๆ ด้าน (อารมณ์คล้ายๆ กับใช้ Android รุ่น 1.x หรือ 2.0) ซึ่งเราคงต้องรอไมโครซอฟท์พัฒนามันต่อไปอีกพักหนึ่ง
เรื่องความสามารถและ ecosystem ในเรื่องแอพปัจจุบัน อยู่ในช่วงที่เริ่มใช้งานได้บ้างแล้ว เพียงแต่เทียบกับคู่แข่งที่ออกนำมาก่อนหลายช่วงตัวก็ต้องยอมรับว่าด้อยกว่ากันอยู่เยอะพอสมควร และจุดตายที่ไม่น่าให้อภัยจริงๆ คือเรื่องภาษาไทย ที่ไม่รู้ว่าจะมาเมื่อไรกันแน่
จุดเด่น
  • หน้าตาสวยงาม มีสไตล์เป็นของตัวเอง
  • ลื่นไหวกว่า Android อย่างเห็นได้ชัดเจน
  • Live Tiles เป็นแนวคิดที่แปลกใหม่และใช้งานได้จริง
  • แนวคิดเรื่อง Hub เจ๋งมาก มีความสมบูรณ์ในตัวเอง (ระดับหนึ่ง)
จุดด้อย
  • ภาษาไทยใช้ไม่ได้ในส่วนของคีย์บอร์ดและเบราว์เซอร์
  • ยังขาดฟีเจอร์พื้นฐานที่จำเป็นในบางเรื่อง เช่น การเลือกรูปภาพมากกว่าหนึ่งรูปพร้อมกัน หรือการบอกว่าเป็นอีเมลสแปม
  • status bar มาๆ หายๆ
  • Hub จำกัดเฉพาะเครือข่ายที่ไมโครซอฟท์รองรับเท่านั้น (หลักๆ คือ Windows Live กับ Facebook) ถ้าใช้นอกเหนือจากนี้ก็จบกัน
  • แอพใน Marketplace ยังมีน้อยเมื่อเทียบกับคู่แข่ง ขาดแอพสำคัญหลายตัวที่คนอื่นมีกัน
  • การซิงก์ยังผูกกับ Zune เพียงอย่างเดียว และไม่มีโหมด USB mass storage ให้เลือก
จากการลองใช้มาหลายวัน ผมคิดว่าผู้ใช้สมาร์ทโฟนทั่วไป (ที่ไม่ใช่แฟนคลับของ Windows Phone ซึ่งรู้อยู่แล้วว่าตัวเองต้องการอะไร) ยังไม่มีเหตุผลจำเป็นอะไรที่ควรเปลี่ยนมาใช้ Windows Phone ในตอนนี้ครับ