2013年3月27日
#
2012年10月14日
#
WTLのCTaskDialog を使って、解像度の変更時に表示される確認ダイアログボックスを
再現してみました。
---
class CConfirmDialog : public CTaskDialogImpl<CConfirmDialog>
{
public:
CConfirmDialog(HWND hWndParent = NULL) :
CTaskDialogImpl<CConfirmDialog>(hWndParent)
{
this->ModifyFlags(0, TDF_CALLBACK_TIMER);
this->SetMainInstructionText(L"このディスプレイ設定をそのままにしますか?");
static TASKDIALOG_BUTTON buttons[] = {
{ TDCBF_OK_BUTTON, L"変更を維持する(&K)" },
{ TDCBF_CANCEL_BUTTON, L"元に戻す(&R)" } };
this->SetButtons(buttons, _countof(buttons), TDCBF_OK_BUTTON);
this->SetFooterText(L" ");
}
~CConfirmDialog()
{
}
// Overrideables - notification handlers
public:
void OnDialogConstructed()
{
}
void OnCreated()
{
::SetWindowText(m_hWnd, L"ディスプレイ設定");
}
BOOL OnButtonClicked(int /*nButton*/)
{
return FALSE; // don't prevent dialog to close
}
void OnRadioButtonClicked(int /*nRadioButton*/)
{
}
void OnHyperlinkClicked(LPCWSTR /*pszHREF*/)
{
}
void OnExpandoButtonClicked(bool /*bExpanded*/)
{
}
void OnVerificationClicked(bool /*bChecked*/)
{
}
void OnHelp()
{
}
BOOL OnTimer(DWORD dwTickCount)
{
USES_CONVERSION;
const int MAX_MILLISECOND = 10000;
if (MAX_MILLISECOND < dwTickCount)
{
this->ClickButton(TDCBF_CANCEL_BUTTON);
}
else
{
const stringClass& strFooterText = thisClass::FormatString(
_T("%d 秒で前のディスプレイ設定に戻ります。"),
(MAX_MILLISECOND - dwTickCount) / 1000);
this->UpdateElementText(TDE_FOOTER, T2W((LPTSTR)(LPCTSTR)strFooterText));
}
return FALSE; // don't reset counter
}
void OnNavigated()
{
}
void OnDestroyed()
{
}
};
---
2012年9月26日
#
バッチファイルで、Python のインストールディレクトリを取得する方法です。
---
if /i "%PROCESSOR_ARCHITECTURE%" == "AMD64" (
for %%h in ( 3.0 3.1 3.2 ) do (
for /f "tokens=1,2,*" %%i in ('reg query "HKLM\SOFTWARE\Wow6432Node\Python\PythonCore\%%h\InstallPath" /v "" 2^>nul') do (
if /i "%%i" == "(Default)" (
set PythonDir=%%k
)
)
)
)
for %%h in ( 3.0 3.1 3.2 ) do (
for /f "tokens=1,2,*" %%i in ('reg query "HKLM\SOFTWARE\Python\PythonCore\%%h\InstallPath" /v "" 2^>nul') do (
if /i "%%i" == "(Default)" (
set PythonDir=%%k
)
)
)
if /i "%PythonDir:~-1,1%" == "\" (
set PythonDir=%PythonDir:~0,-1%
)
---
2012年9月19日
#
Hyper-V 3.0 のVM を下記の形式のフォルダーにエクスポートする
PowerShell Script を作成しました。簡易的なバックアップとして
使用しています。
D:\Backup\Virtual Machines\<VMName>\YYMMDD.<VMName>
---
$VMName = "Test"
$BaseDirectory = "D:\Backup\Virtual Machines"
Get-VM -Name $VMName | ForEach-Object { $VM_State = $_.State }
if ($VM_State -eq "Running")
{
#Stop-VM -Name $VMName
Write-Host $VMName is running.
return
};
Export-VM -Name $VMName -Path "$BaseDirectory\$VMName"
$FolderName = $(Get-Date).ToString("yyMMdd") + "." + $VMName
Rename-Item "$BaseDirectory\$VMName\$VMName" "$FolderName"
---
WinRAR を使ってISO ファイルを展開するバッチファイルを作成しました。
Windows 8 なら、diskpart を使えばマウントできるんでしょうけどね。
---
set ISOFILE=C:\Hoge.iso
set DSTDIR=C:\Hoge
for /f "tokens=1,2,*" %%i in ('%WinDir%\System32\reg.exe query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\WinRAR archiver" /v "InstallLocation" 2^>nul') do (
if /i "%%i" == "InstallLocation" (
set WinRARDir=%%k
)
)
if not exist "%WinRARDir%\WinRAR.exe" (
echo.
echo WinRAR is NOT isnstalled.
echo.
exit /b 1
)
start "" /wait "%WinRARDir%\WinRAR.exe" x "%ISOFILE%" "%DSTDIR%\"
if not %ErrorLevel% == 0 (
echo An error occurd.
exit /b 1
)
---
2012年9月11日
#
Windows 8/Windows Server 2012 には、Hyper-V 3.0 用にcmdlet が強化されています。
この強化されたcmdletを使って、VM名の フォルダーの下にSnapshot, Virtual Hard Disks,
Virtual Machine フォルダーを、まとめて作成するスクリプトを作成してみました。
(Windows 8 RTM で動作確認しています。)
---
#$BaseDirectory = "H:\Virtual Machines"
$BaseDirectory = Split-Path $MyInvocation.MyCommand.Path
# Please customize following values
$VMName = "Test"
$VMHardDiskDrive_Sizebytes = 127GB
$VMHardDiskDrive_LogicalSectorSize = 4KB
$VMProcessor_Count = 2
$VMMemory_StartupBytes = 2048MB
$VMNetworkAdapter_SwitchName = “Virtual Switch”
New-Item -type directory "$BaseDirectory\$VMName\Virtual Hard Disks"
New-VHD `
–Path "$BaseDirectory\$VMName\Virtual Hard Disks\$VMName.vhdx" `
–SizeBytes $VMHardDiskDrive_Sizebytes `
–LogicalSectorSize $VMHardDiskDrive_LogicalSectorSize `
–Dynamic
# "Virtual Machine" & "Snapshot" directories are automatically created under $BaseDirectory.
New-VM -name $VMName `
-path "$BaseDirectory"
Set-VMProcessor $VMName `
-Count $VMProcessor_Count
Set-VMMemory $VMName `
-StartupBytes $VMMemory_StartupBytes
Add-VMHardDiskDrive $VMName `
-path "$BaseDirectory\$VMName\Virtual Hard Disks\$VMName.vhdx" `
-ControllerType IDE `
-ControllerNumber 0 `
-ControllerLocation 0
Connect-VMNetworkAdapter $VMName `
-SwitchName $VMNetworkAdapter_SwitchName
#Start-VM $VMName
---
2012年1月6日
#
バッチファイルでは、以下のようにset /a を使うと数値 (整数のみ)の計算ができます。
下の例では、%HOGE2% には、2 が代入されます。
set HOGE=1
rem set HOGE=aaaa
set /a FUGA=%HOGE% + 1
しかし、%HOGE% に数字以外が代入されている場合、エラーは発生せずに、
%HOGE2% には、1 が代入されます。%HOGE% は0 と見なされるようです。
この仕様は、便利なこともあるかもしれませんが、バグになることも多いかと思います。
そこで、以下のように事前に%HOGE% が数字かどうかを検証して、エラーにすると
良いでしょう。
rem set HOGE=1
set HOGE=aaaa
set /a HOGE2=%HOGE%*1
if not "%HOGE%"=="%HOGE2%" (
echo 数字ではありません
pause
exit /b 1
)
2012年1月4日
#
4年半ぶりに、WTL 8.1.11324 がリリースされました。もう更新されることは無いのかと
思っていたので、かなり驚きました。DWM とRibbun 対応がメインのようです。
// CDwm
// CDwmImpl<T, TBase>
// CDwmWindowT<TBase> - CDwmWindow
// CDwmThumbnailT<t_bManaged, TBase>
// CDwmThumbnail
// CDwmThumbnailHandle
// CAeroControlImpl
// CRibbonUpdateUI : Automatic mapping of ribbon UI elements
//
// RibbonUI::Text
// RibbonUI::CharFormat
// RibbonUI::ICtrl
// RibbonUI::CtrlImpl
// RibbonUI::CommandCtrlImpl
// RibbonUI::ItemProperty
// RibbonUI::CollectionImplBase
// RibbonUI::CollectionImpl
// RibbonUI::TextCollectionImpl
// RibbonUI::ItemCollectionImpl
// RibbonUI::ComboCollectionImpl
// RibbonUI::CommandCollectionImpl
// RibbonUI::ToolbarCollectionImpl
// RibbonUI::SimpleCollectionImpl
// RibbonUI::CollectionCtrlImpl
// RibbonUI::ToolbarGalleryCtrlImpl
// RibbonUI::SimpleCollectionCtrlImpl
// RibbonUI::RecentItemsCtrlImpl
// RibbonUI::FontCtrlImpl
// RibbonUI::ColorCtrlImpl
// RibbonUI::SpinnerCtrlImpl
//
// RibbonUI::CRibbonImpl
// CRibbonImpl::CRibbonComboCtrl
// CRibbonImpl::CRibbonItemGalleryCtrl
// CRibbonImpl::CRibbonCommandGalleryCtrl
// CRibbonImpl::CRibbonToolbarGalleryCtrl
// CRibbonImpl::CRibbonSimpleComboCtrl
// CRibbonImpl::CRibbonSimpleGalleryCtrl
// CRibbonImpl::CRibbonRecentItemsCtrl
// CRibbonImpl::CRibbonColorCtrl
// CRibbonImpl::CRibbonFontCtrl
// CRibbonImpl::CRibbonSpinnerCtrl
// CRibbonImpl::CRibbonFloatSpinnerCtrl
// CRibbonImpl::CRibbonCommandCtrl
//
// CRibbonFrameWindowImplBase
// CRibbonFrameWindowImpl
// CRibbonMDIFrameWindowImpl
// CRibbonPersist
//
// Global functions:
// RibbonUI::SetPropertyVal()
// RibbonUI::GetImage()
■Windows Template Library (WTL) - SourceForge
http://sourceforge.net/projects/wtl/
2011年12月30日
#
"1.0.0.1"や"1.00.000.2"といった(ファイル)バージョン文字列を扱うクラスを、
アップデートしました。
---
#pragma once
#include <stdlib.h>
#include <vector>
////////////////////////////////////////////////////////////////////////////////
// CVersionStringT
template <int t_nCount, TCHAR t_chSep = _T('.')>
class CVersionStringT
{
protected:
typedef CVersionStringTr<t_nCount> thisClass;
#ifndef _CSTRING_NS
typedef CString stringClass;
#else
typedef _CSTRING_NS::CString stringClass;
#endif
public:
CVersionStringT() : m_dwVals(t_nCount)
{
this->SetVersion(_T(""));
}
CVersionStringT(__in_z LPCTSTR newVal) : m_dwVals(t_nCount)
{
this->SetVersion(newVal);
}
~CVersionStringT()
{
}
public:
operator stringClass ()
{
return thisClass::GetVersion();
}
thisClass &operator = (__in_z LPCTSTR newVal)
{
thisClass::SetVersion(szVersion)
return *this;
}
bool operator == (__in const thisClass& versionString)
{
return (thisClass::Compare(*this, versionString) == 0);
}
bool operator < (__in const thisClass& versionString)
{
return (thisClass::Compare(*this, versionString) < 0);
}
bool operator > (__in const thisClass& versionString)
{
return (thisClass::Compare(*this, versionString) > 0);
}
bool operator <= (__in const thisClass& versionString)
{
return (thisClass::Compare(*this, versionString) <= 0);
}
bool operator >= (__in const thisClass& versionString)
{
return (thisClass::Compare(*this, versionString) >= 0);
}
public:
stringClass GetVersion()
{
return thisClass::Convert(m_dwVals);
}
void SetVersion(__in_z LPCTSTR newVal)
{
thisClass::Parse(newVal, m_dwVals);
}
int Compare(__in const thisClass& versionString)
{
return thisClass::Compare(*this, versionString);
}
public:
static stringClass Convert(__in const std::vectorr<DWORD>& dwVals)
{
stringClass strVersion;
for (int i = 0; i < t_nCount; i++)
{
TCHAR szVal[16] = { 0 };
#pragma warning(push)
#pragma warning(disable:4996)
_itot(dwVals[i], szVal, 10);
#pragma warning(pop)
if (i == 0)
{
strVersion = szVal;
}
else
{
strVersion += CString(t_chSep) + szVal;
}
}
return strVersion;
}
static void Parse(__in_z LPCTSTR szVersion, __out std::vectorr<DWORD>& dwVals)
{
ATLASSERT(szVersion);
stringClass strVersion = szVersion;
for (int i = 0; i < t_nCount; i++)
{
int nLength = strVersion.Find(t_chSep, 0);
if (nLength == -1)
{
stringClass strVal = strVersion.Left(strVersion.GetLength());
nLength = strVersion.GetLength();
strVal.Trim();
dwVals[i] = (strVal.GetLength() == 0) ? 0 : _tstoi(strVal);
}
else
{
stringClass strVal = strVersion.Left(nLength);
strVal.Trim();
dwVals[i] = (strVal.GetLength() == 0) ? 0 : _tstoi(strVal);
}
strVersion = strVersion.Right(strVersion.GetLength() - nLength - 1);
}
}
static int Compare(__in_z LPCTSTR szVersion1, __in_z LPCTSTR szVersion2)
{
ATLASSERT(szVersion1);
ATLASSERT(szVersion2);
thisClass versionString1 = szVersion1;
thisClass versionString2 = szVersion2;
return thisClass::Compare(versionString1, versionString2);
}
static int Compare(__in const thisClass& versionString1, __in const thisClass& versionString2)
{
for (int i = 0; i < t_nCount; i++)
{
if (versionString1.m_dwVals[i] r< versionString2.m_dwVals[i])
{
return -1;
}
else if (versionString1.m_dwVals[i] > versionString2.m_dwVals[i])
{
return 1;
}
}
return 0;
}
public:
std::vector<DWORD> m_dwVals;
};
typedef CVersionStringT<3> CMsiVersionString;
typedef CVersionStringT<4> CFileVersionString;
---
■(ファイル)バージョン文字列を扱うクラス (CVersionStringT) - Windows - 社本@元ネオニート Blog
http://www.ailight.jp/Blog/sha256/archive/2007/4/13/(%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB)%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%96%87%E5%AD%97%E5%88%97%E3%82%92%E6%89%B1%E3%81%86%E3%82%AF%E3%83%A9%E3%82%B9%20(CVersionStringT)%20-%20Windows
2011年11月16日
#
C/C++ で、ネイティブ なモジュールを開発していて面倒なのが、ビルドナンバーのインクリメントです。
モジュールが少ないうちは手で更新することもできますが、多くなってくると手で更新することは現実的では
ありません。やり方は色々あるでしょうが、バッチファイルのみで簡単にできる方法を紹介します。
1. ビルド番号を定義するヘッダーファイルを作成
ここでは、ファイル名をBuildNo.h、ビルド番号をBUILDNO としています。
---
#pragma once
#define BUILDNO 1
#define BUILDNO_STR "1"
---
2. ビルド番号をインクリメントするバッチファイルを作成
1 で用意したBuildNo.h をパースして、ビルド番号を取得&インクリメントした後、BuildNo.h を
作成します。上書きしてしまうことが不安な人は、オリジナルをリネームしてバックアップしておくと
良いかも しれません。ここは、ファイル名をIncrementBuildNo.cmd とします。
---
@echo off
set HEADERFILE=%~dp0BuildNo.h
for /F "usebackq tokens=1,2,3" %%i in ("%HEADERFILE%") do (
if "%%i"=="#define" (
if "%%j"=="BUILDNO" (
set BuildNo=%%k
)
)
)
if "%BuildNo%"=="" (
echo エラー: ビルド番号が取得できませんでした
exit /b 1
)
rem ビルド番号のインクリメント
set /a NewBuildNo=%BuildNo%+1
rem 新しい BuildNo.h の生成
echo #pragma once >> "%HEADERFILE%"
echo. >> "%HEADERFILE%"
echo #define BUILDNO %NewBuildNo% >> "%HEADERFILE%"
echo #define BUILDNO_STR "%NewBuildNo%" >> "%HEADERFILE%"
---
3. RC ファイルを修正
ビルド番号を使うように、RCファイルを修正します。以下は、修正が必要な部分を抜粋しています。
---
FILEVERSION 1.0.0.BUILDNO
PRODUCTVERSION 1.0.0.BUILDNO
VALUE "FileVersion", "1.0.0." BUILDNO_STR
VALUE "ProductVersion", "1.0.0." BUILDNO_STR
---
4. ビルド前にバッチファイルを呼び出す
makefile やMSBUILD などのビルド前の処理に、2 で用意したバッチファイルを呼び出すようにすれば、
ビルドする度にBuildNo.h のビルド番号がインクリメントされます。
2011年10月29日
#
バッチファイルで管理者権限があるかどうかを調べる方法です。
copy nul "%SystemRoot%\temp.tmp" 1>nul 2>&1
if errorlevel 1 (
echo.
echo Please run as administrator
echo.
pause
goto :EOF
) else (
del "%SystemRoot%\temp.tmp" 1>nul 2>&1
)
2011年10月12日
#
バッチファイルで、WiX のインストール ディレクトリ を取得する方法です。
---
call :GetWiX30Dir
echo WIX30DIR: %WIX30DIR%
goto :EOF
rem ===================================================
rem GetWiX30Dir
rem ===================================================
:GetWiX30Dir
if /i "%PROCESSOR_ARCHITECTURE%"=="x86" (
for /f "tokens=1,2,*" %%i in ('reg query "HKLM\SOFTWARE\Microsoft\Windows Installer XML\3.0" /v "InstallRoot"') do (
if /i "%%i"=="InstallRoot" (
set WIX30BINDIR=%%k
)
)
) else if /i "%PROCESSOR_ARCHITECTURE%"=="AMD64" (
for /f "tokens=1,2,*" %%i in ('reg query "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows Installer XML\3.0" /v "InstallRoot"') do (
if /i "%%i"=="InstallRoot" (
set WIX30BINDIR=%%k
)
)
) else (
exit /b 1
)
set WIX30DIR=%WIX30BINDIR:~0,-4%
set WIX30BINDIR=
if "%WIX30DIR%"=="" (
exit /b 1
)
exit /b 0
---
バッチファイルで、Windows AIK のインストール ディレクトリ を取得する方法です。
---
call :GetWindowsAik20Dir
echo AIK20DIR: %AIK20DIR%
goto :EOF
rem ===================================================
rem GetWindowsAik20Dir
rem ===================================================
:GetWindowsAik20Dir
for /f "tokens=1,2,*" %%i in ('reg query "HKLM\SOFTWARE\Microsoft\ComponentStudio\6.1.7600.16385" /v "ServicingPath"') do (
if /i "%%i"=="ServicingPath" (
set AIK20ServicingDir=%%k
)
)
set AIK20DIR=%AIK20ServicingDir:~0,-17%
set AIK20ServicingDir=
if "%AIK20DIR%"=="" (
exit /b 1
)
exit /b 0
---
バッチファイルで、Windows SDK のインストール ディレクトリ を取得する方法です。
---
call :GetCurrentWindowsSdkDir
echo CurrentWindowsSdkDir: %CurrentWindowsSdkDir%
call :GetWindowsSdk71Dir
echo WindowsSdk71Dir: %WindowsSdk71Dir%
goto :EOF
rem ===================================================
rem GetCurrentWindowsSdkDir
rem ===================================================
:GetCurrentWindowsSdkDir
for /f "tokens=1,2*" %%i in ('reg query "HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows" /v "CurrentInstallFolder"') do (
if /i "%%i"=="CurrentInstallFolder" (
set "CurrentWindowsSdkDir=%%k"
)
)
if "%CurrentWindowsSdkDir%"=="" (
exit /b 1
)
exit /b 0
rem ===================================================
rem GetWindowsSdk71Dir
rem ===================================================
:GetWindowsSdk71Dir
for /f "tokens=1,2*" %%i in ('reg query "HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.1" /v "InstallationFolder"') do (
if /i "%%i"=="InstallationFolder" (
set "WindowsSdk71Dir=%%k"
)
)
if "%WindowsSdk71Dir%"=="" (
exit /b 1
)
exit /b 0
---
バッチファイルで、My Document を取得する方法です。
---
call :GetMyDocumentsDir
echo MyDocumentDir: %MyDocumentDir%
goto :EOF
rem ===================================================
rem GetMyDocumentsDir
rem ===================================================
:GetMyDocumentsDir
for /f "tokens=1,2,*" %%i in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v "Personal"') do (
if /i "%%i"=="Personal" (
set MyDocumentDir=%%k
)
)
if "%MyDocumentDir%"=="" (
exit /b 1
)
exit /b 0
---
"User Shell Folders" キーの下には、My Document だけではなく、Desktop, My Pictures などの
フォルダーが定義されています。上記のバッチを参考に、必要なサブルーチンを作ると便利かもしれません。
2011年7月13日
#
各Windows AIK のバージョンに対するWindows PE、ベースとなるWindows が
混乱を招くようなので簡単にまとめてみました。
Windows AIK |
Windows PE |
ベースとなるWindows |
1.0 |
2.0 |
Windows Vista |
1.1 |
2.1 |
Windows Vista SP1 |
2.0 |
3.0 |
Windows 7 |
2.1 |
3.1 |
Windows 7 SP1 |
■Windows 自動インストール キット (AIK)
http://www.microsoft.com/downloads/ja-jp/details.aspx?FamilyID=C7D4BC6D-15F3-4284-9123-679830D629F2
■Windows Vista SP1 および Windows Server 2008 用の自動インストール キット (AIK)
http://www.microsoft.com/downloads/ja-jp/details.aspx?FamilyID=94BB6E34-D890-4932-81A5-5B50C657DE08
■Windows 7 用の Windows 自動インストール キット (AIK)
http://www.microsoft.com/downloads/ja-jp/details.aspx?FamilyID=696DD665-9F76-4177-A811-39C26D3B3B34
■Windows 7 SP1 用の Windows 自動インストール キット (AIK)
http://www.microsoft.com/downloads/ja-jp/details.aspx?FamilyID=0AEE2B4B-494B-4ADC-B174-33BC62F02C5D
2011年7月12日
#
以下のバッチファイルをダブルクリックすると、そのバッチファイルがあるフォルダの
配下の全MSIファイルを、Dark で逆コンパイルします。
MSIファイルの作りが気になるときに、簡単にチェックできるので便利です。
---
@echo on
set WiXDir=%ProgramFiles(x86)%\Windows Installer XML v3
set SRC=%~dp0
for /r "%SRC%" %%i in ("*.msi") do (
"%WiXDir%\bin\dark.exe" "%%i" "%%i.wxs"
)
:end
pause
---
dark.exe (逆コンパイラ) の使い方 - WiX - 社本@元ネオニート Blog
http://www.ailight.jp/Blog/sha256/archive/2005/2/3/darkexe%20(%E9%80%86%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%A9)%20%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9%20-%20WiX
バッチファイルでWindows のバージョンとビルド番号の取得する方法です。
for /f "delims=" %%i in ('ver') do set _VER=%%i
set WIN_VER=%_VER:~-9,3%
set WIN_BUILD=%_VER:~-5,4%
echo Version: %WIN_VER%
echo Build: %WIN_BUILD%
2011年7月4日
#
Visual Studio 2008 から、Team Foundation Server 2010 への接続するための
手順が面倒なので、まとめてみました。
1. Visual Studio 2008 をインストール
普通に、DVD からVisual Studio 本体とMSDN ライブラリをインストールする。
2. Team Explorer をインストール
Team Edition の場合、DVD の TFC フォルダーからインストールすることができます。
それ以外のエディションの場合、別途、ダウンロードする必要があります。
3. Visual Studio 2008 SP1 を適用
VS2008にSP1が適用済みの場合でも、後からTeam Explorerをインストールした場合、
Visual Studio 2008 SP1 を適用する必要があります。
4. Windows Update を適用
おそらく、いくつかのアップデートが見つかるでしょう。 :-)
5. TFS への接続
Team Foundation Server name のところに、http://ServerName:8080/tfs/CollectionName の形式で
入力することができるようになります。CodePlex に接続する場合、https://tfs.codeplex.com:443/tfs/TFS31 と
TFS名のところに入力することにより、接続できました。(CollectionName はプロジェクトによって変わるかも)
■Visual Studio Team System 2008 チーム エクスプローラ - Microsoft
http://www.microsoft.com/downloads/ja-jp/details.aspx?FamilyID=0ED12659-3D41-4420-BBB0-A46E51BFCA86
■Microsoft Visual Studio 2008 Service Pack 1 (インストーラ) - Microsoft
http://www.microsoft.com/downloads/ja-jp/details.aspx?FamilyID=FBEE1648-7106-44A7-9649-6D9F6D58056E
■Team Foundation Server 2010 (インストーラー) 用の Visual Studio Team System 2008 Service Pack 1 上位互換性更新プログラム
http://www.microsoft.com/downloads/ja-jp/details.aspx?familyid=cf13ea45-d17b-4edc-8e6c-6c5b208ec54d&displaylang=ja-nec
2011年7月1日
#
Kinect for Windows SDK Beta Forums というのができたようですね。
- General Discussion—Kinect for Windows SDK Beta from Microsoft Research
- NUI API and Programming—Kinect for Windows SDK Beta from Microsoft Research
- Audio API and Programming—Kinect for Windows SDK Beta from Microsoft Research
■Kinect for Windows SDK Beta Forums - MSDN
http://social.msdn.microsoft.com/Forums/en/category/kinectsdk