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

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

新規登録して質問してみよう
ただいま回答率
85.37%
Visual Studio

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

Q&A

解決済

2回答

1069閲覧

フォームアプリケーションの実行ファイルのツールチップを変えたい。

unikuma

総合スコア11

Visual Studio

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

0グッド

0クリップ

投稿2021/06/20 04:38

イメージ説明

前提・実現したいこと

画像のもどき辞典3を他の言葉に変えたいのですが、どうすればいいでしょうか?

ビジュアルスタジオで出力したexeファイルのツールチップの表示です。

補足情報(FW/ツールのバージョンなど)

Microsoft Visual Studio Community 2019
Version 16.8.3

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

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

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

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

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

Hey_CH

2021/06/20 06:19

よくわかりませんが、常駐アプリっぽいので「常駐アプリ ツールチップ」みたいな感じで検索してみては?
unikuma

2021/06/20 08:59

常駐アプリではなく自分で作ったフォームアプリケーションをタスクバーにピン止めしただけです。 分かりにくくてすみませんでした。
Hey_CH

2021/06/22 04:39

解除ありがとうございました。 質問欄に言語や.NET Frameworkのバージョン等の記載をお願いします。
unikuma

2021/06/23 13:17

遅くなってすみません。 言語はC#で.NET Frameworkのバージョンは.NET Framework4.8です。
guest

回答2

0

ベストアンサー

「C# .NET5.0」でのやり方を「C# .NET Framework4.8」でやる方法を別解として書いておきます。

  1. ソリューションエクスプローラーのプロジェクトを右クリック>プロパティ
  2. アセンブリ名を変更(下図では「aiueo」に変更)
  3. アセンブリ情報ボタンを押して、タイトルを変更(下図では「何でもOK」に変更)
  4. リビルドして、EXEをタスクバーにピン留めすると「何でもOK」とツールチップに表示される

アプリケーションページ

実行中のツールチップについての追記

実行中のツールチップが制御できないじゃんって事でちょっと調べました。
※Microsoft.WindowsAPICodePack-Shellを使えばプログレスバーやアイコンのオーバーレイなんかはできるんだけど、何故かツールチップは無い

  • 下記コードを「TaskbarAPI.cs」みたいな感じで追加(コピペ元)

C#

