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

2026年5月7日木曜日

以前の Outlook を使いたい!

新しい Outlook

いや、いらないよね?
たまに起動してしまうとパスワード求められて来るのもびっくりするし。
マイクロソフトアカウントのパスワードかと思いきや、メールアカウントのパスワードだし。
せっかく作ったアドインが使えないし。
アドインを買ってくれてるユーザーも使えないし・・・

おかげで、弊社の Outlook アドインの売れ行きが冴えません。

以前の Outlook を使うには

従来の Outlook を使うには、新しい Outlook の「ヘルプ」メニューにある、「従来の Outlook に移動」をクリックします。


最近は、このメニューさえ出ないそうですよ!
その場合、Outlook をアップデートすると「従来の Outlook に移動」が出てくるそうです!

アイコンを変更しましょう

タスクバーとかメニューとかデスクトップのアイコンを使って Outlook を起動してると思いますが。
毎回、「従来の Outlook に移動」を選ぶのはうんざりしますよね
そこで、Outlook (classic) のアイコンと入れ替えましょう!

そのためには、実行ファイルの場所が必要になりますね。
ここです!
C:\Program Files\Microsoft Office\root\Office16

ここにある、OUTLOOK.EXE を右クリックして「タスクバーにピン留めする」を選ぶと、タスクバーに表示されます!

あとは、このショートカットアイコンをデスクトップなどの好きな場所に配置すればいいですね。

新しい Outlook のアイコンが不要な場合は、右クリックで消去しちゃいましょう!

既定のアプリに変更する

WEBサイトの mailto: のリンクなどでメールを送信したいとき、これまた新しい Outlook が表示されちゃいますね。
しつこいなーって思います(笑)
既定のアプリを変更しましょう。
Windowsの「設定」「アプリ」「既定のアプリ」です。


ここで、「ファイルの種類またはリンクの種類の規定値を設定する」下の検索ボックスに
MAILTO
と入力すると、現在設定されているメールソフトが表示されます。

メールソフトの部分をクリックすると、候補となるアプリの一覧が表示されますので、Outlook(クラシック)を選んで「規定値を変更する」ボタンを押します。

まとめ

という流れで、Outlook(classic)が使えるようになりました。
このまま従来の Outlook をこれからもずっと使い続けられるといいのですが・・・w

2025年4月11日金曜日

WindowsUpdateでフォントがおかしくなった!

Windows10 Update

使ってるPCはWindows11にアップデートできない機種なので Windows 10 を使い続けてます。
昨夜、「更新してシャットダウン」を選んで朝まで放置してたら、例によってPCは起動状態でした。
まあ、いつものことだから、イラつきもしませんが(笑)

エクスプローラの表示がおかしい

さて、今日も作業を・・・とみるとエクスプローラの表示がおかしい。
おいおい、なんだよこりゃ?
システムフォントが変わったのかな?

フォントを変更する

たしか、Windows はフォントの大きさを変えられるけどフォント自体を変更することはできなかった気がする。
そこで、これ!
「Meiryo UIも大っきらい!!」
ダウンロードして展開したら実行ファイルをクリック。
フォントを指定して、「一括設定して終了」これでOK
文字化けさえしなければなんでもいいので、「Meiryo UI」を指定しました。(笑)

まとめ

と、いうことで、昨日までとちょっと違うけど、文字化けを対策できました。
有用なソフトウェアを公開してくれている Tatsu さんに感謝です!
ありがとうございます!

2024年6月14日金曜日

Hyper-Vで終了できなくなったOSを削除する。

仮想マシン上のOSが落ちてしまった

Hyper-Vで作成した仮想マシン、何らかの問題で固まってしまうことがあります
OSは動きっぱなしなのでメモリとかリソースを使ったまま。
動作中の仮想マシンは Hyper-V に削除メニューがありません。
そうなってしまった場合の対処方法についてまとめます。

OSをインストールしたら固まってしまった

