mirror of
https://github.com/kangyu-california/PersistentWindows.git
synced 2025-05-11 21:15:38 +02:00
resolve handle conflict for core window
This commit is contained in:
parent
a541eb0a6c
commit
cf5e26af87
1 changed files with 15 additions and 8 deletions
|
@ -1229,10 +1229,10 @@ namespace PersistentWindows.Common
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void InheritKilledWindow(IntPtr hwnd, IntPtr kid)
|
private void InheritKilledWindow(IntPtr hwnd, IntPtr realHwnd, IntPtr kid)
|
||||||
{
|
{
|
||||||
uint pid;
|
uint pid;
|
||||||
User32.GetWindowThreadProcessId(hwnd, out pid);
|
User32.GetWindowThreadProcessId(realHwnd, out pid);
|
||||||
|
|
||||||
foreach (var display_key in deadApps.Keys)
|
foreach (var display_key in deadApps.Keys)
|
||||||
{
|
{
|
||||||
|
@ -1284,18 +1284,25 @@ namespace PersistentWindows.Common
|
||||||
if (string.IsNullOrEmpty(className))
|
if (string.IsNullOrEmpty(className))
|
||||||
return IntPtr.Zero;
|
return IntPtr.Zero;
|
||||||
|
|
||||||
if (!windowProcessName.ContainsKey(hwnd))
|
string procName;
|
||||||
return IntPtr.Zero;
|
string title;
|
||||||
|
|
||||||
string procName = windowProcessName[hwnd];
|
|
||||||
string title = GetWindowTitle(hwnd);
|
|
||||||
if (className.Equals("ApplicationFrameWindow"))
|
if (className.Equals("ApplicationFrameWindow"))
|
||||||
{
|
{
|
||||||
//retrieve info about windows core app hidden under top window
|
//retrieve info about windows core app hidden under top window
|
||||||
IntPtr realHwnd = GetCoreAppWindow(hwnd);
|
IntPtr realHwnd = GetCoreAppWindow(hwnd);
|
||||||
|
if (!windowProcessName.ContainsKey(realHwnd))
|
||||||
|
return IntPtr.Zero;
|
||||||
|
procName = windowProcessName[realHwnd];
|
||||||
className = GetWindowClassName(realHwnd);
|
className = GetWindowClassName(realHwnd);
|
||||||
title = GetWindowTitle(realHwnd);
|
title = GetWindowTitle(realHwnd);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!windowProcessName.ContainsKey(hwnd))
|
||||||
|
return IntPtr.Zero;
|
||||||
|
procName = windowProcessName[hwnd];
|
||||||
|
title = GetWindowTitle(hwnd);
|
||||||
|
}
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(className))
|
if (!string.IsNullOrEmpty(className))
|
||||||
{
|
{
|
||||||
|
@ -2942,7 +2949,7 @@ namespace PersistentWindows.Common
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
InheritKilledWindow(hwnd, kid);
|
InheritKilledWindow(hwnd, realHwnd, kid);
|
||||||
if (hwnd != kid)
|
if (hwnd != kid)
|
||||||
{
|
{
|
||||||
Log.Error($"Inherit position data from killed window 0x{kid.ToString("X")} for {curDisplayMetrics.Title}");
|
Log.Error($"Inherit position data from killed window 0x{kid.ToString("X")} for {curDisplayMetrics.Title}");
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue