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


HSPTV!掲示板


未解決 解決 停止 削除要請

2020
0430
京浜東北・根岸線通知を表示(タスクトレイアイコンは非表示)11未解決


京浜東北・根岸線

リンク

2020/4/30(Thu) 19:28:20|NO.90245

通知を表示するにはどうすればいいですか。
また、
http://hsp.tv/play/pforum.php?mode=pastwch&num=47647
これとは違い、タスクトレイには表示せず、また、!やiのアイコンを変更するにはどうすればいいですか。



この記事に返信する


ゆうやん

リンク

2020/4/30(Thu) 20:14:19|NO.90246

トースト通知を使えばいけそうな感じがしますが、試していないのでわかりません。
https://codetter.com/?p=1041



京浜東北・根岸線

リンク

2020/4/30(Thu) 20:42:12|NO.90248

あ、それ、タスクトレイ非表示で通知表示できたものの,
アイコン(!とかi)の変更が出来ない(そもそも!とかiのアイコンすら表示できない)
ので、無理でした。



京浜東北・根岸線

リンク

2020/4/30(Thu) 20:44:52|NO.90249

あ、あと誤解を招きそうなので、先に言っておきます
「アイコン変更」とは、自作のicoファイルなどを通知に表示したいということです
[!]を[i]や[x]に変更したいということではありません



kanamaru

リンク

2020/4/30(Thu) 22:55:04|NO.90250

試しに調べてみたら、
https://kara.ifdef.jp/program/c/c03.html
というサイトが出てきました。
見た感じタスクトレイへの格納なしで表示できてると思います。
hspで書かれてるわけではないですが、移植は簡単そうです。
ページの一番下を見る限りアイコンも変更できそうだし。
https://stackoverrun.com/ja/q/3548772
を参考にしたら任意のicoファイルも使えそうです。



京浜東北・根岸線

リンク

2020/5/2(Sat) 13:58:55|NO.90267

あの,どうやって[移植]すれば良いのでしょうか.



kanamaru

リンク

2020/5/2(Sat) 14:41:43|NO.90268

参考サイトの中で

ZeroMemory(&nid, sizeof(NOTIFYICONDATA)); nid.cbSize = sizeof(NOTIFYICONDATA); nid.uFlags = NIF_INFO; nid.hWnd = hwnd; strcpy(nid.szInfoTitle, "Windowsがお亡くなりになりました"); strcpy(nid.szInfo, "kara:どうしようもありませんな\nY嵜:所詮winだからな"); nid.dwInfoFlags = 3; Shell_NotifyIcon(NIM_MODIFY, &nid);
というプログラムがあります。
この部分をhspに移植すればとりあえずバルーンを出すだけならできるはず。
と思うんですけど構造体使ってるから思ったより移植が大変みたいです。
誰か成功した人いませんか?



あらや

リンク

2020/5/2(Sat) 16:24:08|NO.90269

kanamaruさんのリンク先のソースは
京浜東北・根岸線さんが最初に貼ったリンクのソースとほぼ同じなので
タスクトレイにアイコン追加し、そのアイコンからバルーンチップを表示する
という流れになるので、
タスクトレイにアイコンを追加しないという主旨には合わないかと。

そのやり方でもタスクトレイに追加するアイコンは無しという事は出来ますが、
見えるアイコンが無いだけで
「タスクトレイ内には透明のアイコンがある」というような状態になります。
(アイコンが見えないだけで場所は確保されます)



純粋に通知だけにしたいのならば、
ゆうやんさんのリンク先のようにトースト通知を使用するしかありません。
リンク先のソースは肝心のアイコン描画が未完成のようですが。。。



沢渡

リンク

2020/5/2(Sat) 16:32:02|NO.90270

試しにやってみましたが、どうも理想的な状態にはなりませんでした。
dwStateにNIS_HIDDENを指定するとタスクトレイアイコンが表示されなくなると同時に
バルーンも表示されなくなりますし、
「タスクトレイアイコン表示後即座に消す」という方法だと
「アイコンは表示されずにバルーンだけが表示される」という状態には一応なるものの、
バルーンを手動で閉じないといけなかったり、Microsoft云々と表示されてしまったりで、
あまり良い状態にはなりませんでした。

//参考:http://chokuto.ifdef.jp/urawaza/struct/NOTIFYICONDATA.html //http://chokuto.ifdef.jp/urawaza/api/Shell_NotifyIcon.html #include "shell32.as" #include "user32.as" onexit *exit ExtractIcon hinstance,"test.ico",0 //ここではアイコンのファイル名をtest.icoとする h_icon=stat //アイコンのハンドル dim nid,126 nid(0)=504,hwnd,0,0x1A,0,h_icon // NIF_ICON | NIF_STATE | NIF_INFO = 0x1A nid(38)=0,0 //dwStateとdwStateMask。これを1,1にするとアイコンは隠れるが、バルーンも出てこなくなる。 nid(104)=20000 //uTimeout nid(121)=0x4 //dwInfoFlags。NIIF_USER=0x4 szInfo="本文" szInfoTitle="タイトル" memcpy nid,szInfo,limit(strlen(szInfo),0,255),160,0 memcpy nid,szInfoTitle,limit(strlen(szInfoTitle),0,63),420,0 Shell_NotifyIcon 0x0,varptr(nid) //Shell_NotifyIcon 0x2,varptr(nid) //←これを実行すれば「アイコン無しでバルーンだけ表示される」状態になるが、 //バルーンは手動で閉じないといけないし、バルーンの下に「Microsoft云々」と表示されてしまう。 stop *exit Shell_NotifyIcon 0x2,varptr(nid) DestroyIcon h_icon end



kanamaru

リンク

2020/5/2(Sat) 16:44:08|NO.90271

こちらで沢渡さんのプログラムを実行してみたところ
Microsoft云々というのは表示されませんでした。
また、uTimeoutを小さくして実行した後、ウィンドウがアクティブにすると
自動で閉じることが確認出来ました。
環境で違うのでしょうか?
自分でウィンドウをアクティブにしないといけないのは問題のようです。
gselではアクティブにはできないようです。



kanamaru

リンク

2020/5/2(Sat) 16:53:55|NO.90272

沢渡さんのプログラムのstopの前に

SetForegroundWindow hwnd
を追加すればウィンドウがアクティブになってくれるみたいです。
ウィンドウを手動でアクティブにしなくても
自動で閉じてくれるみたいです。



京浜東北・根岸線

リンク

2020/5/2(Sat) 18:43:41|NO.90273

>90271

私も沢渡さんのスクリプトを実行してみましたが,
下のあたりにMicrosoft云々が表示されていました。
(私の環境:Windows10)



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