今回は、CentOS 6.5 という古いバージョンのしかも32bit版の環境を作る、という目的でした
インストールの手順は省くとして。
最終的に起動後は、こんな状態になってしまい、「停止」とか「シャットダウン」も機能しなくなってしまいました!

Hyper-V では「実行中」と表示されていてメモリを消費しています。
「削除」メニューもありません・・・
このまま放置するとメモリの無駄遣いですね・・・

エクスプローラで、Hyper-V の仮想マシン用フォルダを削除しようとしても、「使用中」で削除できません。

そんなときの対処方法

Hyper-V を停止して、その間にフォルダを削除してから Hyper-V を再開すればいいってことです。

Windows の「サービス」を起動して、「Hyper-V Virtual Machine Management」を見つけましょう

「スタートアップの種類」を「手動」に変更して「適用」を押します。
「停止」ボタンを押してサービスを停止します。
必要ないのかもしれませんが、なんとなく、この時点で Windows を再起動させています。

Windows を再起動させたら、まず、不要な仮想マシンフォルダをエクスプローラで削除します。

削除できました!

サービスを起動して、「Hyper-V Virtual Machine Management」を「自動」にして「開始」します。

Hyper-V を起動してみると、無駄に動作していたOSがなくなっていることがわかります。

まとめ

これ、よくあるんですよねー。
同じように困ってしまったら、上記方法を(自己責任の範囲でw)お試しください。
めでたしめでたし。

2024年1月27日土曜日

仮想マシンサービスは利用できません

Hyper-V マネージャでサービスを停止してしまった

どうしても止められなくなったVM(Ubuntu)を再構築しちゃおうと思ったんだけど、できなくて
いろいろやってるうちに、「サービスの停止」を選んでしもうた!(笑)
サービスを停止させた Hyper-V マネージャを復活させる方法について。

Hyper-Vのサービスを停止させてしまうと

こんな画面になっちゃって、仮想マシンが表示されなくなってしまいます。

Hyper-V サービスを復活させるには

PowerShell を「管理者モード」で起動します!

サービスを自動起動に設定します。

PS C:\WINDOWS\system32> sc.exe config vmms start=auto

[SC] ChangeServiceConfig SUCCESS

次に、サービスを開始します。

PS C:\WINDOWS\system32> sc.exe start vmms

