2009年11月7日土曜日

Windows XP で、リモートデスクトップ接続を複数ユーザで同時に行う方法(マルチセッション)

PCで作業をしていると、リモートデスクトップを使う機会がよくある。
かなり便利な機能なので、使う人はたくさんいるものだ。

そこで問題になるのが、「複数ユーザの同時ログオン」。
Windows XP では1人のユーザしかログオンすることはできないし、誰かがログオン中に無理やりログオンすると、既にログオン中のユーザが強制ログオフされてしまう。。

という問題はすっかり「仕方のないもの」だと思っていたのだけれど、今日調べたらそれが解決できる、つまり「複数ユーザが同時ログオンできる」方法を見つけたので共有しておく。

------------------------------------------------------------------------------

複数ユーザの同時ログオン方法(マルチセッション)

Ⅰ.設定手順

  1. Terminal Server Patch をインストール
    • http://www.kood.org/terminal-server-patch/ から、「Terminal Server Patch」をダウンロードする
      →「Download Latest 2.1 Binary」をクリック(2009/11/06 現在)
    • ダウンロードしたファイルを実行してインストールする
      →ファイル名は「Termiserv_XPSP2-SP3_i386_2.1.exe」(2009/11/06 現在)
      →実行中に「動作の保障がなんちゃら・・・」「CDを入れてください」などメッセージが出るが、気にせずOKで進む
    • PCを再起動する
      →最後に再起動を求められるので、再起動する
  2. グループポリシーで、接続数を設定する
    • グループポリシーエディタを起動する
      →ファイル名を指定して実行「gpedit.msc」
    • 「コンピュータの構成」→「管理用テンプレート」→「Windows コンポーネント」→「ターミナル サービス」を選択
    • 同「ターミナルサービス」内の「ターミナル サービス ユーザに対してリモート セッションを 1 つに制限する」を有効にする
    • 同「ターミナルサービス」内の「接続数を制限する」を有効にし、「最大接続数」を 999999 にする
      →「最大接続数」は任意の値でOK
  3. レジストリエディタで、マルチセッションを有効にする
    • レジストリエディタを起動
    • HKEY_LOCAL_MACHINE
      └SOFTWARE
         └Microsoft
           └Windows NT
              └CurrentVersion
                └Winlogon
      の「AllowMultipleTSSessions」の値を 1 にする

以上、簡単 3 ステップ!
あとは、実際にリモート接続するだけ。

Ⅱ.注意点

  1. ユーザについて
    • ドメインユーザには対応していない(と謳っている)
    • 同一ユーザでの同時ログオンは対応していない(ユーザアカウントを複数作成すること)
  2. OS のバージョンについて
    • この記事は、サーバ側(接続される側)に Windows XP SP3 を使用したときのものである
    • 接続する側も Windows XP SP3 だったが、接続する側は割と何でもいけるらしい
  3. 責任について
    • もちろん自己責任でやること
    • ライセンス云々の問題は不明

Ⅲ.補足

そもそもなぜこんなことが可能かというと、Windows XP SP2 の Beta版でマルチセッション機能の開発をしたが、セキュリティ上の問題(ライセンスの問題も?)等が解消されなかったので、機能を無効にしている、ということらしい。

Ⅳ.参考

<ポジティブ回路>http://blog.goo.ne.jp/sito1980/e/5204ff550ed8ad14bcb453921802b72d
<きたへいの悠々自適>http://kitahei.cocolog-nifty.com/youyou/2007/07/windows_xp_ece3.html
<IT pro>http://itpro.nikkeibp.co.jp/free/NT/NEWS/20040113/1/

 

以上。

2009年9月29日火曜日

知らないと損をする、Word の便利機能

 Micosoft Word ( 以下 Word ) って、ある程度の人なら特別勉強などをしなくても、触りながら使えてしまう。
で、そのままなんとなーく少しづつ機能を覚えていく・・・っていうパターンが多いのではないだろうか・・・ ( 自分もそうだった )。

 だがしかし、この「備え付けの機能すら覚えきれいない状態」で作業をするのはとても危険だ。