1using System; 2using System.Runtime.InteropServices; 3 4namespace TeraTaskBarTooltip { 5 internal enum HResult { 6 Ok = 0x0000 7 8 // Add more constants here, if necessary 9 } 10 11 public enum TaskbarProgressBarStatus { 12 NoProgress = 0, 13 Indeterminate = 0x1, 14 Normal = 0x2, 15 Error = 0x4, 16 Paused = 0x8 17 } 18 19 internal enum ThumbButtonMask { 20 Bitmap = 0x1, 21 Icon = 0x2, 22 Tooltip = 0x4, 23 THB_FLAGS = 0x8 24 } 25 26 [Flags] 27 internal enum ThumbButtonOptions { 28 Enabled = 0x00000000, 29 Disabled = 0x00000001, 30 DismissOnClick = 0x00000002, 31 NoBackground = 0x00000004, 32 Hidden = 0x00000008, 33 NonInteractive = 0x00000010 34 } 35 36 [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] 37 internal struct ThumbButton { 38 /// 39 /// WPARAM value for a THUMBBUTTON being clicked. 40 /// 41 internal const int Clicked = 0x1800; 42 43 [MarshalAs(UnmanagedType.U4)] 44 internal ThumbButtonMask Mask; 45 internal uint Id; 46 internal uint Bitmap; 47 internal IntPtr Icon; 48 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)] 49 internal string Tip; 50 [MarshalAs(UnmanagedType.U4)] 51 internal ThumbButtonOptions Flags; 52 } 53 54 internal enum SetTabPropertiesOption { 55 None = 0x0, 56 UseAppThumbnailAlways = 0x1, 57 UseAppThumbnailWhenActive = 0x2, 58 UseAppPeekAlways = 0x4, 59 UseAppPeekWhenActive = 0x8 60 } 61 62 // using System.Runtime.InteropServices 63 [ComImportAttribute()] 64 [GuidAttribute("c43dc798-95d1-4bea-9030-bb99e2983a1a")] 65 [InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] 66 internal interface ITaskbarList4 { 67 // ITaskbarList 68 [PreserveSig] 69 void HrInit(); 70 [PreserveSig] 71 void AddTab(IntPtr hwnd); 72 [PreserveSig] 73 void DeleteTab(IntPtr hwnd); 74 [PreserveSig] 75 void ActivateTab(IntPtr hwnd); 76 [PreserveSig] 77 void SetActiveAlt(IntPtr hwnd); 78 79 // ITaskbarList2 80 [PreserveSig] 81 void MarkFullscreenWindow( 82 IntPtr hwnd, 83 [MarshalAs(UnmanagedType.Bool)] bool fFullscreen); 84 85 // ITaskbarList3 86 [PreserveSig] 87 void SetProgressValue(IntPtr hwnd, UInt64 ullCompleted, UInt64 ullTotal); 88 [PreserveSig] 89 void SetProgressState(IntPtr hwnd, TaskbarProgressBarStatus tbpFlags); 90 [PreserveSig] 91 void RegisterTab(IntPtr hwndTab, IntPtr hwndMDI); 92 [PreserveSig] 93 void UnregisterTab(IntPtr hwndTab); 94 [PreserveSig] 95 void SetTabOrder(IntPtr hwndTab, IntPtr hwndInsertBefore); 96 [PreserveSig] 97 void SetTabActive(IntPtr hwndTab, IntPtr hwndInsertBefore, uint dwReserved); 98 [PreserveSig] 99 HResult ThumbBarAddButtons( 100 IntPtr hwnd, 101 uint cButtons, 102 [MarshalAs(UnmanagedType.LPArray)] ThumbButton[] pButtons); 103 [PreserveSig] 104 HResult ThumbBarUpdateButtons( 105 IntPtr hwnd, 106 uint cButtons, 107 [MarshalAs(UnmanagedType.LPArray)] ThumbButton[] pButtons); 108 [PreserveSig] 109 void ThumbBarSetImageList(IntPtr hwnd, IntPtr himl); 110 [PreserveSig] 111 void SetOverlayIcon( 112 IntPtr hwnd, 113 IntPtr hIcon, 114 [MarshalAs(UnmanagedType.LPWStr)] string pszDescription); 115 [PreserveSig] 116 void SetThumbnailTooltip( 117 IntPtr hwnd, 118 [MarshalAs(UnmanagedType.LPWStr)] string pszTip); 119 [PreserveSig] 120 void SetThumbnailClip( 121 IntPtr hwnd, 122 IntPtr prcClip); 123 124 // ITaskbarList4 125 void SetTabProperties(IntPtr hwndTab, SetTabPropertiesOption stpFlags); 126 } 127 128 [GuidAttribute("56FDF344-FD6D-11d0-958A-006097C9A090")] 129 [ClassInterfaceAttribute(ClassInterfaceType.None)] 130 [ComImportAttribute()] 131 internal class CTaskbarList { } 132} 133
  • 使い方(下記はコンソールアプリケーション)

C#

1using System; 2using System.Diagnostics; 3 4namespace TeraTaskBarTooltip { 5 class Program { 6 private static ITaskbarList4 _taskbarList; 7 static void Main(string[] args) { 8 _taskbarList= (ITaskbarList4)new CTaskbarList(); 9 _taskbarList.HrInit(); 10 11 _taskbarList.SetThumbnailTooltip(Process.GetCurrentProcess().MainWindowHandle, "何でも\nOK"); 12 13 Console.WriteLine("aiueo"); 14 Console.Read(); 15 } 16 } 17}

投稿2021/06/23 15:08

編集2021/06/24 15:44
Hey_CH

総合スコア437

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

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

unikuma

2021/06/24 11:50

ネットで調べても見つからなく、困ってたので凄く助かりました。ありがとうございました。
guest

0

ちょっと理由はわからないのですが、一応できたので回答として書いておきます。
※ここに記載するのは「C# .NET5.0」のやり方ですが、他の環境でも似たような感じじゃないかと思います。

  • .csprojを編集

XML

1 <PropertyGroup> 23 <GenerateAssemblyTitleAttribute>false</GenerateAssemblyTitleAttribute> 4 </PropertyGroup>
  • AssemblyInfo.csを追加してAssemblyTitleAttributeを設定

※.csprojで設定できないの?って思ったけどやり方がわからなかった
※これはコピペじゃなく、プロジェクト>追加>新しい項目>アセンブリ情報ファイルで作った奴にAssemblyTitle部分をコピペする感じで。

C#

1using System.Reflection; 2using System.Runtime.InteropServices; 34[assembly: AssemblyTitle("何でもOK")]
  • アセンブリ名をデフォルトの物から変更(これが謎。プロジェクト名と同じじゃダメ?)

これはEXEファイル名を直接でも、Visual Studioでいじっても良いのですが、変更する必要がある
変更しない場合はデフォルトのEXE名が優先されてツールチップに表示される

  • この状態でタスクバーにピン留めするとAssemblyTitleの内容がツールチップに表示される

投稿2021/06/20 11:44

Hey_CH

総合スコア437

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

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

unikuma

2021/06/21 13:00

回答ありがとうございます。 アセンブリ情報ファイルのところが分からず出来ませんでした。 でも、いろいろ詳しく説明してくださりありがとうございます。 これからもっと頑張ります。
Hey_CH

2021/06/21 13:46

もらっといてあれなんですが、解決していないのであればベストアンサーにしないでください。(解除できるのであればしてください) 言語とか.NET Frameworkならそのバージョンとか書いてもらえれば、その環境でのやり方がわかるかもしれません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問