2024年11月5日火曜日

OS と [Alt]+[PrtScrn] に絡んで 状況確認

OS と [Alt]+[PrtScrn] に絡んで に引き続き、
OS 側での状況を確認して見ましょう。
分かったからと言っても、個人では、手が出無い のですが、
何かの参考にはなるかな?。


先の投稿 OS と [Alt]+[PrtScrn] に絡んで では、
アプリ側の QA サイト(バグ報告)で、報告してある旨、書きました。
其の中で、開発者さんが、GIMP 側から見た状況を上げてくれていましたね。
では、
本家本元、Microsoft さんの .Netframework を使って、Clipboard の中が どうなっているか、確かめて見ます。
そう、Windows 側から見た状況 になります。

先に書いた様に、Windows 10 側の キーバインド で、
Print Screen キー に Snipping Tool を割り当てましたから、
Windows 10 と 11 とで、似た設定になっている前提です。

共に、キー操作で画像を取り込んだ状態で、データ種類を列挙します。
少し専門的になるので、勘弁して下さい。
コードの触り も載せる予定。

  久しぶりに C# で書いたので、
  四苦八苦 でしたが、数時間の奮闘でした。

  余計に時間が掛かったのは OS 情報の取得部分 です。
  別投稿 で取り上げても良いのかも。

先ずは、結果を。



双方の OS で、
Snipping Tool 経由で転送した場合 と、
従前のキー操作 [Alt}+[Print Screen] で転送した場合。
合計4種類 です。
取り込ませるのは、Window の画像 Screen Shot。

同じ実行ファイルを 両 OS 上で実行しました。

結構な差異があるもんですね。
成程!。


では、コード部分を掲載しましょうか。
C# Form .Netframework 抜粋 です。

            IDataObject data = Clipboard.GetDataObject();

            System.Text.StringBuilder sb = new System.Text.StringBuilder();


            string item = "";

            if (data != null)
            {
                if (data.GetDataPresent(DataFormats.Text))
                {
                    item = "Text";
                }
                if (data.GetDataPresent(DataFormats.Bitmap))
                {
                    item = "Image";
                }

                foreach (string fmt in data.GetFormats())
                {
                    sb.Append(fmt);
                    sb.Append(Environment.NewLine);
                }
                label1.Text = item;
                textBox1.Text = sb.ToString();
            }



いやぁ、OS の進化 って 厄介な事も あるんですね。



0 件のコメント:

コメントを投稿