技術メモ

【ReactOS】Windows互換OSをVMWareにインストールする

結論

2022/4/27時点(ReactOS v0.4.14)では、実用的に利用可能なレベルではない。
試しにchromeをインストールしている最中にブルースクリーンになり、以降OSが起動しなくなった(ReactOSがWindows Server2003との互換を目指しているようなので、最新のソフトを使おうとしている方が間違いかもしれない)

ポイント

  • 仮想マシン作成時に、バージョンで「Windows XP Professional」を指定する。
    (最初、Windows Server 2019を選択したところ、インストール用のISOイメージをマウントしているにもかかわらず認識されなかった)
  • 言語は日本語にしてもおおむね大丈夫そう。
    ただし、インストール完了後、コマンドプロンプトを開くと文字化けする。
  • 言語以外は、すべてデフォルトのままEnterキーを連打していけばインストールが終わる。
  • ソフトのインストールは、デスクトップにある「アプリケーションマネージャ」からインストールできる。ただし、例えばFireFoxの選択可能なバージョンは48までなど古い。
  • ブラウザは、ファイル名を指定して実行から「iexplore」と指定すると起動する(スタートメニューにショートカットがないのでわかりにくい)
  • 実際に利用している画面はこんな感じ。ソリティアや電卓もある。

今回試した感じでは、付属のアプリは動作するといった感触。
バージョン0.5からベータ版になるようなので、今後の改良に期待しています。

 

【Windows bat】特定のEXEが起動していたら強制終了する

まず、tasklistで該当のEXEが起動しているか確認する。
起動している場合は、taskkillで終了させる(ここではnotepad.exeが起動していたら強制終了させている)。

rem EXEが起動中か確認
tasklist | find "notepad.exe"

if %errorlevel% == 0 (
    rem 起動中の場合は、強制終了させる
    taskkill /im notepad.exe /f
) else (
    rem エラーレベルクリア
    cd > nul
)

尚、該当のEXEが起動していない場合はエラーレベルが1のままになるので、エラーレベルを0で上書きするように、正常終了する適当なコマンド(ここでは「cd > nul」)を実行している。(後続の処理でエラーレベルを見ていなければ記述しなくても大丈夫)

 

【C#】コントロールの位置を計算して画面中央に表示させる

以下のように、LeftとTopを変更すればOK

//横軸の中央に移動させる
control.Left = (this.ClientSize.Width - control.Width) / 2;

//縦軸の中央に移動させる
control.Top = (this.ClientSize.Height - control.Height) / 2;

※this.Widthやthis.Heightを使うと計算しても中央にならないので、this.ClientSize.Widthとthis.ClientSize.Heightを利用すること

 

【マウスコンピューター】起動時にEFI PXE 0 for IPv4 boot failedエラーが発生する

パソコン起動時に以下のエラーメッセージが表示される(mouse K5 2021年5月購入)
EFI PXE 0 for IPv4(80-FA-XX-XX-XX-XX) boot failed.

OKをクリックすればWindowsが普通に起動するが、毎回止まってしまうのは面倒なので修正を行った。

<修正手順>

  1. パソコンの電源を入れた直後にF2キーを連打する
  2. UEFI(BIOS)画面が表示されるので、「Setup Utility」をクリック
  3. 表示された画面左下の「Boot」をクリック
  4. 「EFI PXE~」が先頭に表示されているので、F5キー、F6キーを利用して「Windows Boot Manager」が先頭に表示されるようにする
  5. 「EFI PXE~」の行は利用しないので、「Enabled」と表示されている部分をドラッグし、「Disabled」に変更する
    設定変更した結果はこんな感じ↓
  6. F10キーを押すと保存される。自動で再起動される。

解決!

ちなみに、この現象(勝手に起動順序が変わってしまう)はこれで2回目。
原因は何だろう…

 

【Windows】Windows8.1からWindows10(21H2)へのバージョンアップに失敗する

普通にバージョンアップを試みたが、「Windows 10 のインストールが失敗しました」のエラーとなりバージョンアップできなかった。

