C# WPF获取任务栏时间区域的Rectangle
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | [StructLayout(LayoutKind.Sequential)] public struct WindowRect { public int left; public int top; public int right; public int bottom; } [DllImport( "user32.dll" )] private static extern IntPtr FindWindow( string ClassName, string WindowName); [DllImport( "user32.dll" )] private static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string className, string windowName); [DllImport( "user32.dll" )] private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow); [DllImport( "user32.dll" )] static extern bool GetWindowRect(HandleRef hwnd, out WindowRect rect); const int SW_HIDE = 0; const int SW_SHOW = 5; [DllImport( "user32.dll" )] static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent); public MainWindow() { InitializeComponent(); this .Loaded += MainWindow_Loaded; } private void MainWindow_Loaded( object sender, RoutedEventArgs e) { IntPtr taskBarWnd = FindWindow( "Shell_TrayWnd" , null ); IntPtr tray = FindWindowEx(taskBarWnd, IntPtr.Zero, "TrayNotifyWnd" , null ); IntPtr trayclock = FindWindowEx(tray, IntPtr.Zero, "TrayClockWClass" , null ); WindowRect rect; GetWindowRect( new HandleRef(Application.Current.MainWindow, trayclock), out rect); //this.Top = rect.top; //this.Left = rect.left; //this.Width = rect.right - Left; //this.Height = rect.bottom - rect.top; //this.Topmost = true; } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统