From f05fc3c0ea5f12a0eb764f17f32443de74aa5e5d Mon Sep 17 00:00:00 2001 From: Plusb Preco Date: Fri, 16 Oct 2015 22:23:31 +0900 Subject: [PATCH] Improve grammar, some fixes * Improve grammar * Fix typos * Fix some mistranslations * Fix quotes (' to `) --- docs-translations/ko-KR/api/app.md | 248 ++++++++++++++--------------- 1 file changed, 121 insertions(+), 127 deletions(-) diff --git a/docs-translations/ko-KR/api/app.md b/docs-translations/ko-KR/api/app.md index 2fa04368ec36..18354a70bd7a 100644 --- a/docs-translations/ko-KR/api/app.md +++ b/docs-translations/ko-KR/api/app.md @@ -1,8 +1,8 @@ # app -앱 모듈은 어플리케이션의 생명주기(?) 제어를 책임집니다. +`app` 모듈은 어플리케이션의 생명주기 제어를 책임집니다. -밑의 예제는 마지막 윈도우가 종료되었을 때, 어떻게 어플리케이션을 종료하는지 설명합니다. +밑의 예제는 마지막 윈도우창가 종료되었을 때, 어플리케이션을 종료시키는 예제입니다: ```javascript var app = require('app'); @@ -13,30 +13,32 @@ app.on('window-all-closed', function() { ## Events -앱 객체는 밑의 이벤트들을 발현(?)시킵니다. +`app` 객체는 다음과 같은 이벤트를 가지고 있습니다: ### Event: 'will-finish-launching' -'will-finish-launching' 이벤트는 어플리케이션이 기본적인 시동준비(?)를 마치면 발현(?)됩니다. - 윈도우 운영체제와 리눅스 운영체제 안에서, 'will-finish-launching' 이벤트는 'ready' 이벤트와 동일합니다. -OS X 운영체제 안에서는, 이 이벤트는 'NSApplication'의 'applicationWillFinishLaunching' 알림으로 표현됩니다. -유저는 대개 'open-file'과 'open-url' 이벤트를 위한 listeners을 세팅합니다. -그리고, crash reporter와 auto updater를 시작합니다. +어플리케이션이 기본적인 시작 준비를 마치면 발생하는 이벤트입니다. +Windows, Linux 운영체제에서의 `will-finish-launching` 이벤트는 `ready` 이벤트와 동일합니다. +OS X에서의 이벤트는 `NSApplication`의 `applicationWillFinishLaunching`에 대한 알림으로 표현됩니다. +대개 이곳에서 `open-file`과 `open-url` 이벤트 리스너를 설정하고 crash reporter와 auto updater를 시작합니다. -대부분의 경우, 유저는 모든 것을 'ready' 이벤트 handler로 해결합니다. +대부분의 경우, 모든 것을 `ready` 이벤트 핸들러로 해결해야 합니다. ### Event: 'ready' -Electron이 초기화를 끝냈을 때, 이벤트가 발현합니다. +Electron이 초기화를 끝냈을 때 발생하는 이벤트입니다. ### Event: 'window-all-closed' -모든 윈도우창이 종료되었을 때, 이벤트가 발현합니다. +모든 윈도우창이 종료되었을 때 발생하는 이벤트입니다. -이 이벤트는 어플리케이션이 정상 종료되지 않았을 때만 발현됩니다. -만약 유저가 'Cmd + Q' 또는 개발자가 'app.quit()'를 호출했다면, Electron은 먼저 모든 윈도우창 종료를 시도합니다. -그 다음에, 'will-quit' 이벤트를 발현시킵니다. -그리고, 'will-quit'가 발현된 경우에는 'window-all-closed' 이벤트는 발현되지 않습니다. +이 이벤트는 어플리케이션이 완전히 종료되지 않았을 때만 발생합니다. +만약 사용자가 `Cmd + Q`를 입력했거나 개발자가 `app.quit()`를 호출했다면, +Electron은 먼저 모든 윈도우창의 종료를 시도하고 `will-quit` 이벤트를 발생시킵니다. +그리고 `will-quit` 이벤트가 발생했을 땐 `window-all-closed` 이벤트가 발생하지 않습니다. + +**역주:** 이 이벤트는 말 그대로 현재 어플리케이션에서 윈도우창만 완전히 종료됬을 때 발생하는 이벤트 입니다. + 따라서 어플리케이션을 완전히 종료하려면 이 이벤트에서 `app.quit()`를 호출해 주어야 합니다. ### Event: 'before-quit' @@ -44,8 +46,9 @@ Returns: * `event` Event -어플리케이션이 어플리케이션의 윈도우 종료를 시작하기 전에, 발현됩니다. -'event.preventDefault()' 호출은 어플리케이션의 강제종료 행위를 방지합니다. +어플리케이션 윈도우창들이 닫히기 시작할 때 발생하는 이벤트입니다. +`event.preventDefault()` 호출은 이벤트의 기본 동작을 방지하기 때문에 +이를 통해 어플리케이션의 종료를 방지할 수 있습니다. ### Event: 'will-quit' @@ -53,14 +56,14 @@ Returns: * `event` Event -모든 윈도우창이 종료되고 어플리케이션이 종료하고자 할 때, 이벤트가 발현됩니다. -'event.preventDefault()'의 호출은 어플리케이션 종료를 방지합니다. -'will-quit' 이벤트와 'window-all-closed' 이벤트와의 차이점을 확인하려면, -'window-all-close' 이벤트의 설명을 참조합시다. +모든 윈도우창들이 종료되고 어플리케이션이 종료되기 시작할 때 발생하는 이벤트 입니다. +`event.preventDefault()` 호출을 통해 어플리케이션의 종료를 방지할 수 있습니다. + +`will-quit` 와 `window-all-closed` 이벤트의 차이점을 확인하려면 `window-all-close` 이벤트의 설명을 참고하세요. ### Event: 'quit' -어플리케이션이 종료될 때, 발현됩니다. +어플리케이션이 종료될 때 발생하는 이벤트입니다. ### Event: 'open-file' @@ -69,15 +72,13 @@ Returns: * `event` Event * `path` String -어플리케이션을 이용하여 파일을 열고자 할 때, 발현됩니다. +사용자가 어플리케이션을 통해 파일을 열고자 할 때 발생하는 이벤트입니다. -'open-file' 이벤트는 보통 어플리케이션이 열려 있을 때와, -파일을 열기 위해 OS가 어플리케이션을 재사용할 때 발현됩니다. -'open-file'은 파일이 dock에 추가될 때와 어플리케이션이 실행하기 전에도 발현됩니다. -위의 케이스를 처리하기 위해서는, 'ready' 이벤트가 발현되기도 전에, 어플리케이션 시작 초기 시 -'open-file' 이벤트에 linsten을 걸어 놨는지 반드시 확인해야 합니다. +`open-file` 이벤트는 보통 어플리케이션이 열려 있을 때와 OS가 파일을 열기 위해 어플리케이션을 재사용할 때 발생합니다. +`open-file` 이벤트는 파일을 dock에 떨어트릴 때와 어플리케이션이 실행되기 전에도 발생합니다. +이 경우엔 확실히 `open-file` 이벤트 리스너를 어플리케이션이 시작하기 전에 설정해 놓았는지 확인해야 합니다. (`ready` 이벤트가 발생하기 전에) -이 이벤트를 처리하기 위한다면, 유저는 'even.preventDefault()'를 호출해야 합니다. +이 이벤트를 처리하려면 반드시 `event.preventDefault()`를 호출해야 합니다. ### Event: 'open-url' @@ -86,9 +87,11 @@ Returns: * `event` Event * `url` String -유저가 어플리케이션을 이용하여 URL을 열고자 할 경우, 발현됩니다. -어플리케이션을 통해 열기 위해서는 URL 구조가 반드시 등록되어 있어야 합니다. -이 이벤트를 처리하기 위해선, 유저가 'event.preventDefault()'을 호출해야 합니다. +유저가 어플리케이션을 통해 URL을 열고자 할 때 발생하는 이벤트입니다. + +어플리케이션에서 URL을 열기 위해선 반드시 URL 스킴이 등록되어 있어야 합니다. + +이 이벤트를 처리하려면 반드시 `event.preventDefault()`를 호출해야 합니다. ### Event: 'activate' _OS X_ @@ -97,8 +100,8 @@ Returns: * `event` Event * `hasVisibleWindows` Bool -어플리케이션이 활성화 되었을 때 발현됩니다. -(어플리케이션은 dock 아이콘을 click했을 때 주로 활성화됩니다.) +어플리케이션이 활성화 되었을 때 발생하는 이벤트 입니다. +이 이벤트는 어플리케이션의 dock 아이콘을 클릭했을 때 주로 발생합니다. ### Event: 'browser-window-blur' @@ -107,7 +110,7 @@ Returns: * `event` Event * `window` BrowserWindow -[browserWindow](browser-window.md)가 흐려졌을 때, 호출됩니다. +[browserWindow](browser-window.md)에 대한 포커스가 사라졌을 때 발생하는 이벤트 입니다. ### Event: 'browser-window-focus' @@ -116,8 +119,9 @@ Returns: * `event` Event * `window` BrowserWindow -[browserWindow](browser-window.md)을 포커싱했을 때, 호출됩니다. -(포커싱이란? 클릭 또는 활성화했을 때를 의미) +[browserWindow](browser-window.md)에 대한 포커스가 발생했을 때 발생하는 이벤트 입니다. + +**역주:** _포커스_는 창을 클릭해서 활성화 시켰을 때를 말합니다. ### Event: 'browser-window-created' @@ -126,11 +130,11 @@ Returns: * `event` Event * `window` BrowserWindow -새로운 [browserWindow](browser-window.md)가 생성될 때 발현됩니다. +새로운 [browserWindow](browser-window.md)가 생성되었을 때 발생하는 이벤트 입니다. ### Event: 'select-certificate' -유저인증이 요청되었을 때 발현됩니다. +사용자 인증이 요청되었을 때 발생하는 이벤트 입니다. Returns: @@ -138,8 +142,8 @@ Returns: * `webContents` [WebContents](browser-window.md#class-webcontents) * `url` String * `certificateList` [Objects] - * `data` PEM encoded data - * `issuerName` Issuer's Common Name + * `data` PEM으로 인코딩된 데이터 + * `issuerName` 발급자의 공통 이름 * `callback` Function ```javascript @@ -149,180 +153,170 @@ app.on('select-certificate', function(event, host, url, list, callback) { }) ``` -'url' 유저인증 요청의 탐색 항목에 대응합니다. -그리고, 'callback' 는 리스트로 필터링된 항목과 함께 호출될 필요가 있습니다. +`url`에 대한 -'event.preventDefault()' 호출은 기록소로부터 처음인증된 정보를 사용하는 -어플리케이션을 막습니다. +`url`은 클라이언트 인증서를 요청하는 탐색 항목에 해당합니다. +그리고 `callback`은 목록에서 필터링된 항목과 함께 호출될 필요가 있습니다. + +이 이벤트에서의 `event.preventDefault()` 호출은 초기 인증에 사용한 저장된 데이터를 사용하는 것을 막습니다. ### Event: 'gpu-process-crashed' -GPU가 충돌을 일으켰을 때, 발현됩니다. +GPU가 작동하던 중 크래시가 일어났을 때 발생하는 이벤트입니다. ## Methods -'app' 객체는 밑의 함수를 포함하고 있습니다: +`app` 객체는 다음과 같은 메서드를 가지고 있습니다: -**Note:** 어떤 함수들은 표시된 특정한 운영체제에서만 사용가능합니다. +**참고:** 몇몇 메서드는 특정 플랫폼에서만 작동합니다. ### `app.quit()` -모든 윈도우창 종료를 시도합니다. 'before-quit' 이벤트가 먼저 발현됩니다. -모든 윈도우창이 성공적으로 종료되었다면, 'will-quit' 이벤트가 발현하고, -디폴트설정으로 어플리케이션이 종료됩니다. - -이 함수는 모든 'beforeunload'과 'unload' 이벤트 처리기가 제대로 실행되었음을 보장합니다. -(즉, 'beforeunload'와 'unload'가 정상 실행되었을 때, 실행가능합니다.) - -'beforeunload' 이벤트 처리기가 'false'를 반환하였을 경우, 윈도우 창 종료가 취소 될 수 있습니다. +모든 윈도우창 종료를 시도합니다. `before-quit` 이벤트가 먼저 발생합니다. +모든 윈도우창이 성공적으로 종료되면 `will-quit` 이벤트가 발생하고 기본 동작에 따라 어플리케이션이 종료됩니다. +이 함수는 모든 `beforeunload`와 `unload` 이벤트 핸들러가 제대로 실행됨을 보장합니다. +`beforeunload` 이벤트 핸들러에서 `false`를 반환했을 때 윈도우창 종료가 취소 될 수 있습니다. ### `app.getAppPath()` -현재 어플리케이션의 디렉토리를 반환합니다. +현재 어플리케이션의 디렉터리를 반환합니다. ### `app.getPath(name)` * `name` String -특정한 디렉토리의 경로나 'name' 파일의 경로를 찾아 반환합니다. -실패할 경우, 'Error'를 반환합니다. +`name`에 관련한 특정 디렉터리 또는 파일의 경로를 반환합니다. +경로를 가져오는 데 실패할 경우 `Error`를 반환합니다. -유저는 다음과 같은 이름으로 경로를 요쳥할 수 있습니다: +**역주:** 이 메서드는 운영체제에서 지정한 특수 디렉터리를 가져오는데 사용할 수 있습니다. -* `home` = 유저의 홈 디렉토리. -* `appData` = 유저의 어플리케이션 데이터 디렉토리, 디폴트설정으로: - * `%APPDATA%` = on Windows - * `$XDG_CONFIG_HOME` 또는 `~/.config` = on Linux - * `~/Library/Application Support` = on OS X -* `userData` = 유저 app의 설정파일을 저장하는 디렉토리, -디폴트설정으로 'appData' 디렉토리에 유저 app의 이름을 추가한 형식. -* `temp` = 임시 디렉토리. -* `userDesktop` = 현재 로그인한 유저의 데스트탑 디렉토리. -* `exe` = 현재 실행가능한 파일. -* `module` = `libchromiumcontent` 라이브러리. +`name`은 다음 목록에 있는 경로 중 하나를 선택해 사용할 수 있습니다: + +* `home` - 사용자의 홈 디렉터리. +* `appData` - 각 사용자의 어플리케이션 데이터 디렉터리. 기본 경로는 다음과 같습니다: + * `%APPDATA%` - Windows + * `$XDG_CONFIG_HOME` 또는 `~/.config` - Linux + * `~/Library/Application Support` - OS X +* `userData` - 어플리케이션의 설정을 저장하는 디렉터리. + 이 디렉터리는 기본적으로 `appData`에 어플리케이션 이름으로 생성된 폴더가 지정됩니다. +* `temp` - 임시 폴더 디렉터리. +* `userDesktop` - 현재 사용자의 데스트탑 디렉터리. +* `exe` - 현재 실행중인 Electron 바이너리 파일. +* `module` - `libchromiumcontent` 라이브러리. ### `app.setPath(name, path)` * `name` String * `path` String -특정한 디렉토리나 파일이름이 'name'인 'path'를 재정의합니다. -만약 지정된 디렉토리의 경로가 존재하지 않는다면, 디렉토리가 새로 생성됩니다. -실패시, 'Error'를 반환합니다. +`name`에 대한 특정 디렉터리나 파일의 경로인 `path`를 재정의합니다. +만약 지정한 디렉터리의 경로가 존재하지 않으면 디렉터리가 이 메서드를 통해 새로 생성됩니다. +재정의에 실패했을 땐 `Error`를 반환합니다. -유저는 'app.getPath'에 정의되어 있는 'name' 경로만 재정의할 수 있습니다. +이 메서드는 `app.getPath`에 정의되어 있는 `name`의 경로만 재정의할 수 있습니다. -디폴트설정으로, 웹페이지의 쿠키와 캐시는 'userData' 디렉토리 밑에 저장됩니다. - -만약 유저가 이 위치를 변경하고자 한다면, 'app' 모듈의 'ready' 이벤트가 발현되기 전, -유저는 반드시 'userData' 경로를 재정의해야 합니다. +기본적으로, 웹 페이지의 쿠키와 캐시는 `userData` 디렉터리에 저장됩니다. +만약 이 위치를 변경하고자 한다면, 반드시 `app` 모듈의 `ready` 이벤트가 발생하기 전에 `userData` 경로를 재정의해야 합니다. ### `app.getVersion()` 로드된 어플리케이션의 버전을 반환합니다. -만약 'package.json' 파일에서 어플리케이션의 버전을 찾지 못한다면, -현재 번들 또는 실행 파일의 버전이 반환됩니다. +만약 `package.json` 파일에서 어플리케이션의 버전을 찾을 수 없는 경우, 현재 번들 또는 실행 파일의 버전을 반환합니다. ### `app.getName()` -응용프로그램(=어플리케이션)의 'package.json' 파일에 있는 -현재 응용프로그램의 이름을 반환합니다. +`package.json`에서 기술된 현재 어플리케이션의 이름을 반환합니다. -NPM 모듈 스펙에 따라, 대부분 'package.json'의 'name' 필드는 소문자 이름입니다. -유저는 'productName'의 필드를 지정해야 합니다. -'productName'는 응용프로그램의 대문자 이름입니다. -'productName'는 Electron에서 선호하는 'name' 입니다. +npm 모듈 규칙에 따라 대부분의 경우 `package.json`의 `name` 필드는 소문자 이름을 사용합니다. +하지만 Electron은 `name`대신 `productName` 필드를 주로 사용하기 때문에 반드시 이 필드도 같이 지정해야 합니다. +이 필드는 맨 앞글자가 대문자인 어플리케이션 전체 이름을 지정해야 합니다. ### `app.getLocale()` -현재 응용프로그램의 locale을 반환합니다. +현재 어플리케이션의 [로케일](https://ko.wikipedia.org/wiki/%EB%A1%9C%EC%BC%80%EC%9D%BC)을 반환합니다. ### `app.resolveProxy(url, callback)` * `url` URL * `callback` Function -'url'을 위해 프록시 정보를 해석합니다. -'callback'은 'callback(proxy)' 요청이 수행될 때, -호출됩니다. +`url`의 프록시 정보를 해석합니다. +`callback`은 요청이 수행되었을 때 `callback(proxy)` 형태로 호출됩니다. ### `app.addRecentDocument(path)` * `path` String -최근 문서 목록에 'path'를 추가합니다. +최근 문서 목록에 `path`를 추가합니다. -목록은 운영체제에 의해 관리됩니다. -Windows 운영체제에서는, 작업표시줄에서 참조할 수 있습니다. -OS X 운영체제에서는, dock 메뉴에서 참조할 수 있습니다. +이 목록은 OS에 의해 관리됩니다. +최근 문서 목록은 Windows의 경우 작업 표시줄에서 찾을 수 있고, OS X의 경우 dock 메뉴에서 찾을 수 있습니다. ### `app.clearRecentDocuments()` -최근 문서 목록을 모두 지웁니다. +최근 문서 목록을 모두 비웁니다. ### `app.setUserTasks(tasks)` _Windows_ -* `tasks` Array - 'Task' 객체의 배열 +* `tasks` Array - `Task` 객체의 배열 -Windows 운영체제에서 JumpList의 [Tasks][tasks] 카테고리로 'tasks'를 추가합니다. +Windows에서 사용할 수 있는 JumpList의 [Tasks][tasks] 카테고리에 `task`를 추가합니다. -'tasks'는 밑의 형식을 따르는 'Task' 객체의 배열입니다: +`tasks`는 다음과 같은 구조를 가지는 `Task` 객체의 배열입니다: `Task` Object -* `program` String - 프로그램을 실행할 경로, 대부분 유저는 현재 프로그램을 여는 'process.execPath'를 지정합니다. -* `arguments` String - 'program'이 실행될 때의 명령문 인자. -* `title` String - JumpList에 표시할 문장. -* `description` String - 이 task 객체에 대한 설명. -* `iconPath` String - 아이콘을 포함한 임의의 리소스 파일이며, JumpList에 표시될 아이콘의 절대 경로. -유저는 대부분 프로그램의 아이콘을 표시하기 위해 'process.execPath'를 지정합니다. -* `iconIndex` Integer - 아이콘 파일안의 아이콘 색인(index). 만약, 아이콘 파일 안에 두 개 이상의 아이콘이 있을 경우, - 아이콘을 특정하기 위해 이 값을 설정합니다. 단, 하나의 아이콘만 있을 경우는 0 값을 가집니다. - +* `program` String - 실행할 프로그램의 경로. + 보통 현재 작동중인 어플리케이션의 경로인 `process.execPath`를 지정합니다. +* `arguments` String - `program`이 실행될 때 사용될 명령줄 인자. +* `title` String - JumpList에 표시할 문자열. +* `description` String - 이 작업에 대한 설명. +* `iconPath` String - JumpList에 표시될 아이콘의 절대 경로. + 아이콘을 포함하고 있는 임의의 리소스 파일을 사용할 수 있습니다. + 보통 어플리케이션의 아이콘을 그대로 사용하기 위해 `process.execPath`를 지정합니다. +* `iconIndex` Integer - 아이콘 파일의 인덱스. 만약 아이콘 파일이 두 개 이상의 아이콘을 가지고 있을 경우, + 사용할 아이콘의 인덱스를 이 옵션으로 지정해 주어야 합니다. 단, 아이콘을 하나만 포함하고 있는 경우 0을 지정하면 됩니다. + ### `app.commandLine.appendSwitch(switch[, value])` -Append a switch (with optional `value`) to Chromium's command line. -Chromium의 명령문에 (선택적으로, 'value'와 함께) switch를 추가합니다. +Chrominum의 명령줄에 스위치를 추가합니다. `value`는 추가적인 값을 뜻하며 옵션입니다. -**Note:** 이 함수는 'process.argv'에 영향을 주지 않습니다. -그리고, 보통 이 함수는 개발자들이 하드웨어 수준의 Chrominum의 행동을 제어하기 위해 주로 사용됩니다. +**참고:** 이 메서드는 `process.argv`에 영향을 주지 않습니다. + 개발자들은 보통 Chrominum의 로우 레벨 수준의 동작을 제어하기 위해 주로 사용합니다. ### `app.commandLine.appendArgument(value)` -Chromium의 명령문에 인자를 추가합니다. 인자는 올바르게 인용될 것입니다. +Chrominum의 명령줄에 인자를 추가합니다. 인자는 올바르게 인용됩니다. -**Note:** 'process.argv'에 영향을 주지는 않습니다. +**참고:** 이 메서드는 `process.argv`에 영향을 주지 않습니다. ### `app.dock.bounce([type])` _OS X_ -* `type` String (optional) - 'critical'이나 'informational'. 디폴트 설정은 'informational' +* `type` String (optional) - `critical` 또는 `informational`을 지정할 수 있습니다. 기본값은 `informational` 입니다. -'critical'이 input으로 전달되면, dock 아이콘은 응용프로그램이 활성화되거나, 요청이 취소될 때까지 -계속 bounce합니다. +`critical`이 전달되면 dock 아이콘이 어플리케이션이 활성화되거나 요청이 중지되기 전까지 통통 튑니다. -'informational'이 input으로 전달되면, dock 아이콘은 1초만 bounce합니다. -그러나, 응용프로그램이 활성화되거나 요청이 취소될 때까지 요청은 계속 활성화되어 있습니다. +`informational`이 전달되면 dock 아이콘이 1초만 통통 튑니다. +하지만 어플리케이션이 활성화되거나 요청이 중지되기 전까지 요청은 계속 활성화로 유지 됩니다. -요청을 대표하는 ID를 반환합니다. +또한 요청을 취소할 때 사용할 수 있는 ID를 반환합니다. ### `app.dock.cancelBounce(id)` _OS X_ * `id` Integer -'id'의 반송을 취소합니다. - +`app.dock.bounce([type])` 메서드에서 반환한 `id`의 통통 튀는 효과를 취소합니다. ### `app.dock.setBadge(text)` _OS X_ * `text` String -dock의 badge 구역에 표현될 문장을 설정합니다. +dock의 badge에 표시할 문자열을 설정합니다. ### `app.dock.getBadge()` _OS X_ -dock의 badge 라인을 반환합니다. - +dock의 badge에 설정된 문자열을 반환합니다. ### `app.dock.hide()` _OS X_ @@ -330,13 +324,13 @@ dock 아이콘을 숨깁니다. ### `app.dock.show()` _OS X_ -dock 아이콘을 보여줍니다. +dock 아이콘을 표시합니다. ### `app.dock.setMenu(menu)` _OS X_ * `menu` Menu -어플리케이션의 [dock menu][dock-menu]을 결정합니다. +어플리케이션의 [dock menu][dock-menu]를 설정합니다. [dock-menu]:https://developer.apple.com/library/mac/documentation/Carbon/Conceptual/customizing_docktile/concepts/dockconcepts.html#//apple_ref/doc/uid/TP30000986-CH2-TPXREF103 [tasks]:http://msdn.microsoft.com/en-us/library/windows/desktop/dd378460(v=vs.85).aspx#tasks