Categories
SugiBlog ホームページ制作・システム開発

コンピュータの再起動とシャットダウン

コンピュータの再起動とシャットダウンする方法をご紹介します。

コンピュータの再起動

int flag = 0;
flag = ShutdownLibWrap.Reboot;
flag |= ShutdownLibWrap.ForceIfHung;
ShutdownLibWrap.DoExitWindows(flag);

シャットダウンのキャンセル

何か処理を実行しているときに、Windows Update等で勝手にシャットダウンされないようにしたいときに便利です。

フォームのLoadイベントに以下を記述します。

// アプリケーションが閉じられる時のイベントを追加
SystemEvents.SessionEnding += new SessionEndingEventHandler(SystemEvents_SessionEnding);

シャットダウンを検知したらキャンセルします。

private void SystemEvents_SessionEnding(object sender, SessionEndingEventArgs e)
{
    e.Cancel = true;
}
59 views

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();

続きを読む…»

77 views

ACCESS フィルター VBA

よく使うので覚書

Private Sub Search()
On Error Goto Exception

    Dim Coll  As Collection
    Dim SQL() As String

    Set Coll = New Collection


    If Not IsNull([検索テキスト]) Then
        Coll.Add "[フィールド1] Like '*" & [検索テキスト] & "*'"
    End If

    If [検索チェック] = -1 Then
        Coll.Add "[チェックフィールド] = " & [検索チェック]
    End If

    If [検索チェック2] = 0 Then
        Coll.Add "[チェックフィールド2] = 0"
    End If


    If Coll.Count > 0 Then
        For i = 1 To Coll.Count
            ReDim Preserve SQL(i - 1) As String
            SQL(i - 1) = Coll(i)
        Next i
        DoCmd.ApplyFilter , Join(SQL, " And ")
        'Debug.Print Join(SQL, " And ") '確認用
    Else
        Me.FilterOn = False
    End If

Exit Sub
Exception:
    MsgBox Err.Description
End Sub
100 views

CSVエクスポートでのテキストデータのNull値について ACCESS

AccessでCSVをエクスポートする際、テキスト型のフィールドがNullだった場合、
「,””,」とならず「,,」となってしまいます。
※前後にフィールドがあるとしています。

他のソフトやプログラムで該当ファイルを使用するときに、ダブルクォーテーション「”」が
必要な場合があります。

そういう時はNz関数を使います。
Nz関数はNullを別の文字列に置き換えしてれくる関数です。

データがNullだった場合、「,””,」という結果にするためには、Nullを長さゼロの文字列に置き換えます。

Nz([フィールド名],"")

もちろん、指定したフィールドのデータがNullでない場合はそのデータを返します。

782 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

101 views