C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Windows10タイムラインに表示されるアイコン

[トピック内 15 記事 (1 - 15 表示)]  << 0 >>

■98093 / inTopicNo.1)  Windows10タイムラインに表示されるアイコン
  
□投稿者/ 迷える仔犬 (1回)-(2021/09/15(Wed) 11:51:46)

分類:[.NET 全般] 

2021/09/15(Wed) 11:57:14 編集(投稿者)

Windows10の途中から追加されたタイムライン機能のアクティビティティですが、
各アクティビティティの左上のアイコンが、自分の作成したプログラムだと
プロジェクトファイルで指定したexeのアイコンではなく、Visual Studioでアイコンを指定しなかった場合の
デフォルトのexeアイコンで表示されます。
そうかと思うと、WindowsXP時代ぐらいの古いアプリでも表示される物がありますが、
どう指定すればよいのかわかる方いらっしゃいますか?

因みに、WindowsFormアプリです。


引用返信 編集キー/
■98095 / inTopicNo.2)  Re[1]: Windows10タイムラインに表示されるアイコン
□投稿者/ 774RR (869回)-(2021/09/15(Wed) 14:09:56)
アイコンって一つの ico ファイルの中にサイズ違いのアイコンが複数格納できる代物で、
オイラのところで作った WinForms アプリでは 32x32 のアイコンがタイムライン画面に表示されている様子。

アイコンファイルを編集する際にいつものサイズ以外のサイズもちゃんと編集した?
Visual Studio 2019 ならソリューションエクスプローラ中 Resources 内のアイコンファイルをダブルクリック
左ペインにアイコンが大きさ違いで 16x16 32x32 64x64 の3つ表示されるはずなので、
全部編集したかどうか確認っス。

引用返信 編集キー/
■98098 / inTopicNo.3)  Re[2]: Windows10タイムラインに表示されるアイコン
□投稿者/ 迷える仔犬 (2回)-(2021/09/15(Wed) 17:19:11)
コメントありがとうございます。

アイコンは16×16と48×48(いずれも32bit)しか作成してなかったので、
32×32、64×64も追加してみましたが、結果変わらずでした。
引用返信 編集キー/
■98099 / inTopicNo.4)  Re[3]: Windows10タイムラインに表示されるアイコン
□投稿者/ 774RR (870回)-(2021/09/15(Wed) 17:58:16)
この手の奴は最初に処理されたときにアイコンが Windows によってキャッシュされていたりするので
単にプログラムを開発環境でリンクしなおしただけでは変わらないように見えるの普通だったり。
同僚のマシンなどで一度試してみると何か違いが出るかもしれないッス。

引用返信 編集キー/
■98105 / inTopicNo.5)  Re[4]: Windows10タイムラインに表示されるアイコン
□投稿者/ 迷える仔犬 (3回)-(2021/09/16(Thu) 09:39:27)
迷える仔犬 さんの Web サイト
コメントありがとうございます。
テレワーク中で気軽に他マシンで試せない状況なのですが、キャッシュの件もごもっともと思い、
新規プロジェクトからミニマムコードで試してみましたが、結果変わらずです・・・
以下の再現手順で行っていますが、何かお気づきの事がありましたら、アドバイスお願いします。
因みに、WindowsFormでUWPのAPIを利用する方法は、リンクのサイトを参考にしました。
https://codezine.jp/article/detail/10654?p=3

1.Visual Studio2019で新規プロジェクトを作成(.NET Framework 4.7.2)
2.参照設定で、以下の2ファイルを追加
  C:\Program Files (x86)\Windows Kits\10\UnionMetadata\10.0.18362.0\Windows.winmd
  C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETCore\v4.5\System.Runtime.WindowsRuntime.dll
3.Windows.winmdのプロパティで「ローカルにコピー」をfalse
4.Resources.resxをダブルクリック→リソースの追加から新しいアイコンの追加(デフォルトのままでも標準exeアイコンと異なるのでそれを利用)
5.プロジェクトのプロパティで「アイコンとマニフェスト」のアイコンで4のアイコンを指定(Resources\Icon1.ico)
6.フォームにボタンを配置し、クリックイベントを作成
7.下記コードをForm1.csに記述して実行して、ボタンクリックすると、標準exeアイコンでタイムラインが作成されます。


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Windows.ApplicationModel.UserActivities;

namespace TimeLineTest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private static UserActivitySession gActivitySession = null;     //現在のアクティビティセッション

        private async void button1_Click(object sender, EventArgs e)
        {
            string DummyId = @"C:\test.txt";

            // UserActivityChannel から UserActivity を生成する (登録済みなら取得になる)
            UserActivityChannel MyActivityChannel = UserActivityChannel.GetDefault();
            UserActivity MyActivity = await MyActivityChannel.GetOrCreateUserActivityAsync(DummyId);

            // タイムラインから呼び出されるときのアクティベーション URI をセット
            // (ただし、登録済みのアクティビティではセット済み。変更不要なのでセットしない)
            if (MyActivity.State != UserActivityState.Published)
            {
                MyActivity.ActivationUri = new Uri(DummyId);
            }


            // タイムラインに表示される文字列をセット (タイムライン上での検索対象)
            // (これも以前と同じでよければ、登録済みのアクティビティではセット不要)
            MyActivity.VisualElements.DisplayText = "TestDisplayText";
            MyActivity.VisualElements.AttributionDisplayText = "TestAttributionDisplayText";
            MyActivity.VisualElements.Description = "Description";

            // UserActivity を保存
            await MyActivity.SaveAsync();

            // 以前の gActivitySession があるなら破棄して、新しいセッションを保持
            gActivitySession?.Dispose();
            gActivitySession = MyActivity.CreateSession();

        }
    }
}


引用返信 編集キー/
■98106 / inTopicNo.6)  Re[5]: Windows10タイムラインに表示されるアイコン
□投稿者/ 774RR (871回)-(2021/09/16(Thu) 16:15:36)
とりあえず難しいことをしてるけどオイラのやったことは
・アイコンファイルの作成→ Resources フォルダを作って追加
・Form1 のプロパティ中に Icon というのがあるのでそれを変更
だけっス。
Form1.Designer.cs の InitializeComponent() 中に this.Icon= ほげ が追加される。

ちなみにアイコンのキャッシュはしていない様子。ビルド後に実行するだけでアイコン変わったっス。


引用返信 編集キー/
■98107 / inTopicNo.7)  Re[6]: Windows10タイムラインに表示されるアイコン
□投稿者/ 迷える仔犬 (4回)-(2021/09/16(Thu) 16:53:24)
迷える仔犬 さんの Web サイト
> とりあえず難しいことをしてるけどオイラのやったことは

ということは、アクティビティティパネルの作成は自動に任せているということですか?

> Form1.Designer.cs の InitializeComponent() 中に this.Icon= ほげ が追加される。

先ほどのサンプルでは指定してませんでしたが、実際のプログラムでは指定しておりますし、
サンプルも指定してみましたが、状況変わらずでした。

何が違うのだろう・・・
私はドメインアカウントでログインしており、マイクロソフトアカウントは指定してませんが、
マイクロソフトアカウントでログインしてますか?
引用返信 編集キー/
■98108 / inTopicNo.8)  Re[7]: Windows10タイムラインに表示されるアイコン
□投稿者/ 774RR (872回)-(2021/09/16(Thu) 17:13:34)
> ということは、アクティビティティパネルの作成は自動に任せているということですか
そりゃもう単なるテストですから新規プロジェクト→やったのそれだけ。

会社のマシンは AD 有効ッス(なのでマイクロソフトアカウントではない)
# すんまそん明日は有給にしちゃったので連休ッス。ウチのマシンには VS 入ってないので追試不能。
引用返信 編集キー/
■98121 / inTopicNo.9)  Re[8]: Windows10タイムラインに表示されるアイコン
□投稿者/ 迷える仔犬 (5回)-(2021/09/22(Wed) 08:24:20)
迷える仔犬 さんの Web サイト
No98108 (774RR さん) に返信
>>ということは、アクティビティティパネルの作成は自動に任せているということですか
> そりゃもう単なるテストですから新規プロジェクト→やったのそれだけ。

念の為に確認ですが、774RRさんの言われているタイムラインのアイコンは、
作業記録ではなく、現在実行中のプログラムのアイコンではないでしょうか?

私の書き方が悪かったのかもしれませんが、問題としているアイコンは、
タイムラインで現在実行中のプログラムの下の方に表示される作業履歴(使用したファイル等)
を表示しているパネルの左上のアイコンです。



引用返信 編集キー/
■98169 / inTopicNo.10)  Re[9]: Windows10タイムラインに表示されるアイコン
□投稿者/ PATIO (11回)-(2021/10/06(Wed) 15:57:00)
No98121 (迷える仔犬 さん) に返信
> ■No98108 (774RR さん) に返信
> >>ということは、アクティビティティパネルの作成は自動に任せているということですか
>>そりゃもう単なるテストですから新規プロジェクト→やったのそれだけ。
>
> 念の為に確認ですが、774RRさんの言われているタイムラインのアイコンは、
> 作業記録ではなく、現在実行中のプログラムのアイコンではないでしょうか?
>
> 私の書き方が悪かったのかもしれませんが、問題としているアイコンは、
> タイムラインで現在実行中のプログラムの下の方に表示される作業履歴(使用したファイル等)
> を表示しているパネルの左上のアイコンです。

