カテゴリー
SugiBlog Webエンジニアのためのお役立ちTips

OS起動時にアプリケーションを自動的に実行する

OS起動時にアプリケーションを自動的に実行するには、通常ならスタートアップに登録しますが、
アプリケーションから登録したい場合は、レジストリキーに登録する必要があります。

登録するキーは以下のようになります。

起動時に毎回実行する場合
Software\Microsoft\Windows\CurrentVersion\Run

次回起動時に1度だけ実行する場合
Software\Microsoft\Windows\CurrentVersion\RunOnce

レジストリキーを開きます。
第1引数は設定するキーのパス、第2引数は書き込み可能な状態で開くかどうかを指定します。

Microsoft.Win32.RegistryKey regkey =
    Microsoft.Win32.Registry.CurrentUser.OpenSubKey(
    @"Software\Microsoft\Windows\CurrentVersion\RunOnce", true);

キーに値を設定します。
第1引数はアプリケーション名、第2引数は実行ファイルまでのパスです。

regkey.SetValue(Application.ProductName, Application.ExecutablePath);

キーを閉じます。

regkey.Close();

続きを読む…»

7,720 views

Exif情報を編集する

スマートフォンやデジカメで撮影した写真にはどの方向(縦か横)で撮影されたか、という情報も格納されています。
画像方向(Orientation)というデータです。

画像を扱うプログラムを組んでいて、画像方向を編集する必要があったのでメモしておきます。

using System.Drawing;

string imgFile = "読み込むファイル";
string saveFile = "保存先ファイル";

//画像を読み込む
Bitmap bmp = new Bitmap(imgFile);

for (int i = 0; i < bmp.PropertyItems.Length; i++)
{
    Imaging.PropertyItem pi = bmp.PropertyItems[i];

    //Exif情報から画像方向を取得
    if (pi.Id == 0x0112)
    {
        //値を変更。強制的に横向きとする
        pi.Value = System.Text.Encoding.ASCII.GetBytes("1\0");
        pi.Len = pi.Value.Length;

        //設定する
        bmp.SetPropertyItem(pi);

        //目的の値が見つかればループを抜ける
        break;
    }
}

//保存する
bmp.Save(saveFile, Imaging.ImageFormat.Jpeg);

//後処理
bmp.Dispose();

Exif情報のタグID等は以下URLを参照してください。
http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/EXIF.html

6,329 views

C# コンソールアプリケーションのコマンドプロンプトを表示させない

Visual Studio C#で作成したコンソールアプリケーションを実行すると、
通常はコマンドプロンプトの画面が表示されます。

簡単な動作を行ってすぐに終了するアプリケーションだったとしても、
一瞬だけ表示されてしまいます。

これを全く表示されないようにするには、プロジェクトのプロパティを開き、
[アプリケーション]-[アプリケーションの種類]をWindowsフォームアプリケーションに変更することで表示されなくなります。
example

11,585 views

Listのコピー

List<string> list1 = new List<string> (){"test"};

参照渡し
list1の内容が変わるとlist2の内容も変わる

List<string> list2 = list1;

値渡し
list1の内容が変わってもlist3の内容は変わらない

List<string> list3 = new List<string>(list1);
1,816 views

テキストファイルの読み込みと書き込み

読み込み

// 指定したファイルをShift-JISコードとして開く
StreamReader sr =
    new StreamReader(string filepath,
        Encoding.GetEncoding(932));

while (!sr.EndOfStream)
{
    // 1行ずつ読み込みます
    Console.WriteLine(sr.ReadLine());
}

sr.Close();
sr.Dispose();
sr = null;

コードページIDの一覧です。

932 shift_jis 日本語 シフトJIS(または、「shift-jis」や「x-sjis」など)
51932 euc-jp 日本語 EUC
50220 iso-2022-jp 日本語 JIS
50221 csISO2022JP 日本語 JIS(1バイトカタカナ可)
50222 iso-2022-jp 日本語 JIS(1バイトカタカナ可 – SO/SI)
65001 utf-8 UTF-8

続きを読む…»

2,049 views