PowerShell Chromeブラウザのタイトル名を取得

PowerShell Get-Process Chrome Window Title監視

Windows PowerShellを使って、Google Chromeブラウザのタイトル名を取得する方法です。

下記は、1行で書くコード例です。

Get-Process -Name "chrome"|where {$_.MainWindowTitle -ne "" } |Format-Table -Property MainWindowTitle

Get-Processを使ってMainWindowTitleを取り出しています。

3分間whileループして、 Chromeブラウザのタイトル名に変化があれば表示する例です。

$endTime = (Get-Date).AddMinutes(3) #3分後に処理を終了する
$ima = Get-Date                     #今の時間
$titleStr = ""
while ($endTime -gt $ima){          #1分間だけループ
    $processList = Get-Process -Name "chrome" #chromeプロセスを取得
    if ($processList){
        foreach($p in $processList){
            if ($p.MainWindowTitle -ne "") {            #Windowタイトル名があるものだけ採用
                if ($titleStr -ne $p.MainWindowTitle){  #Windowタイトルに変化があった場合
                    Write-Host $p.MainWindowTitle       #タイトル名を表示する
                    $titleStr = $p.MainWindowTitle
                }            
            }    
        }   
    }
    Start-Sleep -Seconds 1
    $ima = Get-Date 
}

アクティブなウィンドウのタイトル名を取得

Win32APIGetForegroundWindow()を使えば アクティブウィンドウのハンドルが取得できます。

そのウィンドウハンドルを使って、Get-Processで取得したハンドルと比較しアクティブなウィンドウと判断するコード例です。

$code = @'
    [DllImport("user32.dll")]
     public static extern IntPtr GetForegroundWindow();
'@
Add-Type $code -Name user32 -Namespace Win32API         #user32.dllのGetForegroundWindow()を定義
$endTime = (Get-Date).AddMinutes(1)                     #1分後に処理を終了する
$ima = Get-Date                                         #今の時間
$titleStr = ""
while ($endTime -gt $ima){                              #1分間だけループ
    $hwnd = [Win32API.user32]::GetForegroundWindow()    #アクティブなウィンドウのウィンドウハンドルを取得
    $processList = Get-Process #-Name "chrome" 
    foreach($p in $processList){                        
        if ($hwnd -eq $p.MainWindowHandle){             #アクティブウィンドウと同じハンドルがあるかどうか
            if ($p.MainWindowTitle -ne "") {            #Windowタイトル名があるものだけ採用
                if ($titleStr -ne $p.MainWindowTitle){  #Windowタイトルに変化があった場合
                    Write-Host $p.MainWindowTitle       #タイトル名を表示する
                    $titleStr = $p.MainWindowTitle
                }            
            }    
        }
    }   
    Start-Sleep -Seconds 1
    $ima = Get-Date 
}

macOS .NET MAUI タイマーを使った時計表示

MAUIアプリ タイマーで時計表示

Visual Studio 17.3 Preview版 MAUIプロジェクトで Timerを使い XAMLのLabelに時計を表示する。

Visual Studio for 2022 Macは、下↓のURLからダウンロードできます。

https://visualstudio.microsoft.com/ja/vs/mac/

Preview版は、 現時点バージョン17.3で MAUIアプリの プロジェクトが作成できます。

新規プロジェクト作成 .NET MAUI アプリ
新規プロジェクト作成 .NET MAUI アプリ

メインの XAML画面で「タイマーを使った時計表示」

MAUIアプリプロジェクトを作成すると、デフォルトで下のアプリが実装されています。

初期実装されているアプリ

この画面の「Hello, World!」Label部分を時計表示に変えるコードです。

上記の画面は「MainPage.xaml」です。

下記は、「MainPage.xaml.cs」です。

コンストラクタにタイマーとイベントを追加しています。

public partial class MainPage : ContentPage
{
	int count = 0;

	public MainPage()
	{
		InitializeComponent();
        new Timer((state) =>
        {
            try
            {
                Dispatcher.Dispatch(() =>
                {
                    try
                    {
                        Label1.Text = DateTime.Now.ToString();
                        SemanticScreenReader.Announce(Label1.Text);//これいらん?
                    }
                    catch (Exception _e)
                    {
                        Console.WriteLine(_e.Message);
                    }
                });
            }
            catch (Exception _e1)
            {
                Console.WriteLine(_e1.Message);
            }
        }, null, new TimeSpan(0), new TimeSpan(0, 0, 1));
    }
}

TimerSystem.Threading.Timerです。

この、Timerイベントから 直接 Label1.Textの値を 変更すると ぶつかります。

イベント内の、Dispatcher.Dispatch()の 中で Label1.Textの値を変更しています。

2022 MJELD TECHNOLOGIES. ALL RIGHTS RESERVED