ラベル C# の投稿を表示しています。 すべての投稿を表示
ラベル C# の投稿を表示しています。 すべての投稿を表示

2023年3月12日日曜日

[NUnit,xaml,Visual Studio]Nunit用のプロジェクトを追加する

1.Visual Studio 2019を起動する

2.テストプロジェクトを新規作成する。

 テンプレートプロジェクトは、クラスライブラリ(.Net Framework)を選択する

3.テストプロジェクトの参照に「nunit.framework」を追加する

  <src>\packages\NUnit\bin\nunit.framework.dll

4.テストプロジェクトの参照にテスト対象のプロジェクトを追加する

5.テストコードを実装する

6.Visual Studio 2019の拡張機能メニューから以下のツールをインストールする

  NUnit 2 Test Adapter

2022年10月16日日曜日

[C#,サンプルコード]Windowsをシャットダウンするのサンプルコード

参考サイト https://johobase.com/wmi-os-shutdown-csharp/ https://www.fenet.jp/dotnet/column/language/4629/
private void ShutdownWindows()
{
    try
    {
        ManagementClass managementClass = new ManagementClass("Win32_OperatingSystem");
        managementClass.Get();
        // 権限を有効化する
        managementClass.Scope.Options.EnablePrivileges = true;

        ManagementObjectCollection managementObjectCollection = managementClass.GetInstances();
        foreach (ManagementObject managementObject in managementObjectCollection)
        {
            // InvokeMethodでWMIのメソッドを実行する
            managementObject.InvokeMethod(
                "Win32Shutdown",
                // 強制シャットダウン指定
                new object[] { 5, 0 }
                );
            managementObject.Dispose();
        }
        managementObjectCollection.Dispose();
        managementClass.Dispose();
    }
    catch (Exception ex)
    {
        //なんかエラーログを出力する
    }
}

[C#,サンプルコード]HogeHogeをkillするのサンプルコード

private void TerminateHogeHoge()
{
    //ローカルコンピュータ上で実行されている"HogeHoge"という名前のすべてのプロセスを取得
    Process[] processes = Process.GetProcessesByName("HogeHoge");
    foreach (Process process in processes)
    {
        // メイン ウィンドウにクローズ メッセージを送信する
        bool isCloseMainWindow = process.CloseMainWindow();
        if (! isCloseMainWindow)
        {
            // 終了しなかった場合は強制終了する
            process.Kill();
        }

        // プロセスが終了するまで60秒間に待機する
        // TODO:何秒待機するのが適正化?暫定的に60秒。
        bool isExit = process.WaitForExit(60000);
        if (isExit)
        {
            return;
        }
        throw new HogeHogeException("一定時間内にHogeHogeが終了しませんでした。");
    }
}