コード署名なしでオーバーレイWindowsStoreアプリ(UWP)
免責事項:この投稿はmy own blog
導入
私は発見するには、単にオーバーレイメトロ/UWP/Windowsストアのアプリ(または何かは、これらの日と呼ばれる)トップウィンドウで常に使用することはできません.
それが可能である間、私は学びました、プログラムを働かせるために
それはもちろん、任意の趣味や小さなオープンソースプロジェクトのための良いニュースではなく、コード署名証明書のお金の費用です.
しかし、別の方法があります.
まず最初に、フルスクリーンストアのアプリを実行している間、どんな古い「常にトップ」ウィンドウにもフォーカスしようとするとどうなるか見ましょう.
それが起こるならば、それは「フルスクリーン」モードでWindows Storeアプリを引き起こします.
にもかかわらず、ストアのアプリは本当に排他的なフルスクリーンで実行することはありません!
しかし、いくつかのプログラムは完全にこれを行うことができます.Windows Taskbar自体またはDisplayFusions中間ロードウィンドウのように.
私はDisplayFusionの開発者に彼らがそれをしている方法を尋ねました、そして、彼らは私と秘密を共有しました:上記
For my endless quest 取得でSteam Input to work with stuff it normally doesn't , Windowsストアアプリのオーバーレイは本当の恩恵になるだろう.
しかし、無料のプロジェクトのために1年につき100ドルを費やすこと、私が適切に維持して、支持するためにあまりに少しの時間があるということは、あまりにも魅力的に見えません.
幸いにも、少しのハッキングで、文書化されていないWindows APIを使用して、私はそれがうまく動作するようになった.
私は全体のプロセスはかなり興味深いと思うので、私はあなたとそれを共有したい.
ウィンドウzオーダー
Windows 10(win 8からのアップ)におけるZ順序付けはいわゆる「窓バンド」で動作する
(いくつかの)バンドの順番は、最低から最高まで、以下の通りです. デスクトップ ZidCity没入型の背景 アピクローム シビッツェマジョウモゴ リトルビッグプラネット Zidchen InvesiveLes通知 シビッツェイマージュ ZidCityシステムツール ZidBlock lock ( win 10 ) <高橋潤子> シビケントイマーム ウィンドウズZidchen Zidchen Uiaccess
あなたがなぜ前に「窓バンド」のことを聞いたかについて疑問に思っているならば、それはあなたが通常彼らを使用するようにならないという理由です(明示的に).
すべてのAPIは文書化されていなくて、マイクロソフトによって公的に利用できません.
しかし、我々はそれに着きます.
通常の古いウィンドウは
常にウィンドウを設定する
これに対する期待は、例えば前述の
符号付き実行可能ファイルを持つ.で、ウィンドウは
もし
他のバンドは必ずしもその行動を起こすわけではない.
他のウィンドウバンドの使用
コード
開花
と同じ
と同じ
APIを呼び出す?
これらのすべての関数は
しかし、マイクロソフトは彼らの使用を防ぐいくつかのチェックを実装しました.
とにかく呼び出すこと.
CreateWindowInband
使う
setwindowinband
StartMenuが開き、新しいウィンドウが作成されると、その関数が呼び出されます.
今、あなたは2回、元の関数を呼び出すことができます.
一度、別のhwndとzbidとし、元のパラメータを使用します.
これの完全な例は見つかりますhere
結論
ウィンドウズストアアプリの導入により、マイクロソフトはウィンドウの順序付けをより詳細に制御するためにウィンドウバンドの概念も導入した.
多くのバンドが利用可能ですが、それらを明示的に使用することはできません.
ハッキングのビットで、しかし、それは完全に自由に任意のウィンドウバンドを活用することが可能です.
などGloSC/GlosSI ( SteamInputのツールを一緒に扱いました).
クレジット/ソース:adltax
導入
私は発見するには、単にオーバーレイメトロ/UWP/Windowsストアのアプリ(または何かは、これらの日と呼ばれる)トップウィンドウで常に使用することはできません.
それが可能である間、私は学びました、プログラムを働かせるために
uiAccess=True
-フラグがマニフェストに設定され、署名されなければならない.それはもちろん、任意の趣味や小さなオープンソースプロジェクトのための良いニュースではなく、コード署名証明書のお金の費用です.
しかし、別の方法があります.
まず最初に、フルスクリーンストアのアプリを実行している間、どんな古い「常にトップ」ウィンドウにもフォーカスしようとするとどうなるか見ましょう.
それが起こるならば、それは「フルスクリーン」モードでWindows Storeアプリを引き起こします.
にもかかわらず、ストアのアプリは本当に排他的なフルスクリーンで実行することはありません!
しかし、いくつかのプログラムは完全にこれを行うことができます.Windows Taskbar自体またはDisplayFusions中間ロードウィンドウのように.
私はDisplayFusionの開発者に彼らがそれをしている方法を尋ねました、そして、彼らは私と秘密を共有しました:上記
uiAccess=True
-署名付き実行可能ファイルと一緒にフラグを設定します.For my endless quest 取得でSteam Input to work with stuff it normally doesn't , Windowsストアアプリのオーバーレイは本当の恩恵になるだろう.
しかし、無料のプロジェクトのために1年につき100ドルを費やすこと、私が適切に維持して、支持するためにあまりに少しの時間があるということは、あまりにも魅力的に見えません.
幸いにも、少しのハッキングで、文書化されていないWindows APIを使用して、私はそれがうまく動作するようになった.
私は全体のプロセスはかなり興味深いと思うので、私はあなたとそれを共有したい.
ウィンドウzオーダー
Windows 10(win 8からのアップ)におけるZ順序付けはいわゆる「窓バンド」で動作する
(いくつかの)バンドの順番は、最低から最高まで、以下の通りです.
あなたがなぜ前に「窓バンド」のことを聞いたかについて疑問に思っているならば、それはあなたが通常彼らを使用するようにならないという理由です(明示的に).
すべてのAPIは文書化されていなくて、マイクロソフトによって公的に利用できません.
しかし、我々はそれに着きます.
通常の古いウィンドウは
ZBID_DESKTOP
そして、そこに残ります.常にウィンドウを設定する
SetWindowPos(...)
だけで内部の順序を変更しますZBID_DESKTOP
-バンド.これに対する期待は、例えば前述の
uiAccess=True
-フラッグ符号付き実行可能ファイルを持つ.で、ウィンドウは
ZBID_UIACCESS
-バンド.もし
ZBID_DESKTOP
-“フルスクリーン”-モードでは、店のアプリを実行している間、ウィンドウは“触れ”を取得、ストアアプリケーションが最小化されます.他のバンドは必ずしもその行動を起こすわけではない.
他のウィンドウバンドの使用
コード
開花
enum ZBID
{
ZBID_DEFAULT = 0,
ZBID_DESKTOP = 1,
ZBID_UIACCESS = 2,
ZBID_IMMERSIVE_IHM = 3,
ZBID_IMMERSIVE_NOTIFICATION = 4,
ZBID_IMMERSIVE_APPCHROME = 5,
ZBID_IMMERSIVE_MOGO = 6,
ZBID_IMMERSIVE_EDGY = 7,
ZBID_IMMERSIVE_INACTIVEMOBODY = 8,
ZBID_IMMERSIVE_INACTIVEDOCK = 9,
ZBID_IMMERSIVE_ACTIVEMOBODY = 10,
ZBID_IMMERSIVE_ACTIVEDOCK = 11,
ZBID_IMMERSIVE_BACKGROUND = 12,
ZBID_IMMERSIVE_SEARCH = 13,
ZBID_GENUINE_WINDOWS = 14,
ZBID_IMMERSIVE_RESTRICTED = 15,
ZBID_SYSTEM_TOOLS = 16,
// Win10
ZBID_LOCK = 17,
ZBID_ABOVELOCK_UX = 18,
};
CreateWindowInbandと同じ
CreateWindowEx
もう一つのパラメータを除いてdwBand
ウィンドウを指定する場所.HWND WINAPI CreateWindowInBand(
DWORD dwExStyle,
LPCWSTR lpClassName,
LPCWSTR lpWindowName,
DWORD dwStyle,
int x,
int y,
int nWidth,
int nHeight,
HWND hWndParent,
HMENU hMenu,
HINSTANCE hInstance,
LPVOID lpParam,
DWORD dwBand);
シートネーションバンドと同じ
SetWindowPos
もう一つのパラメータを除いてdwBand
BOOL WINAPI SetWindowBand(
HWND hWnd,
HWND hwndInsertAfter,
DWORD dwBand);
ジオバンドBOOL WINAPI GetWindowBand(
HWND hWnd,
PDWORD pdwBand);
APIを呼び出す?
これらのすべての関数は
user32.dll
, だからあなたはGetProcAdress
それらを得るために.しかし、マイクロソフトは彼らの使用を防ぐいくつかのチェックを実装しました.
GetWindowBand
常に動作します.CreateWindowInBand/Ex
あなたが通るならば、働くだけですZBID_DEFAULT
or ZBID_DESKTOP
ZBID_UIACCESS
は、uiAccess=True
-フラグセットとコード署名.SetWindowBand
は動作しません.とにかく呼び出すこと.
CreateWindowInband
使う
CreateWindowInBand
任意のZPIDを使用すると、aを注入する必要があります.没入型のプロセスへのDLLProcessExplorer ) そこから電話してください.setwindowinband
SetWindowBand
もう少し面白い.そのためには、aを注入しなければなりません.へのexplorer.exe
フックSetWindowBand
トランポリンで.StartMenuが開き、新しいウィンドウが作成されると、その関数が呼び出されます.
今、あなたは2回、元の関数を呼び出すことができます.
一度、別のhwndとzbidとし、元のパラメータを使用します.
これの完全な例は見つかりますhere
結論
ウィンドウズストアアプリの導入により、マイクロソフトはウィンドウの順序付けをより詳細に制御するためにウィンドウバンドの概念も導入した.
多くのバンドが利用可能ですが、それらを明示的に使用することはできません.
ハッキングのビットで、しかし、それは完全に自由に任意のウィンドウバンドを活用することが可能です.
などGloSC/GlosSI ( SteamInputのツールを一緒に扱いました).
クレジット/ソース:adltax
Reference
この問題について(コード署名なしでオーバーレイWindowsStoreアプリ(UWP)), 我々は、より多くの情報をここで見つけました https://dev.to/alia5/overlay-windowsstore-apps-uwp-without-code-signing-2h89テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol