質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Windows Forms

Windows Forms(WinForms)はMicrosoft .NET フレームワークに含まれる視覚的なアプリケーションのプログラミングインターフェイス(API)です。WinFormsは管理されているコードの既存のWindowsのAPIをラップすることで元のMicrosoft Windowsのインターフェイスのエレメントにアクセスすることができます。

Q&A

解決済

1回答

954閲覧

インストールディレクトリの違いによる、Iconプロパティの変更可否について

mt.O-kun

総合スコア2

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Windows Forms

Windows Forms(WinForms)はMicrosoft .NET フレームワークに含まれる視覚的なアプリケーションのプログラミングインターフェイス(API)です。WinFormsは管理されているコードの既存のWindowsのAPIをラップすることで元のMicrosoft Windowsのインターフェイスのエレメントにアクセスすることができます。

0グッド

1クリップ

投稿2021/06/24 05:46

編集2021/06/24 06:20

お世話になります。
現在VisualStudioを用いてWindowsFormアプリを作成中です。

アプリを起動するとDBの接続先を選択する(2択)画面がまず表示されます。
①その選択された接続先によってタスクバーに表示されるアイコンを変更するようにソースを書いているのですが、 
インストールディレクトリ(C:/Apps/App01)にあるものを起動しても意図したようにアイコンが変更されません。
(DB接続先に合わせたアイコン)

②インストールフォルダ内のファイルをデスクトップに作成したフォルダ内に移動してからアプリを立ち上げると、
意図した挙動になります。
ショートカットを作成しているとショートカットのアイコンが表示されてしまうのは確認済みで、
作成すると②の場合でもアイコンの変更ができないようです。

当該のexeから直接ショートカットを作るのではなく、デスクトップからディレクトリ指定でショートカットを作成しても同様にアイコンの動的変更ができず、どうすれば変更が効くのかわからず困っております。

まず一番初めに表示される接続選択画面はタスクバーに表示させず、次の画面から表示するようにしております。
やりたいことは、
・インストールフォルダに格納されているexeを起動してもアイコンの変更を可能にする
・ショートカットから起動しても、ショートカットアイコンに左右されず、接続先に応じてアイコンを変更可能にする
です。

必要情報が不足しておりましたら補足いたしますのでどうぞよろしくお願いいたします。

追記

C#

1if (ConfigurationManager.AppSettings.Get("DBName") == "LOCAL") 2{ 3 this.Icon = Properties.Resources.favicon; 4} 5else 6{ 7  this.Icon = Properties.Resources.favicon2; 8}

すべてのformに継承するBaseクラスにこちらのコードを記載しております。
尚、選択先によってConfigファイルの当該セクションの値を書き換えております。

インストールフォルダ内の構成は
[Resource]
App.exe
App.exe.config
etc...

となっており、Resourceフォルダ内に配置してあるアイコンを動的に読み込む作りになっております。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

neconekocat

2021/06/24 06:12

とりあえずアイコンを変える部分のソースとかフォルダ構成位は書いた方がいいのでは?(インストールフォルダ内にある画像を動的に読み込んでる感じですかね?)
dodox86

2021/06/24 06:13

タスクバー上の表示の話でしたら、もしかしたら以下の質問回答と同等の理由かもしれません。 [VisualC#での実行ファイルのタスクバー上での名前の変更方法] https://teratail.com/questions/336817 こちらでは表示されている名前の話でしたが、アイコンも同じ理由でキャッシュされているのかも。もし理由が同じであれば原因はそれですが、解決法となるとまた更に進んだ話なので、まずは理由が同じかどうか確認してみてはどうでしょうか。
mt.O-kun

2021/06/24 06:24

neconekocatさん 不足情報として追加いたしました。 ご指摘ありがとうございます。 dodox86さん 有力情報ありがとうございます。 別PC(開発は行っていないが、過去verの当該アプリをインストールしている)で試しましたがうまくいかなかったので、キャッシュの削除やPATH情報の書き換え等試してみます。
Hey_CH

2021/06/25 01:58

接続先でタスクバーのアイコンの表示を変えたいだけであれば、NuGetで「Microsoft.WindowsAPICodePack-Shell」をインストールして「TaskbarManager.Instance.SetOverlayIcon」でアイコンを設定してやれば、アイコンの右下にアイコンを表示できるので、これで事足りる可能性が無くはないです。
guest

回答1

0

ベストアンサー

同じような問題からくる質問がStackoverflowにありましたのでご案内しておきます。
※ただし本件はオリジナルの質問者さんにとって現時点で完全に納得のいく回答、解決策で閉じている訳ではないようで、決め手に欠けているようです。

Change taskbar icon at runtime on deployed app - stackoverflow
Author: Safe, Felix D., XtaXCraft,

「Windows 10 taskbar icon cached programmatically」などとキーワード検索してみると関連する情報がヒットします。やはりアイコンのデータはWindowsのシェルであるExplorerのデータとしてキャッシュされているようです。

古い記事で、私自身は確認していませんがWindows 7で解決したようなものはありました。Windows 10の今では対応できないものかもしれません。
Change icon displayed in taskbar at runtime - CODE PROJECT

いずれも私自身は検証していないので、その点ご留意ください。

投稿2021/06/24 09:49

dodox86

総合スコア9183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2021/06/24 10:05

この問題を解決しようとするのは、WindowsのシェルであるExplorerという別アプリの公開されていない内部の動作仕様を言わばハックして変えようとすることなので、ある意味で無茶、越権行為と言えることなのかもしれません。解決できたらその策は有意義な情報となり得ますが。
mt.O-kun

2021/06/25 01:30

ありがとうございます。 Overflowも検索してみましたが、ワードが全然引っかからずないものと断念しておりました。 やはりシステムの根幹にかかわる部分とのことで、自分でも調べていろいろ試行してみます。 もし、何か良い解決案ができましたら改めて投稿させていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問