これは開いたファイルの履歴の所だと思うのでファイルをそのアプリで開かないと出てこないですね。
私が自作のアプリでやった時もファイルを開いたりしていないので何も出ていませんでした。
引用返信 編集キー/
■98171 / inTopicNo.11)  Re[10]: Windows10タイムラインに表示されるアイコン
□投稿者/ 迷える仔犬 (6回)-(2021/10/06(Wed) 17:48:49)
迷える仔犬 さんの Web サイト
No98169 (PATIO さん) に返信
>
> これは開いたファイルの履歴の所だと思うのでファイルをそのアプリで開かないと出てこないですね。
> 私が自作のアプリでやった時もファイルを開いたりしていないので何も出ていませんでした。

それはわかっています。
実際作りたいプログラムはファイルを開いたりするプログラムなので履歴を表示したいと考え、
サンプルソースのようにUserActivityChannelクラスを利用して明示的に履歴を追加したところ、
パネル自体は追加されているのに、アイコンが標準アイコンになってしまっているので、
自アプリのアイコンを表示させる方法をご存知ないかというのが質問の主旨です。

引用返信 編集キー/
■98172 / inTopicNo.12)  Re[11]: Windows10タイムラインに表示されるアイコン
□投稿者/ とっちゃん (739回)-(2021/10/06(Wed) 21:12:52)
No98171 (迷える仔犬 さん) に返信

> 実際作りたいプログラムはファイルを開いたりするプログラムなので履歴を表示したいと考え、
> サンプルソースのようにUserActivityChannelクラスを利用して明示的に履歴を追加したところ、
> パネル自体は追加されているのに、アイコンが標準アイコンになってしまっているので、
> 自アプリのアイコンを表示させる方法をご存知ないかというのが質問の主旨です。
>
履歴登録とは別に、ファイルの関連付けが必要なのではないでしょうか?

そのファイルをエクスプローラでダブルクリックしたら自分のアプリが起動するように
システム設定していますか?
それが出来ていれば、問題解決する気がします。

引用返信 編集キー/
■98199 / inTopicNo.13)  Re[12]: Windows10タイムラインに表示されるアイコン
□投稿者/ 迷える仔犬 (7回)-(2021/10/12(Tue) 15:10:39)
迷える仔犬 さんの Web サイト
> 履歴登録とは別に、ファイルの関連付けが必要なのではないでしょうか?
>
> そのファイルをエクスプローラでダブルクリックしたら自分のアプリが起動するように
> システム設定していますか?
> それが出来ていれば、問題解決する気がします。
>

サンプルではなく、実際のプログラムでは関連付けしており、ダブルクリックで起動するようにコーディングしておりますが、
そちらでこの状況が発生したのでサンプルプログラムで再現させたという状況です。
引用返信 編集キー/
■98210 / inTopicNo.14)  Re[13]: Windows10タイムラインに表示されるアイコン
□投稿者/ くま (17回)-(2021/10/13(Wed) 20:11:09)
参考になるかわからないけど

https://codezine.jp/article/detail/10790
https://github.com/biac/codezine/blob/master/UwpForefront/UF05/Timeline.Shared/TimelineHelper.cs


引用返信 編集キー/
■98269 / inTopicNo.15)  Re[14]: Windows10タイムラインに表示されるアイコン
□投稿者/ 迷える仔犬 (8回)-(2021/10/26(Tue) 13:44:23)
迷える仔犬 さんの Web サイト
No98210 (くま さん) に返信
> 参考になるかわからないけど
>
> https://codezine.jp/article/detail/10790
> https://github.com/biac/codezine/blob/master/UwpForefront/UF05/Timeline.Shared/TimelineHelper.cs
>

ありがとうございます。
2つ目のリンクの方法でアイコン表示を確かに変える事ができるのですが、
IconUriが受け付けるプロトコルがhttp/httpsのみなので、Web上にリソースを置く必要があるので、避けたい方法でした。

しかしながら、MSに技術質問を先月中旬に投げていたのですが、1カ月以上検討していただいた結果として、
このIconUri以外の方法はないという結論と本日回答をもらいました。

自分的には満足いく結果ではありませんでしたが、一応変更方法も見つかりましたし、
MSの回答も同じでしたので、これで終わりとさせていただきます。

返信をいただいた皆さま、ありがとうございました。


解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