@@ -1861,10 +1861,8 @@ namespace Ink_Canvas
|
|||||||
var hwnd = new WindowInteropHelper(this).Handle;
|
var hwnd = new WindowInteropHelper(this).Handle;
|
||||||
if (Settings.Advanced.IsAlwaysOnTop)
|
if (Settings.Advanced.IsAlwaysOnTop)
|
||||||
{
|
{
|
||||||
// 先设置WPF的Topmost属性
|
|
||||||
Topmost = true;
|
Topmost = true;
|
||||||
|
|
||||||
// 使用更强的Win32 API调用来确保置顶
|
|
||||||
// 1. 设置窗口样式为置顶
|
// 1. 设置窗口样式为置顶
|
||||||
int exStyle = GetWindowLong(hwnd, GWL_EXSTYLE);
|
int exStyle = GetWindowLong(hwnd, GWL_EXSTYLE);
|
||||||
SetWindowLong(hwnd, GWL_EXSTYLE, exStyle | WS_EX_TOPMOST);
|
SetWindowLong(hwnd, GWL_EXSTYLE, exStyle | WS_EX_TOPMOST);
|
||||||
@@ -1873,8 +1871,8 @@ namespace Ink_Canvas
|
|||||||
SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, 0, 0,
|
SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, 0, 0,
|
||||||
SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE | SWP_SHOWWINDOW | SWP_NOOWNERZORDER);
|
SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE | SWP_SHOWWINDOW | SWP_NOOWNERZORDER);
|
||||||
|
|
||||||
// 3. 如果启用了无焦点模式,需要特殊处理
|
// 3. 如果启用了无焦点模式且未启用UIA置顶,需要特殊处理
|
||||||
if (Settings.Advanced.IsNoFocusMode)
|
if (Settings.Advanced.IsNoFocusMode && !Settings.Advanced.EnableUIAccessTopMost)
|
||||||
{
|
{
|
||||||
// 启动置顶维护定时器
|
// 启动置顶维护定时器
|
||||||
StartTopmostMaintenance();
|
StartTopmostMaintenance();
|
||||||
@@ -1898,11 +1896,6 @@ namespace Ink_Canvas
|
|||||||
|
|
||||||
// 3. 停止置顶维护定时器
|
// 3. 停止置顶维护定时器
|
||||||
StopTopmostMaintenance();
|
StopTopmostMaintenance();
|
||||||
|
|
||||||
// 注意:这里不直接设置Topmost,让其他代码根据模式决定
|
|
||||||
|
|
||||||
// 添加调试日志
|
|
||||||
LogHelper.WriteLogToFile("应用窗口置顶: 取消置顶", LogHelper.LogType.Trace);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
@@ -1916,6 +1909,11 @@ namespace Ink_Canvas
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private void StartTopmostMaintenance()
|
private void StartTopmostMaintenance()
|
||||||
{
|
{
|
||||||
|
if (Settings.Advanced.EnableUIAccessTopMost)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (isTopmostMaintenanceEnabled) return;
|
if (isTopmostMaintenanceEnabled) return;
|
||||||
|
|
||||||
if (topmostMaintenanceTimer == null)
|
if (topmostMaintenanceTimer == null)
|
||||||
@@ -1950,6 +1948,12 @@ namespace Ink_Canvas
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
if (Settings.Advanced.EnableUIAccessTopMost)
|
||||||
|
{
|
||||||
|
StopTopmostMaintenance();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (!Settings.Advanced.IsAlwaysOnTop || !Settings.Advanced.IsNoFocusMode)
|
if (!Settings.Advanced.IsAlwaysOnTop || !Settings.Advanced.IsNoFocusMode)
|
||||||
{
|
{
|
||||||
StopTopmostMaintenance();
|
StopTopmostMaintenance();
|
||||||
|
|||||||
Reference in New Issue
Block a user