以下の手順で実施すればバージョンアップできた!

  1. 以下のサイトにある「ツールを今すぐダウンロード」をクリック。
    https://www.microsoft.com/ja-jp/software-download/windows10
  2. ダウンロードされた「MediaCreationTool21H2.exe」をダブルクリックして起動
  3. ライセンスに同意し、「実行する操作を選んでください」で、「別のPCのインストールメディアを作成する」にチェックをつける。
  4. 「使用するメディアを選んでください」で、「ISOファイル」にチェックをつける。保存先を聞かれるのでデスクトップに保存する。
    ※ダウンロードされるisoファイルは約4.28GB(2022/3/30時点)
  5. 【重要!】ダウンロードが完了したら、WifiをOFFにする。またはLANケーブルを抜いてインターネットにつながらない状態にする。
  6. ダウンロードされたファイルを右クリックし、「マウント」をクリックする。
  7. エクスプローラが開くので、「setup.exe」をダブルクリックして起動。
  8. あとはそのまま進めていけば、バージョンアップできた!
  9. バージョンアップ後、インターネットに再度繋げて完了。

 

【C#】DateTimePickerで日付と曜日を表示する

DateTimePickerの表示形式にて、「2022/02/21 月」のように日付と曜日を表示させることができる。

コントロールのプロパティで、Formatを「Custom」にし、CustomFormatを「yyyy/MM/dd ddd」と変更する。
※FormatをCustomに変更しないと、反映されないので注意!

yyyy/MM/dd ddd とすると、以下の表示になる。

yyyy/MM/dd dddd とすると、以下の表示になる。

 

 

【Excel】LAMBDA(ラムダ)を使って独自の関数を作成する

※2022/2/9に配信されたExcelから利用可能

はじめに

LAMBDA(ラムダ)を使えば、独自の関数を作れるとのことなので、利用する手順を確認してみた。

作成手順

直接セルに関数も書けるようだが、書式タブ→名前の管理を開き、任意の名前と、定義する内容を参照範囲に記載する。

例.  =LAMBDA(value1,value2,value3, value1 + value2 + value3)

ここでは、ORIGINAL_ADDという名前の関数とし、引数を3つ(value1~value3)定義した。LAMBDAの最後の引数が実際の処理になる。ここでは渡されたvalue1~3までを足した値を返すようにした。

実行結果

以下のように渡した3つの値を足した結果が返ってきた。

尚、今回試したところ、次のパターンはエラー(#VALUE)となった(文字列を含む場合)。

  • =ORIGINAL_ADD(1,2,”c”)
  • =ORIGINAL_ADD(“a”,”b”,”c”)

ただし、次の場合にはエラーにはならなかった(引数の値を省略した場合)。

  • =ORIGINAL_ADD(1,,)
    結果は1となる。

まとめ

同じ計算式を複数のセルで利用する場合には便利そうな機能。

ただ、どの環境でも使えるようになるには時間が掛かると思われるので、不特定の人が利用するExcelではいまのところ利用は控えた方がよさそう。

 

【Excel】今年の残り日数を取得する

以下をセルに記載すればOK 

=DAYS(YEAR(TODAY()) &"/12/31",TODAY())

 

ポイント

  • DAYS関数で日数の差を取得できる
  • 年の最後の日付は12/31で決まっているので、TODAY関数をYEAR関数を組み合わせて今年の年末日を取得している
  • 上手く日数が表示されなければ、セルの書式設定で、「数値」を選択すること

【OneDrive】場所が利用できません 再解析ポイント バッファーにあるタグは無効です。エラーになる

OneDriveと同期している特定のフォルダをクリックすると「再解析ポイント バッファーにあるタグは無効です。」といったエラーメッセージが表示されて、フォルダを開くことができない。

Cドライブをスキャンディスクを実施したところ、修復が必要である旨が表示された。

メッセージに従い、再起動したところ該当のフォルダが表示されるようになった。

OneDriveは挙動が良く分からないので、別の場所にもバックアップしておいた方がよさそう・・・

 

 

【C#】Windowsの環境変数の値を取得する

コマンドプロンプトでsetコマンドを実行した際と同じ値をC#で取得する場合のコードは以下の通り(実際に試して値が一致したことを確認した)

echo %APPDATA% と同じ結果

Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData));

取得される値:C:¥Users¥(ユーザー名)¥AppData¥Roaming

echo %LOCALAPPDATA% と同じ結果

Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData));

取得される値:C:¥Users¥(ユーザー名)¥AppData¥Local

echo %USERPROFILE% または echo %HOMEDRIVE%%HOMEPATH% と同じ結果

Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile));

取得される値:C:¥Users¥(ユーザー名)