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

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

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

Win32 APIはMicrosoft Windowsの32bitプロセッサのOSで動作するAPIです。

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

Q&A

解決済

2回答

7183閲覧

タスクトレイのクリーンアップ自動化

himana-mario

総合スコア9

Win32 API

Win32 APIはMicrosoft Windowsの32bitプロセッサのOSで動作するAPIです。

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

0グッド

1クリップ

投稿2018/03/03 03:13

前提・実現したいこと

Windowsタスクスケジューラでタスクトレイ内のプログラムを
終了→起動しています。
プログラムを無理やりKillしているため、タスクトレイにたくさん
アイコンが残ってしまいます。マウスを動かせば消えるのですが、
どうしてもたくさん残ってしまいます。

Windows+Bして、タスクトレイにフォーカスを移動させて
キーボード右を何回か送れば解決しそうです。

しかしWshでSendkeyしてもWindows+Bのキーは送れないようです。

できればタスクで行いたいので、PowerShellなどで実現可能でしょうか?

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

Windows10Pro

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

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

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

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

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

guest

回答2

0

こんにちは。

ソースのみの提供ですが、こんなツールを見つけました。

こちらはタスクバーのアイコンをリストアップし、そのうち生きてるプロセスと紐づかないものを削除する仕組みとなっています。
Windows 10上のVisual Studio 2017でコンパイル可能で、動作を確認できました。

ただし、タスクからの実行については「ユーザーがログオンしているときのみ実行する」でないとタスクバーのアイコンを取得できないため実行できませんでした。
(ログオンユーザーのタスクバーを対象としているので当然といえば当然ですが...)

投稿2018/03/06 09:08

stknohg

総合スコア796

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

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

0

自己解決

ソースコードからPowerScriptなら以下の手順が必要と理解しました。

FindWindow で以下のウインドウを取得
Shell_TrayWnd/TrayNotifyWnd/SysPager/ToolbarWindow32
NotifyIconOverflowWindow/ToolbarWindow32
※スラッシュで階層下げる

あらかじめ共有メモリを用意しておく

アイコンカウントを取得
SendMessage(toolbarHandle, TB_BUTTONCOUNT, 0, 0);

アイコン情報を取得
SendMessage(toolbarHandle, TB_GETBUTTON, new IntPtr(index), remoteButtonPtr)

(このあたりが理解むずかしい)

あとは各アイコンハンドルに対して、WM_MOUSEMOVE でもしようかと。

private const uint TB_BUTTONCOUNT = 0x0418; // WM_USER+24
private const uint TB_GETBUTTON = 0x0417; // WM_USER+23
private const uint WM_MOUSEMOVE = 0x0200;

ちょっと厳しそうなので、コンパイル環境を作って、
ソース取得、コンパイルしたほうがよさそうとの結論になりました。

投稿2018/03/07 01:58

himana-mario

総合スコア9

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

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

stknohg

2018/03/07 02:59

PowerShellへの移植は...原理的には不可能ではないのですが非常に面倒なのでまったくお勧めできませんし、ソースをコンパイルする方がよほど楽なのでそれが賢明かと思います。
himana-mario

2018/03/08 08:19

はい、コンパイルで行うことにしました。 PowerShellは非現実的ですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問