必死に時間をかけて作業をしたのに、「えっ、この機能あったの!?!?今まで無駄な(ry」なんてことになりかねない。
実際、自分がそういう思いをしたのだ・・・。

 そんな状況を見かねて、職場のリーダーが Word の本を貸してくれたので、使えそうなポイントをまとめておく。

---------------------------------------------------------------------

■Word の便利機能、およびポイント

Ⅰ. レイアウト

    • 「印刷設定・余白」などのレイアウト設定は、最後にやると体裁が崩れるので、最初にやると効率UP
    • 目次につかう「見出し」も、最後にやると面倒なので編集中に随時やる。と効率UP
    • 「見出しマップ」を使うと、左側のフレームに見出しが一覧表示され、ドキュメントが見やすい

Ⅱ. 編集

    • 「ブックマーク」を文書の任意の位置に設定できる。体裁には影響しないので、活用すべし
    • 「定型句」には、文章だけでなく図も登録しておける。活用すべし
    • 脚注には、「脚注」機能がある。わざわざ自分で「*1」とか入力しているとみっともない
    • 「相互参照」機能で、図表の番号・タイトルを連動させることができる ( “図-1を参照” などの表記 )。更新漏れ防止に便利

Ⅲ. 段落

    • 「書式設定」は、段落ごとに存在する。デフォルトでは、ページ設定の書式を適用
    • 「インデント」は書式設定で。スペースで調節だなんてありえない
    • 「インデント」はざっくり4種類を活用する。「一行目」「2行目以降」「左端」「右端」
    • 「ルーラー」でインデントを調整するとかなり楽。それぞれ次の形である。「▽一行目」「△2行目以降」「□左端」「▽右端」
    • 「タブ」が強力。「左揃え」「右揃え」「中央揃え」「小数点揃え」など種類豊富
    • 「タブ」はルーラーの左上端にあるボタン ( “┘” とか ”└” ) で切り替えられる
    • 「タブ」は段落内に複数設定可能。活用すべし

Ⅳ. セクション

    • ページ設定は「セクション」ごとに存在している
    • 「セクション」を区切ると、セクションごとに「用紙の向き」、「ヘッダー、フッター」などを設定できる
    • 「挿入→改ページ→セクション」でセクションを区切れる

Ⅴ. 図表

    • 「描画キャンバス」は一見邪魔だが、複数のシェイプで図を書くときは便利。好意的に活用すべし
    • 「描画キャンバス」を使うと、「コネクタ」が使える。Visio っぽくて便利。活用すべし
    • 「図形描画」ツールバーの「図形の調整」で、複数シェイプの位置を揃えることができる
    • 「罫線→オートフォーマット」で、表の書式を登録しておける

Ⅵ. 管理

    • 「ツール→文書の保護」で、履歴モードを強制実行できる
    • 「ファイル→版の管理」で、任意の状態を保存しておくことができる ( VSS のラベル的な存在 )。
    • 「ツール→オプション→セキュリティ」で、パスワードを設定できる
    • マシン情報の漏洩に注意。「ファイル→プロパティ」・「ツール→テンプレートとアドイン」の情報は不要であれば削除する

---------------------------------------------------------------------

 

以上。

2009年9月9日水曜日

Microsoft Word で、2ファイルの差分を比較する方法

今まで知らなかった。
変更の履歴なしで差分を比較できることを。


■ワードファイルの差分比較方法

 1.「ツール(T)」→「文書の比較と反映」
 2. ファイル選択ダイアログで、「厳密な比較」のチェックを ON
 3. ファイルを選択し、【比較】ボタンを押下


以上。


 

嗚呼、願わくば戻って来いマージ作業で浪費した時間よ。

2009年7月29日水曜日

Visual Studio 2008 アドインを更新

せっかくアドインを作成したのに、現場で適用したらメニューが追加されないという悲劇に。。
改めて見てみたら、ちゃんちゃらおかしいコードを書いていたので、修正して対応。

ついでに動作確認の方法もおかしかったので、正しく理解した。これでOKだろう。

修正内容:
 ・コマンドの取得ロジックを修正
 ・アサーションコードを修正
 ・VSS の「保留中のチェックイン」ウィンドウにも表示されたらいいなレベルのコードを追加

■最新版のダウンロードはこちら

2009年7月12日日曜日

Visual Studio 2008 のアドインを作ってみた。ソリューションエクスプローラに、ファイルパスのコピー、保存先フォルダを開くのメニューを追加!

昨日、ちょろっと時間があったので、Visual Studio 2008 用のアドインを作ってみた。

最近は色々と手を出してしまっていて、作りかけのアプリがいくつかある。
それもやりたいのだけど、今の現場が「生産性の向上」というテーマに重きを置き、みんな高い意識レベルで仕事をしているので、負けていられない!というか。
自分も乗っていこう!という気持ちで 今回のアドイン製作にいたったのだ。

と言ってもまだ、ショボイ (><
これから積み重ねていきます。

 

ということで以下、田中アドインの説明。


■ファイル

■概要

Visual Studio 2008 用のアドインです。

ソリューションエクスプローラでファイルを選択したときのメニューに、下記2つの機能を追加します。
選択したファイルの保存先フォルダを開く
選択したファイルのフルパスをクリップボードにコピーする

■詳細( 同じ内容のものが、zip ファイルに ReadMe.rtf として入っている )

※ 以下の免責事項に同意できる方のみ、ご使用ください

[ 免責事項  ]

このアドインは、作者が個人的な用途のために製造したものです。

よって、このアドイン自体は誰が使用してもかまいませんが、それによって発生したいかなる損害において、作者は責任を負いません。

また、何の保証もしません。

-----------------------------------------

Ⅰ. 構成ファイル

· TanakaAddIn.dll

· TnakaAddIn.AddIn

Ⅱ. インストール方法

A. 標準インストール

1.「TanakaAddIn.dll」 を適当なフォルダに保存する ( どこでも良い )

2.「TanakaAddIn.AddIn」 をテキストエディタで開き、<Assembly> タグに「1.」で保存したフォルダを指定する

3.「TanakaAddIn.AddIn」 を下記のフォルダにコピーする ( なければ作成 )
コピー先フォルダ:「C:\Documents and Settings\All Users\Application Data\Microsoft\MSEnvShared\Addins」

B. カスタム

・ 「TanakaAddIn.AddIn」のコピー先の変更方法

AddIn ファイルのインストール先は、標準で6箇所ぐらい用意されています。
そのうちどこへインストールしてもかまいません。
以下は、そのインストールフォルダの確認方法です。

1.Visual Studio 2008 の メニューから、「ツール(T)」>「オプション(O)」>「環境」>「アドイン/マクロセキュリティ」を開く

2.「アドイン ファイル パス」を確認する

Ⅲ. アンインストール方法

インストールしたファイル「TanakaAddIn.dll」、「TanakaAddIn.AddIn」を削除してください。

-----------------------------------------


 

気が向いた方はどうぞ。

2009年6月24日水曜日

VC++ デバイスコンテキストを使っての描画方法。 ( GetDC、CreateSolidBrush、SelectObject、PatBlt、使い方 )

デバイスコンテキストについて

業務にて、デバイスコンテキストを使っての描画処理を担当。
描画関係の知識がなかったのでちょろっと勉強してみたので、メモを残しておく(たいしたことないけど 笑)。

Ⅰ. デバイスコンテキストとは

ウィンドウの描画に必要な材料のパッケージ。よく画用紙と画材のセットと表現される。
文字を書いたり、背景の色を変えたり、線を引いたり、画像を表示させたり・・・
といった全ての操作はこいつ(デバイスコンテキスト)のハンドルを取得するところから始まる。

業務系アプリでは、画面のほぼ全てが MFC 標準のコントロールで事足りてしまうのであまり関わる機会がない。
が、色の変更などの細かい制御をするときは世話になるので、覚えておくと非常に便利だ。

Ⅱ. 画用紙と画材のセット・・・というと?

デバイスコンテキストが画用紙と画材のセットと表現される理由は何か。
それは、デバイスコンテキストが持っているオブジェクトを知れば納得がいく。
以下がデバイスコンテキストが持つオブジェクト・・・つまり画材のリスト ( 厳密にはこれだけではない )

  • Bitmap ・・・ 画像(画像を表示するときに使う)
  • Brush  ・・・ ブラシ(背景を塗りつぶすときに使う)
  • Font   ・・・ フォント(文字を書くときに使う)
  • Pen     ・・・ ペン(線を引くときに使う)
  • Region   ・・・ 領域(描画領域を限定するときに使う)

デバイスコンテキストは、これらの画材を全種類持っている。
ただし、もてる画材は1種類につき1つで、Pen なら Pen 1個。
つまり、赤ペンに青ペンに緑も・・のように、同じ種類の画材は複数持てないので入れ替えて使う。

また、1つのウィンドウにつき、デバイスコンテキストは1つである。
ということから、ウィンドウ、およびそれに張り付いている全てのコントロールもウィンドウなので、それぞれが1つづつデバイスコンテキストを持っていることになる。

[デバイスコンテキストのイメージ ( クリックで最大化 )]
無題

Ⅲ. デバイスコンテキストの使い方

Ⅱ まででデバイスコンテキスト(以下 DC )の考え方が理解できたとうことで、実際にコードを書いてみる。
まずは、DC のハンドルを取得してから描画をおこなう一連の流れはこうだ。

  1. DC のハンドルを取得
  2. 画材を作成
  3. 画材を設定
  4. 描画
  5. 画材を元に戻す
  6. 画材を削除
  7. DC のハンドルを開放

すでにお気づきだと思うが、これにはいくつか注意点がある。

  • DC のハンドルを取得したら、最後に必ず開放すること
  • 使う画材を作成したら、最後に必ず削除すること
  • 画材を入れ替えたら、最後にかならず元に戻すこと

以上の点に注意して、画面(画用紙)を赤で塗りつぶす処理を書くとこうなる。

--------------------------------------------------------------------------------
// ※ hWnd は、描画対象となるウィンドウのハンドル

//
// 画面を赤で塗りつぶす
//

// DC のハンドルを取得
HDC hDC = ::GetDC( hWnd );

// 赤のブラシを作成(画材を作成)
HGDIOBJ hBrushRed = ::CreateSolidBrush( RGB( 255, 0, 0 ) );

// 赤のブラシを設定(画材を設定)
HGDIOBJ hBrushOld = ::SelectObject( hDC, hBrushRed );

// 画面をぬりつぶす(描画)
RECT rtWindow;
::GetWindowRect( hWnd, &rtWindow );
::PatBlt( hDC, 0, 0, rtWindow.right, rtWindow.bottom, PATCOPY );

// 画材を元に戻す
::SelectObject( hDC, hBrushOld );

// 画材を削除
::DeleteObject( hBrushOld );

// DC のハンドルを開放
::ReleaseDC( hWnd, hDC );

--------------------------------------------------------------------------------

これで、画面を赤で塗りつぶすことができた。

やりたい描画、つまり使う画材によって呼び出す API が変わるが、
基本的な処理の流れは、どの画材を使うときも同じである。
( 逆に、それぐらいしか変わりがないとも言える )

Ⅳ. 最後に

今回は、GetDC を使って実装してみた。
GetDC は、ウィンドウハンドルのパラメータに NULL を設定すると、スクリーン全体の DC をも取得できる強力な API である。
画面のちょっとした描画にはもっと適した BeginPaint という API があるし、MFC のクラスを使うともっと簡単に実装できるので、
次回はそれらを使ったコードの書いてみることにする。

 

以上。

2009年6月3日水曜日

Visual Studio 2008 Team System 新機能の概要メモ

Visual Studio 2008 Team System 機能メモ
 
--------------------------
Ⅰ. コード分析
 A. 概要
  1. およそ200種類、大枠で11項目のルールからコードを検証する
  2. アンマネージコードのコード分析は貧弱
 B. 使い方
  1. プロジェクトのプロパティから、コード分析を有効にして、分析を実行する

Ⅱ. プロファイリング
 A. 概要
  1. CPU 負荷や、実行速度などのボトルネックの発見を助ける
  2. サンプリングは、定期スナップショットや、モジュール単位の検証など大まかな調査をする
  3. インストルメントは、関数ごとの処理などより詳細な情報を集める
  4. サンプリングは、長期シナリオにも向いている
 B. 使い方
  1. プロファイリングウィザードからプロジェクトを指定し、実行するだけ
------------------------------
 
 
調査が足りなすぎだけど、とりあえずメモ。
アンマネージ C++ で使えそうなのは、プロファイリングくらいかなぁ・・
カバレッジ機能とかは後日チェックしてみよう。