HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2021
0824
UT-X別フォルダにある同じ実行ファイルでタスクバーを結合2解決


UT-X

リンク

2021/8/24(Tue) 21:39:18|NO.93678

普通、同じexeファイルを複数起動すると、タスクバーでは結合して1つにまとめることができます。
しかし、中身は同じでも別のフォルダにあった場合、結合は行われません。
これを別のフォルダにあってもタスクバーアイコンを結合して1つにまとめる方法はあるのでしょうか。
ご教授よろしくお願いします。



この記事に返信する


とあるプログラマ

リンク

2021/8/25(Wed) 00:01:54|NO.93681

タスクバーでグループされるかどうかを決めるのは、そのアプリケーションに割り当てられたアプリケーションIDというものを使うようです。
そしてこのアプリケーションIDは、通常はWindows側で自動設定されますが、アプリケーション側が独自に決めることもできます。
https://docs.microsoft.com/ja-jp/archive/msdn-magazine/2009/july/windows-7-taskbar-apis


アプリケーションIDの指定には、SetCurrentProcessExplicitAppUserModelIDという関数を使います。
https://docs.microsoft.com/ja-jp/windows/win32/api/shobjidl_core/nf-shobjidl_core-setcurrentprocessexplicitappusermodelid


注意すべきなのは、SetCurrentProcessExplicitAppUserModelID をウィンドウが初期化される前に呼び出すことです。
なのでHSP3では #packopt hide 1 を指定してデフォルトで非表示状態に設定し、SetCurrentProcessExplicitAppUserModelID を呼び出したあとに screen でウィンドウを初期化します。

ただしこの #packopt hide 1 はデバッグモードでは機能しないので、効果を得るためにはCtrl+F9で作成した実行ファイルを起動します。


// デフォルトでウィンドウが作成されるのを防ぐために #packopt hide 1 する #packopt hide 1 #include "shell32.as" // アプリケーションID sdim AppID AppID = "HSPTestApp" // 文字列をUTF-16に変換 sdim AppID_uni, strlen(AppID) * 2 + 2 cnvstow AppID_uni, AppID // アプリケーションIDを登録 SetCurrentProcessExplicitAppUserModelID varptr(AppID_uni) if (stat != 0) : dialog "エラー" // SetCurrentProcessExplicitAppUserModelID よりも後で screen する screen 0, 640, 480



UT-X

リンク

2021/8/25(Wed) 13:00:25|NO.93682

回答ありがとうございます。専用のIDを登録するんですね。
これによって問題が解決しました。ありがとうございました。



記事削除

記事NO.パスワード
(質問が解決したスレッドは他の利用者に活用してもらうため、削除しないようお願いします)

NO.93678への返信

マスコット

好きなマスコットを選んでください。

名前

e-mail
HOME
  1. 初めて利用する方は、HSP3掲示板の使い方をお読みください。
  2. 不要部分の多い長いスクリプトの投稿は ご遠慮ください。
  3. 書き込みは自動改行されません。適度に改行を入れてください。
  4. スクリプトは小文字の<pre>〜</pre>で囲むと見やすく表示できます。

削除用パスワード

解決したら質問者本人がここをチェックしてください。

エラー発生時、再送信すると二重送信になることがあります。
回答が得られたら、お礼書き込み時に[解決]チェックしてください。
SPAM防止のためURLから始まる文章は投稿できません。
SPAM防止のため英文字のみの本文を投稿することはできません。

ONION software Copyright 1997-2021(c) All rights reserved.