ホーム

MoonWing

[VS]PIA対応バージョンまとめ

PIAのバージョンとOfficeのバージョンと.NetFrameworkのバージョンの表をVSTO表のついでに作成。
PIAとはPrimaryInteropAssemblyことで・・・詳細はMicrosoftにお尋ねください。

PIA 対応Office 対応.NetFramework 対応Windows
XP XP 1.1 XP
2003 2003 1.1 2000 SP3,XP,Server 2003
2007 2007 1.1 2000 SP4,XP SP2,Server 2003
2010 2010 2.0 or higher 2000 SP4,XP SP2,Server 2003,Vista,7,Server 2008

[VS]VSTO対応バージョンまとめ

VSTOのバージョンとOfficeのバージョンと.NetFrameworkのバージョンの表がほしくなったので作成。
VSTOとは

  • Microsoft Visual Studio 2005 Tools for Office Second Edition Runtime
  • Microsoft Visual Studio 2005 Tools for the 2007 Microsoft Office System
  • Microsoft Visual Studio Tools for the Microsoft Office system (Version 3.0 Runtime)
  • Microsoft Visual Studio 2010 Tools for the Microsoft Office System (Version 4.0 Runtime)

と微妙に名前が変わっているOffice拡張用コンポーネントのことです。
基本的には上記の2個目を省いた以下の3つあれば問題ないはず。
(というか、3個目も省いていいかも、結局2個で2003,2007,2010に対応できることになるわけだし。)

Vsto 対応Office 対応.NetFramework 対応VisualStduio 対応Windows
2005 SE 2003,2007 2.0 2005 2000,XP,Server 2003,Vista,7,Server 2008
3.0 2007 3.5 SP1 2008 2000,XP,Server 2003,Vista,7,Server 2008
4.0 2007,2010 3.5 SP1 2010 XP,Server 2003,Vista,7,Server 2008