SERVICE_NAME: vmms
        TYPE               : 10  WIN32_OWN_PROCESS
        STATE              : 2  START_PENDING
                                (NOT_STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0
        PID                : 39080
        FLAGS              :

Hyper-V の仮想マシンが復活してくれます


めでたしめでたし。

2023年6月2日金曜日

Windows hosts ファイルを編集して名前解決させる。

hosts

Virtual Machine で開発することが圧倒的に多くなってきましたね。
本番環境と開発環境を分けるためにドメインの名前解決を一時的に変更することも多々あります。
そこで必要になるのが hosts の編集です。

hosts を編集して名前解決させるには

これが、なかなかめんどくさいw
1.メモ帳を管理者モードで起動
2.ファイルを開くで、右下のフィルタを「すべてのファイル」に変更。
3.C:\Windows\System32\drivers\etc\hosts を開いて編集。
4.保存。
5.コマンドプロンプトを開いて
6.C:\> ipconfig /flushdns

一日一回とかならまだいいけど、数回実施するとなるとめんどくさいね。
ということで、プログラム書いてみましたw

HostsEditor

今回は、Visual Studio 2022 Comunity の C# Windows Form .NET プロジェクトを作成しました。
Form1 には、保存終了用のツールボタンと、全画面に Dock した TextBox を配置します
TextBox のプロパティは、Multiline=true, MaxLength を大きめに。font も大きめに、程度かな。
Name は editText と付けておきました。

Form1.cs

プログラムは、こんな感じです。
hosts ファイルの位置を保持
全行を読み込んで TextBox に入れて編集可能にする
保存ボタンが押されたら、保存して、CMD.exe で ipconfig /flushdns を実行。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace HostsEditor
{
    public partial class Form1 : Form
    {
        internal string HostsFileName { get; set; }
        public Form1()
        {
            InitializeComponent();
        }

        //初期表示
        private void Form1_Load(object sender, EventArgs e)
        {
            // ファイル名
            string system_folder = Environment.GetFolderPath(Environment.SpecialFolder.System);
            string hosts_path = Path.Combine(system_folder, "drivers", "etc");
            HostsFileName = Path.Combine(hosts_path, "hosts");

            System.IO.FileInfo fi = new System.IO.FileInfo(HostsFileName);
            if(4194304 < fi.Length)
            {
                MessageBox.Show("hosts ファイルが大きすぎます。他の手段で編集してください。",
                    "エラー", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                Close();
            }
            // ファイルを 65,536 byte まで読み込む
            string[] lines = File.ReadAllLines(HostsFileName);
            string text = String.Join("\r\n", lines);
            editText.Text = text;
            // 全選択を解除
            editText.SelectionStart = 0;
        }

        private void closeClick(object sender, EventArgs e)
        {
            try
            {
                // 保存
                string text = editText.Text;
                using (StreamWriter streamWriter = new StreamWriter(HostsFileName))
                {
                    // Writeメソッドで文字列データを書き込む
                    streamWriter.Write(text);
                    // StreamWriterオブジェクトを閉じる
                    streamWriter.Close();
                }
                // ipconfig /flushdns を実行。完了まで待つ。
                System.Diagnostics.Process process = new System.Diagnostics.Process();
                //ComSpec(cmd.exe)のパスを取得して、FileNameプロパティに指定
                process.StartInfo.FileName = System.Environment.GetEnvironmentVariable("ComSpec");
                //出力を読み取れるようにする
                process.StartInfo.UseShellExecute = false;
                process.StartInfo.RedirectStandardOutput = true;
                process.StartInfo.RedirectStandardInput = false;
                //ウィンドウを表示しないようにする
                process.StartInfo.CreateNoWindow = true;
                //コマンドラインを指定("/c"は実行後閉じるために必要)
                process.StartInfo.Arguments = @"/c ipconfig /flushdns";
                //起動
                process.Start();
                //(親プロセス、子プロセスでブロック防止のため)
                process.WaitForExit();
                process.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            // 画面を閉じる
            Close();
        }
    }
}

管理者として起動

プログラムを管理者として起動する必要があるので、Program.cs を編集します。
Main部分に以下の内容を追記します。

        static void Main(string[] args)
        {

            // 管理者権限に昇格させて自分自身を起動する
#if (!DEBUG)
            Thread.GetDomain().SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
            var pri = (WindowsPrincipal)Thread.CurrentPrincipal;
            //管理者権限以外での起動なら, 別プロセスで本アプリを起動する
            if (!pri.IsInRole(WindowsBuiltInRole.Administrator))
            {
                var proc = new ProcessStartInfo()
                {
                    WorkingDirectory = Environment.CurrentDirectory,
                    FileName = Assembly.GetEntryAssembly().Location,
                    Verb = "RunAs"
                };

                if (args.Length >= 1)
                    proc.Arguments = string.Join(" ", args);

                //別プロセスで本アプリを起動する
                Process.Start(proc);

                //現在プロセス終了
                return;
            }
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
#endif
        }

まとめ

DOBON.NET さんの記事を参照しました。
デバッグ時は、VisualStudio を管理者モードで起動する必要があります。
わりと、楽になりましたw
めでたしめでたし。

2019年7月30日火曜日

VisualStudioで既存のフォルダをプロジェクトに追加する

諸事情で(謎)、VisualStudio 2015 を使い続けてます。
他のプロジェクトをコピーして新しいプロジェクトとして再構築しようとする際にフォルダ配下のファイルをプロジェクトに追加するとフォルダーなしでプロジェクトに追加されてしまいます。

でもって、新規フォルダで同名のフォルダを追加しようとするとエラー。

WEBを検索すると、エクスプローラからソリューションエクスプローラにフォルダをドラッグ&ドロップするとうまくいくとの記述を見ますが、こちらの環境ではうまく動いてくれません。

ということで、以下の手続きでフォルダを追加しました。

1.VisualStudio を終了
2.目的のプロジェクトの .csproj ファイルをエディタで開く
3.以下の記述を追加
<ItemGroup>
<Folder Include="フォルダ名\" />
</ItemGroup&lgt;
4.保存終了して .sln を開く。

無事フォルダが追加されます。
既存ファイルを追加すると、上記の Folder Include は消えてなくなります。

本題に関係ありませんが、エクスプローラがとてもよく落ちてしまうようになって、ストレスまっくすな状態です。
こっちを何とかしたいw

2018年10月15日月曜日

マルチディスプレイ環境で親ウィンドウの中心にウィンドウを表示するには

表題の通りです。

親ウィンドウの中央にダイアログなどを表示しようとすると、親ウィンドウそのものが画面から外れている場合に表示領域外に表示されてしまったりして困ったことになります。

マルチディスプレイ環境だったりすると、座標域に負数が含まれる場合などもあって、なかなかややこしい。

WEB上を検索しても、GetSystemMetrics(SM_CXSCREEN)とかGetSystemMetrics(SM_CXSFULLCREEN) などを使ったサンプルしか公開されていなくて、ちょっと不満だったので書いてみました。

ま、実際にはもっとややこしい環境もあると思うので完全ではないかもしれないけど、うちの環境では表示されるのでよしとしようw

ヘッダファイルの記述

extern BOOL SetWindowCenterParent(HWND handle, HWND parent, int width, int height, int min_width = -1, int min_heigh = -1);

ソースファイル

#include 
//
// ウィンドウを親ウィンドウの中心に表示する
//
// 【パラメータ】
//  HWND handle     対象となるウィンドウハンドル
//  HWND parent     親ウィンドウハンドル(HWND_DESKTOP も可)
//  int width       ウィンドウの幅
//  int height      ウィンドウの高さ
//  int min_width   最小ウィンドウ幅(不要な場合は負数を指定)
//  int min_heigh   最小ウィンドウ高さ(不要な場合は負数を指定)

BOOL SetWindowCenterParent(HWND handle, HWND parent, int width, int height, int min_width, int min_heigh)
{
 // 親ウィンドウの中心を取得
 RECT parent_rect;
 GetWindowRect(parent, &parent_rect);

 POINT center;
 center.x = (parent_rect.right + parent_rect.left) / 2;
 center.y = (parent_rect.bottom + parent_rect.top) / 2;

 // ディスプレイ情報
 SIZE display;
 display.cx = GetSystemMetrics(SM_CXVIRTUALSCREEN);
 display.cy = GetSystemMetrics(SM_CYVIRTUALSCREEN);
 
 // タスクバーの大きさを調整
 SIZE screen;
 screen.cx = GetSystemMetrics(SM_CXSCREEN);
 screen.cy = GetSystemMetrics(SM_CYSCREEN);
 RECT work_area;
 SystemParametersInfo(SPI_GETWORKAREA, 0, &work_area, 0);
 SIZE task_bar;
 task_bar.cx = screen.cx - (work_area.right - work_area.left);
 task_bar.cy = screen.cy - (work_area.bottom - work_area.top);
 display.cx -= task_bar.cx;
 display.cy -= task_bar.cy;

 POINT origin;
 origin.x = GetSystemMetrics(SM_XVIRTUALSCREEN);
 origin.y = GetSystemMetrics(SM_YVIRTUALSCREEN);

 // 最小サイズ、最大サイズの検査
 if ((0 < min_width) && (width < min_width))
 {
  width = min_width;
 }
 if ((0 < min_heigh) && (height < min_heigh))
 {
  height = min_heigh;
 }
 if (display.cx < width)
 {
  width = display.cx;
 }
 if (display.cy < height)
 {
  height = display.cy;
 }
 // 表示位置
 POINT place;
 place.x = center.x - (width / 2);
 place.y = center.y - (height / 2);

 // ディスプレイの座標範囲(マルチディスプレイ含む)からのはみだし検査
 if ((origin.x + display.cx) < (place.x + width))
 {
  place.x = origin.x + display.cx - width;
 }
 if (place.x < origin.x)
 {
  place.x = origin.x;
 }
 if ((origin.y + display.cy) < (place.y + height))
 {
  place.y = origin.y + display.cy - height;
 }
 if (place.y < origin.y)
 {
  place.y = origin.y;
 }
 return SetWindowPos(handle, HWND_TOP, place.x, place.y, width, height, 0);
}

2018年8月17日金曜日

Windows 10 でコントロールパネルを開く

同じような情報がWEB上にたくさんありますが、Windows10でコントロールパネルを開く方法です。

1.エクスプローラを開きます。
タスクバーのアイコンをクリックするのが早いですね。


2.メニュー下の「↑」ボタンを押します。
コントロールパネルがこんなところにありますね。
 
おや。デスクトップ上のアイコンもあるではないですか。
こいつは便利だ。
と思ったので書き留めておきました。


2018年5月15日火曜日

Time Adapter for Excel のカスタムUI 実行時エラー

突如、Excel 2016 を起動するたびにこんなエラーメッセージが出るようになってしまいました。


どうしたものかと試した結果、こんな感じでうまくいきました。

「ファイル」-「オプション」-「アドイン」を開いて、一番下のコンボボックスで「COMアドイン」を選択して「設定」を押します。

Time Adapter for Excel なるアドインとやらのチェックをすべてオフにしてあげました。


これでうまくいきました。
そもそも何のためのアドインなのか、とかいうのは気にせずに切り捨ててしまいました(笑

2017年12月21日木曜日

先ほどのメールの添付ファイルのパスワードは***

メールの添付ファイルは、暗号化して添付すること。
暗号化パスワードは別メールで送付すること。

といったルールで運用されている企業が多いのはご存知のことと思います。
特に電器系のメーカーさんとかは全社でルール化されているようです。

主な理由は『メールが漏えいした場合に、重要なファイルの内容が漏えいすることを防ぐ』というものなのでしょう。
もし、メールが漏えいしているのであれば、別メールで送られたパスワード通知メールも当然漏えいしているわけですから、添付ファイルを暗号化してそのパスワードを別メールで送るなんてナンセンス極まりない。
送信時の手順もめんどくさいし、メールを受け取られた受信者側にもパスワードを入力してファイルを展開させる必要があるので、めんどくさいし失礼ではないか!
という御意見はもっともだと思います。
https://seasoft.co.jp/products/BizAttacher.html
たしかにご指摘の点についてはもっともではあります。
でも、この面倒な手順が事故を未然に防ぐことに一役買っていることも否定できません。

メールの送信事故というのは毎日のように発生しています。
・ファイルを添付するのを忘れて送信してしまった。
・複数の宛先あてのメールを Bcc ではなく To で送ってしまった。
・個人情報を含んだファイルを第三者に送ってしまった。
・見積書のファイルを別のライバル社に送ってしまった。
などなど。
メールを操作している方ならば、心当たりが少なからずあるはずです。

ファイルの暗号化は「メールが漏えいした場合の対策」だけではなく、メールの利用者がこういった人為的なミスを犯した場合にできるだけ事故の被害を少なくするのにとても有効です。

『自分はそんなミスはしないから大丈夫』

個人で運用しているメールであれば、そういった自信があれば問題ありません。
が、会社や団体などの組織の場合、『すべての人が何のミスもなくメールを運用している!』という保証はどこにもありません。

大手企業ならまだしも、多くの組織にはセキュリティの監視をするための部署や担当者さえいないのが現状で、誤送信の事故は頻繁に発生しています。

添付ファイルを暗号化しておいて、パスワードメールを別に送るようにルール化することは必ずしも無駄とは限らないのです。

Outlookをご利用の場合
https://seasoft.co.jp/products/BizAttacher.html

Becky!をご利用の場合
https://seasoft.co.jp/products/BkBizAttacher.html

これらのソフトで誤送信の事故を未然に防ぐのはいかがでしょう?
以上、CMでした。