Initial commit: BiliDownloader Web 版:Python 零依赖后端 + shadcn/ui 前端
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
Add-Type @"
|
||||
using System;
|
||||
using System.Text;
|
||||
using System.Runtime.InteropServices;
|
||||
public class WinEnum {
|
||||
public delegate bool EnumProc(IntPtr hWnd, IntPtr lParam);
|
||||
[DllImport("user32.dll")] public static extern bool EnumWindows(EnumProc cb, IntPtr lParam);
|
||||
[DllImport("user32.dll")] public static extern int GetWindowTextLength(IntPtr hWnd);
|
||||
[DllImport("user32.dll", CharSet=CharSet.Unicode)] public static extern int GetWindowText(IntPtr hWnd, StringBuilder s, int n);
|
||||
[DllImport("user32.dll")] public static extern bool IsWindowVisible(IntPtr hWnd);
|
||||
[DllImport("user32.dll")] public static extern bool GetWindowRect(IntPtr hWnd, out RECT r);
|
||||
[StructLayout(LayoutKind.Sequential)] public struct RECT { public int L, T, R, B; }
|
||||
}
|
||||
"@
|
||||
|
||||
$found = New-Object System.Collections.ArrayList
|
||||
$cb = [WinEnum+EnumProc]{
|
||||
param($h, $l)
|
||||
$len = [WinEnum]::GetWindowTextLength($h)
|
||||
if ($len -gt 0 -and [WinEnum]::IsWindowVisible($h)) {
|
||||
$sb = New-Object System.Text.StringBuilder ($len + 2)
|
||||
[void][WinEnum]::GetWindowText($h, $sb, $sb.Capacity)
|
||||
$t = $sb.ToString()
|
||||
$r = New-Object WinEnum+RECT
|
||||
[void][WinEnum]::GetWindowRect($h, [ref]$r)
|
||||
[void]$found.Add([pscustomobject]@{
|
||||
Title = $t
|
||||
W = $r.R - $r.L
|
||||
H = $r.B - $r.T
|
||||
X = $r.L
|
||||
Y = $r.T
|
||||
})
|
||||
}
|
||||
return $true
|
||||
}
|
||||
[void][WinEnum]::EnumWindows($cb, [IntPtr]::Zero)
|
||||
|
||||
Write-Output "=== 可见顶层窗口中标题含 BiliDownloader 的 ==="
|
||||
$found | Where-Object { $_.Title -like "*BiliDownloader*" } |
|
||||
Select-Object Title, W, H, X, Y | Format-Table -AutoSize | Out-String
|
||||
|
||||
Write-Output "=== 前 12 个可见窗口(对照)==="
|
||||
$found | Sort-Object -Property W -Descending | Select-Object -First 12 Title, W, H |
|
||||
Format-Table -AutoSize | Out-String
|
||||
Reference in New Issue
Block a user