[C#]文字列整形関数

.Netframework 3.0 以降でなるだけ国・地域に依存しない感じで、文字の整形関数を考えてみた。
というのも、もともと用意されているPadLeftなどでは日本語の全角文字を使用するとずれてしまう。
ここでめんどくさいのが文字数と文字コードのバイト数ともに文字の表示数と一致しないこと。

全角文字はよく2バイト文字といわれていたが、Unicodeではそうならない。
表示上2バイト分(全角)でも、バイト数は3バイトとか4バイトも存在する。
もちろん、文字数でカウントしても全角文字は1文字として検出される。
つまり、3バイトの全角文字1文字をPadLeftで整形しようとしたときにめんどくささに気づくわけだ。

で、強引な方法で実装してみたのでメモ。
実際は、半角か全角かを検出できればいいから画面から取得なんて強引なことをしなくてもできそう。
でも、気がついた時にはすでに組み終わってたので、改良された方はトラックバックとかお願いします・・・。


//書式整形に使用するフォント
public Font fixedPitchFont;

public setFixedPitchFont()
{
    //書式整形に使用するフォントをユーザー環境に合わせて切り替える
    System.Globalization.CultureInfo ci = System.Threading.Thread.CurrentThread.CurrentCulture;
    if (ci.TextInfo.LCID == 1041)
    {
   	 //日本
   	 fixedPitchFont = new Font("MS ゴシック", SystemFonts.DefaultFont.SizeInPoints);
    }
    else
    {
   	 //その他("Courier New":マルチバイト時にずれる)
   	 fixedPitchFont = new Font(FontFamily.GenericMonospace, SystemFonts.DefaultFont.SizeInPoints);
    }
}

private void GetFontPitch()
{
    //描画サイズから1文字表示分の幅を取得する
    // 1. DPIから求める
    {
   	 //解像度の取得
   	 Font font20pixel = new Font(FontFamily.GenericMonospace, 20, GraphicsUnit.Pixel);
   	 int dpi = (int)Math.Round((72 * font20pixel.Size) / font20pixel.SizeInPoints);

   	 //固定幅はWidth:Height=1:2で作成されていることを前提として
   	 fixedPitchFontHeight = (int)Math.Ceiling(fixedPitchFont.SizeInPoints * dpi / 72);
   	 fixedPitchFontWidth = fixedPitchFontHeight / 2;
    }
    // 2. 念のため、描画してみた大きさから求めたものと比較する
    {
   	 //適当な大きさで描画用Bmpを作成(メインディスプレイの大きさで作成)
   	 Bitmap bmp = new Bitmap(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height);
   	 try
   	 {
   		 Graphics g = Graphics.FromImage(bmp);
   		 Size Size1word = TextRenderer.MeasureText(g, " ", fixedPitchFont);  //半角(1Word)
   		 Size Size2word = TextRenderer.MeasureText(g, "m1", fixedPitchFont); //全角(マルチバイト文字も表示上2Word)

   		 int wordWidth = Size2byte.Width - Size1byte.Width;
   		 int wordHeight = Size1byte.Height;

   		 //一致しない場合は固定幅フォントではない可能性がある。とりあえず大きい方を使う。
   		 if (fixedPitchFontWidth != wordWidth)
   		 {
   			 fixedPitchFontWidth = Math.Max(fixedPitchFontWidth, wordWidth);
   		 }
   		 if (fixedPitchFontWidth != wordWidth)
   		 {
   			 fixedPitchFontHeight = Math.Max(fixedPitchFontHeight, wordHeight);
   		 }
   	 }
   	 finally
   	 {
   		 bmp.Dispose();
   	 }
    }
}

public int Display1ByteWordCount(string text)
{
    int displayFontWidth;

    //適当な大きさで描画用Bmpを作成(メインディスプレイの大きさで作成)
    Bitmap bmp = new Bitmap(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height);
    Graphics g = Graphics.FromImage(bmp);
    Size stringSize = TextRenderer.MeasureText(g, text, fixedPitchFont);

    //表示に使用したpixelから文字数を逆算する。
    displayFontWidth = stringSize.Width / fixedPitchFontWidth + (int)Math.Round((double)(stringSize.Width % fixedPitchFontWidth) / 10);
    return displayFontWidth;
}

public string PaddingLeft(string text, int totalWidth)
{
    int diff = Display1ByteWordCount(text) - text.Length;
    return text.PadLeft(totalWidth - diff);
}

public string PaddingRight(string text, int totalWidth)
{
    int diff = Display1ByteWordCount(text) - text.Length;
    return text.PadRight(totalWidth - diff);
}

[CGO]CGOptimizer麦茶v1.00β3

CGOptimizer麦茶の開発版を更新しました。

Download(CGOptimizer.zip)

今回の更新は下記のとおりです。

  • Jpeg・PNG関係ツールで同梱可能なものは同梱
  • コントロールの配置修正
  • 内部コードの最適化

暫定対応のため、細かくパラメータ設定ができません。
また、開発版のため、不具合を含んでいる場合がありますので使用時に画像のバックアップを行うようにしてください。

[CGE]CGEffecterおにぎりv1.13β

ながらく開発が止まっていましたがメールを何通かいただいたので、手を加えました。
時間の都合上未テストコードが含まれていますのでベータ版として公開します。

Download(CGEffecter.zip)

今回の更新内容は下記の

  • GIF形式の標準読み込み対応
  • クリップボードへの格納形式をDIBからBitmapに変更
  • 特定のBitmapがうまく開けない不具合に暫定対応
  • 内部文字コードをUTF-8に変更(Windows98/Meで不具合があるかも・・・)

GIFアニメーションには対応しません。
もし、GIFアニメーションを開いた場合先頭画像のみ表示されます。
また、GIF形式の保存は現在未対応です。
その上、画像処理を施すと透過情報がなくなってしまいます。(該当機能未実装のため)

ベータ版のため画像処理を施す場合は画像ファイルのバックアップを必ず行ってください。

[FSIC]FileStructureImageCapture v0.9.0 Beta

FileStructureImageCapture画面
概要
このソフトはファイルのツリー構造を表示及び画像として保存するためのソフトウェアです。
一般的にはあまり使われないかもしれませんが、マニュアル作成時やフロントエンドソフトで
外部DLLを特定の場所に格納してほしい際にこのソフトを利用することで配置イメージを取得できます。
使い方

  • File->Openからツリー構造を表示したいフォルダを選択してください。
  • ScreenShot->GetTreeImageを押下すると、保存ダイアログが表示されます。
  • ダイアログで保存先を選択し、保存名を入力しOKを押下するとツリーイメージが保存されます。

Download

[I2K]IDM2KeePass 1.00

IDM2KeePassの画面

  • 概要
    このソフトウェアはIDMからエクスポートしたXMLファイルを
    KeePass CSV、XML(1.x)、XML(2.x)形式に変換するソフトウェアです。

    IDMことID ManagerはWoodenSoldier氏によって作られた、
    Windows用の優れたIDとパスワードを管理するツールです。
    公式サイト:WoodenSoldier Software

    KeePassことKeePass Password SafeはDominik Reichl氏によって作られた、
    オープンソースで多くのプラットフォームで動作するIDとパスワードを管理するツールです。
    公式サイト:KeePass Password Safe

    KeePass XML(1.x)をインポートする場合、「VariousImport」プラグインを使用してください。
    公式サイト:Plugins – KeePass

  • 使い方
    1. IDMのデータをXML形式でエクスポートしてください
    2. IDM2KeePassを実行してください
    3. 変換したい出力形式を選択してください
    4. [変換]ボタンを押下し、IDMからエクスポートしたXMLを開いてください
    5. 変換に成功すると、保存先を訪ねるダイアログが表示されますので適切なファイル名で保存してください
    6. KeePassを起動し、保存したファイルをインポートしてください
  • Download

[I2K]IDM2KeePass 1.00 RC

IDM2KeePass画面
KeePass XML(1.x)形式への変換を追加しました。
これにより、CSV,XML(1.x),XML(2.x)の全てに対応しました。
あとは、少し使ってみながら不具合がなさそうであれば正式版をKeePassとIDMに報告しVectorに登録します。

RC版のため、不具合が残っている可能性がありますので、ご使用になるときはファイルのバックアップをしておいてください。

Download

[Tool]Gnu On Windows

LinuxやMacOSXなどと比べるとWindowsだけコマンドが違うとかコマンドが足りないとかクロスコンパイル時に困ることもあった。
こういった場合、今まではCygwinを利用したり、用途によってはMSYSで作業していたがCygwinはレジストリの変更などが多くできれば入れたくない。
そこで、見つけたのがGOW。シンプルなコマンド群でCygwinと比べれば簡易的なものだろうけれど、多くの場合において十分使える。

[Tool]exciteメールを保存

昔はよく使っていたexciteメールだけれど、使い勝手からか使わなくなってしまった。
転送メールの設定もできず、保存するのにツールを使用したのでそのメモ。

  • 準備
  • 使用方法
    1. 「Jupiter5」を起動するとセキュリティ警告が表示される場合があるが、通信を行う必要があるので「ブロックを解除する」を選択
      セキュリティ警告
    2. メニュー[設定]->[スクリプト]->[インストール]を選択する
      スクリプトのインストール01
    3. ダウンロードしたExciteメール Ver. 2.12の[Excite_yobane.js]をドラッグする
      スクリプトのインストール02
    4. ドラッグした[Excite_yobane.js]をダイアログにドロップし、スクリプトをインストールする
      スクリプトのインストール03
    5. メニュー[設定]->[アイテムの追加]を選択する
      設定画面01
    6. ユーザIDやパスワード、メールアドレスを入力する
      設定画面02
    7. 設定したアイテムを右クリックし[このアイテムを実行する]を選択し、取得を開始する
      実行画面
1 2 3 4 5 6 7 8 9 13

ホーム

検索
フィード
翻訳
Japanese flagItalian flagKorean flagChinese (Simplified) flagChinese (Traditional) flagEnglish flagGerman flagFrench flagRussian flagVietnamese flagThai flag

ページの上部に戻る