
Windows の大きな新機能の 1 つは、複数の「仮想」デスクトップがネイティブにサポートされるようになったことです。これにより、ウィンドウのコレクションをまとめて整理したり、タスクのグループを分けたりできるようになりました。
これはいい。
「タスク」ボタンをクリックし、アプリケーション ウィンドウを右クリックして「移動先...」を選択すると、デスクトップ間でウィンドウを移動できます。
これは少し不格好で、あまり良くありません。
私はモニターを 2 台持っていますが、メイン画面でブラウザーと他のアプリケーションを表示しながら、2 台目のモニターで Web ブラウザーまたはメディア プレーヤーを使用して映画を再生することがよくあります。現在の設定では、これを実行しても問題はありません。
仮想デスクトップの登場により、ブラウザを1つの仮想デスクトップに置き、別のアプリを別の仮想デスクトップに置いて、デスクトップを切り替えてもビデオを視聴できるようにしたいと考えていました。両方仮想デスクトップ。デフォルトの映画 & テレビ アプリを使用してビデオを再生し、別のデスクトップに移動すると、警告なしにビデオが停止してしまいます。
これは良くない。
私が期待していたのは、2 つのモニターにそれぞれ独自の仮想デスクトップがあるか、多くの Linux ベースのウィンドウ マネージャーで見られる「固定ウィンドウ」機能に似た「すべてのデスクトップにピン留めする」オプションがあることです。
これを実現する方法はありますか?
答え1
この機能は、現在いくつかの「仮想デスクトップの改善」の中にWindows 10 アニバーサリーアップデート(ビルド 14316):
ウィンドウをピン留めして、すべてのデスクトップで使用できるようになりました。これを行うには、タスク ビューを起動し、ピン留めするウィンドウを右クリックして、[このウィンドウをすべてのデスクトップに表示する] を選択します。Skype や Groove Music をピン留めして、いつでもすぐに使えるようにしてみましょう。また、マルチモニター セットアップを使用している場合は、どのデスクトップに切り替えても、2 番目のモニターにメール アプリを表示できる機能も便利です。
答え2
はい。[ほぼ:)] WS_EX_TOOLWINDOW 属性を持つすべてのウィンドウは、すべてのデスクトップに表示されます。
Autohotkey はこの点で非常に役立ちます。サンプル スクリプト - MyLoop.ahk:
WS_EX_TOOLWINDOW := 0x00000080 ループ { WinSet、ExStyle、+%WS_EX_TOOLWINDOW%、ahk_class Chrome_WidgetWin_1 睡眠、100 }
これを Windows の起動時に設定すると、Google Chrome ウィンドウがすべての仮想デスクトップに「固定」されます。
または、これをホットキーとして割り当てます: サンプル スクリプト - MyHotkeys.ahk:
WS_EX_TOOLWINDOW := 0x00000080 +MButton::WinSet、ExStyle、^%WS_EX_TOOLWINDOW%、A ^MButton::WinSet、AlwaysOnTop、トグル、A
これを Windows の起動時に設定すると、Shift キーを押しながら中ボタンをクリックすることで、任意のウィンドウの「スティッキー」状態を切り替えることができます。
追加キー - Ctrl キーを押しながら中ボタンをクリックすると、「最上位」の状態が切り替わります。非常に便利です。
PS: 最近のアプリケーション (例: Windows 10 の電卓) は、どういうわけかこれを無視します。理由はわかりません。ただし、Windows エクスプローラー ウィンドウとほとんどの「古いアプリケーション」では、問題なく動作します。
答え3
上記の @idj ソリューションに基づいて、C でこれを行う方法は次のとおりです。
exstyle = GetWindowLongPtr(hwndPtr, GWL_EXSTYLE);
exstyle |= WS_EX_TOOLWINDOW
SetWindowLongPtr(hwndPtr, GWL_EXSTYLE, exstyle);