个人简历网页设计模板呼和浩特网站seo优化方案

张小明 2026/1/13 15:18:15
个人简历网页设计模板,呼和浩特网站seo优化方案,抖音短剧推广怎么做,网站代搭建维护说到了 发送端是普通权限的窗体 给 接收端是 管理员权限的窗体#xff0c;通过 Win32 API的方式调用 SendMessage 发送窗口消息#xff0c;管理员权限的窗体的钩子消息回传接受不到发送端的数据。如下图所示#xff1a;image这是由于 Windows系统在Windows NT6.0 开始#…说到了 发送端是普通权限的窗体 给 接收端是 管理员权限的窗体通过 Win32 API的方式调用 SendMessage 发送窗口消息管理员权限的窗体的钩子消息回传接受不到发送端的数据。如下图所示image这是由于 Windows系统在Windows NT6.0 开始引入了受保护模式阻止进程将所选窗口消息和其他 USER API 发送到运行完整性较高的进程详情请看微软的详细说明受保护的模式 - Win32 apps | Microsoft LearnWindows 完整性机制设计 | Microsoft Learn二、函数说明针对于以上的问题微软也提供了相对应的接口来规避 ChangeWindowMessageFilterExChangeWindowMessageFilterEx 函数 (winuser.h)修改指定窗口 (UIPI) 消息筛选器的用户界面特权隔离。语法复制代码BOOL ChangeWindowMessageFilterEx([in] HWND hwnd,[in] UINT message,[in] DWORD action,[in, out, optional] PCHANGEFILTERSTRUCT pChangeFilterStruct);复制代码参数[in] hwnd类型HWND要修改其 UIPI 消息筛选器的窗口的句柄。[in] message类型 UINT消息筛选器允许通过 或 阻止的消息。[in] action类型DWORD要执行的操作可以采用以下值之一值 含义MSGFLT_ALLOW1允许消息通过筛选器。 这使 hWnd 能够接收消息无论消息的来源如何即使消息来自较低特权进程也是如此。MSGFLT_DISALLOW2阻止消息从较低特权进程传递到 hWnd 除非使用 ChangeWindowMessageFilter 函数或全局允许该消息在进程范围内传递。MSGFLT_RESET0将 hWnd 的窗口消息筛选器重置为默认值。 允许全局或进程范围内的任何消息都将通过但任何未包含在这两个类别中以及来自较低特权进程的消息都将被阻止。[in, out, optional] pChangeFilterStruct类型 PCHANGEFILTERSTRUCT指向 CHANGEFILTERSTRUCT 结构的可选指针。返回值类型 BOOL如果函数成功则返回 TRUE;否则它将返回 FALSE。 要获得更多的错误信息请调用 GetLastError。注解UIPI 是一项安全功能可防止从较低完整性级别的发件人接收消息。 可以使用此函数允许将特定消息传递到窗口即使消息源自较低完整性级别的进程也是如此。 与控制进程消息筛选器的 ChangeWindowMessageFilter 函数不同 ChangeWindowMessageFilterEx 函数控制窗口消息筛选器。应用程序可以使用 ChangeWindowMessageFilter 函数以进程范围的方式允许或阻止消息。 如果进程消息筛选器或窗口消息筛选器允许该消息则会将其传递到窗口。请注意不允许 SECURITY_MANDATORY_LOW_RID 或以下的进程更改消息筛选器。 如果这些进程调用此函数它将失败并生成扩展错误代码 ERROR_ACCESS_DENIED。无论筛选器设置如何值小于 WM_USER 的某些消息都需要通过筛选器传递。 尝试使用此函数允许或阻止此类消息时将不起作用。三、如何使用1、WPF 的接受端窗口增加 对 ChangeWindowMessageFilterEx 函数的定义和封装复制代码// 定义MessageFilterAction 结构体public enum MessageFilterAction : uint{MSGFLT_RESET 0, // 重置过滤器MSGFLT_ALLOW 1, // 允许消息MSGFLT_DISALLOW 2 // 禁止消息}// 定义 消息过滤器状态结构体[StructLayout(LayoutKind.Sequential)]public struct CHANGEFILTERSTRUCT{public uint cbSize;public uint ExtStatus;}// 导入 user32.dll 中的函数[DllImport(user32.dll, SetLastError true)]private static extern bool ChangeWindowMessageFilterEx(IntPtr hWnd,uint msg,MessageFilterAction action,ref CHANGEFILTERSTRUCT pChangeFilterStruct);/// summary/// 设置消息过滤/// /summary/// param namehWnd/param/// param namemessage/param/// param nameaction/param/// returns/returns/// exception crefSystem.ComponentModel.Win32Exception/exceptionpublic static bool SetMessageFilter(IntPtr hWnd, uint message, MessageFilterAction action){// 初始化结构体CHANGEFILTERSTRUCT changeFilter new CHANGEFILTERSTRUCT{cbSize (uint)Marshal.SizeOf(typeof(CHANGEFILTERSTRUCT)),ExtStatus 0};// 调用 APIbool result ChangeWindowMessageFilterEx(hWnd, message, action, ref changeFilter);if (!result){// 获取错误信息可选int error Marshal.GetLastWin32Error();throw new System.ComponentModel.Win32Exception(error);}return result;}复制代码2、在接收数据的 FramworkReceieve 窗口 的Loaded时间调用 SetMessageFilter最主要的是第三个参数需要设置MessageFilterAction.MSGFLT_ALLOW复制代码private void MainWindow_Loaded(object sender, RoutedEventArgs e){_customMessageId RegisterWindowMessage(MyApp);// 获取窗口句柄并添加消息钩子_hwndSource PresentationSource.FromVisual(this) as HwndSource;if (_hwndSource ! null){var handle _hwndSource.Handle;SetMessageFilter(handle, WM_COPYDATA, MessageFilterAction.MSGFLT_ALLOW);_hwndSource.AddHook(WndProc);}}复制代码3、完整代码如下消息发送端复制代码Window x:ClassFramworkSender.MainWindowxmlnshttp://schemas.microsoft.com/winfx/2006/xaml/presentationxmlns:xhttp://schemas.microsoft.com/winfx/2006/xamlxmlns:dhttp://schemas.microsoft.com/expression/blend/2008xmlns:mchttp://schemas.openxmlformats.org/markup-compatibility/2006xmlns:localclr-namespace:FramworkSendermc:IgnorabledTitleFramworkSender Height450 Width800GridButton Width100 Height100 Content发送 ClickButtonBase_OnClick/Button/Grid/Window复制代码复制代码namespace FramworkSender{/// summary/// MainWindow.xaml 的交互逻辑/// /summarypublic partial class MainWindow : Window{public MainWindow(){InitializeComponent();}private void ButtonBase_OnClick(object sender, RoutedEventArgs e){// 获取接收窗口的句柄IntPtr hwnd FindWindow(null, FramworkReceieve);if (hwnd IntPtr.Zero){MessageBox.Show(找不到窗口);}else{SendMessageString(hwnd, 123);}}#region CopyData[DllImport(user32.dll)]public static extern IntPtr SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, ref COPYDATASTRUCT lParam);[DllImport(user32.dll, SetLastError true, CharSet CharSet.Auto)]public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);public const int WM_COPYDATA 0x004A;// 定义 COPYDATASTRUCT 结构[StructLayout(LayoutKind.Sequential)]public struct COPYDATASTRUCT{public IntPtr dwData;public int cbData;public IntPtr lpData;}public static void SendMessageString(IntPtr hWnd, string message){if (string.IsNullOrEmpty(message)) return;byte[] messageBytes Encoding.Unicode.GetBytes(message \0);COPYDATASTRUCT cds new COPYDATASTRUCT();cds.dwData IntPtr.Zero;cds.cbData messageBytes.Length;cds.lpData Marshal.AllocHGlobal(cds.cbData);Marshal.Copy(messageBytes, 0, cds.lpData, cds.cbData);try{var result SendMessage(hWnd, WM_COPYDATA, IntPtr.Zero, ref cds);}finally{//释放分配的内存即使发生异常也不会泄漏资源Marshal.FreeHGlobal(cds.lpData);}}#endregion}}复制代码消息接收端复制代码Window x:ClassFramworkReceieve.MainWindowxmlnshttp://schemas.microsoft.com/winfx/2006/xaml/presentationxmlns:xhttp://schemas.microsoft.com/winfx/2006/xamlxmlns:dhttp://schemas.microsoft.com/expression/blend/2008xmlns:mchttp://schemas.openxmlformats.org/markup-compatibility/2006xmlns:localclr-namespace:FramworkReceievemc:IgnorabledTitleFramworkReceieve Height450 Width800GridStackPanel OrientationHorizontalTextBlock Text接收到的数据:/TextBlock Text x:NametxtMessage//StackPanelButton Height100 Width100 Content清空 ClickButtonBase_OnClick/Button/Grid/Window复制代码复制代码namespace FramworkReceieve{/// summary/// MainWindow.xaml 的交互逻辑/// /summarypublic partial class MainWindow : Window{public MainWindow(){InitializeComponent();Loaded MainWindow_Loaded;}private HwndSource _hwndSource;private void MainWindow_Loaded(object sender, RoutedEventArgs e){// 获取窗口句柄并添加消息钩子_hwndSource PresentationSource.FromVisual(this) as HwndSource;if (_hwndSource ! null){var handle _hwndSource.Handle;SetMessageFilter(handle, WM_COPYDATA, MessageFilterAction.MSGFLT_ALLOW);_hwndSource.AddHook(WndProc);}}private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled){#region CopyDataif (msg WM_COPYDATA){COPYDATASTRUCT cds (COPYDATASTRUCT)Marshal.PtrToStructure(lParam, typeof(COPYDATASTRUCT));string receivedMessage Marshal.PtrToStringUni(cds.lpData);this.Dispatcher.Invoke(() {txtMessage.Text receivedMessage;});handled true;}#endregionreturn IntPtr.Zero;}#region CopyDatapublic const int WM_COPYDATA 0x004A;// 定义 COPYDATASTRUCT 结构[StructLayout(LayoutKind.Sequential)]public struct COPYDATASTRUCT{public IntPtr dwData;public int cbData;public IntPtr lpData;}#endregion// 定义MessageFilterAction 结构体public enum MessageFilterAction : uint{MSGFLT_RESET 0, // 重置过滤器MSGFLT_ALLOW 1, // 允许消息MSGFLT_DISALLOW 2 // 禁止消息}// 定义 消息过滤器状态结构体[StructLayout(LayoutKind.Sequential)]public struct CHANGEFILTERSTRUCT{public uint cbSize;public uint ExtStatus;}// 导入 user32.dll 中的函数[DllImport(user32.dll, SetLastError true)]private static extern bool ChangeWindowMessageFilterEx(IntPtr hWnd,uint msg,MessageFilterAction action,ref CHANGEFILTERSTRUCT pChangeFilterStruct);/// summary/// 设置消息过滤/// /summary/// param namehWnd/param/// param namemessage/param/// param nameaction/param/// returns/returns/// exception crefSystem.ComponentModel.Win32Exception/exceptionpublic static bool SetMessageFilter(IntPtr hWnd, uint message, MessageFilterAction action){// 初始化结构体CHANGEFILTERSTRUCT changeFilter new CHANGEFILTERSTRUCT{cbSize (uint)Marshal.SizeOf(typeof(CHANGEFILTERSTRUCT)),ExtStatus 0};// 调用 APIbool result ChangeWindowMessageFilterEx(hWnd, message, action, ref changeFilter);if (!result){// 获取错误信息可选int error Marshal.GetLastWin32Error();throw new System.ComponentModel.Win32Exception(error);}return result;}protected override void OnClosed(EventArgs e){_hwndSource?.RemoveHook(WndProc);base.OnClosed(e);}private void ButtonBase_OnClick(object sender, RoutedEventArgs e){txtMessage.Text ;}}}复制代码4、运行结果接收端是管理员权限发送端是普通权限可以收发数据了image四、总结1、调用 ChangeWindowMessageFilterEx 需要设置第三个参数 action 的值为 枚举 MessageFilterAction.MSGFLT_ALLOW也就是数值 “1”。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

苏州专业高端网站建设公司起公司注册名

数字人视频生成终极指南:5分钟快速上手腾讯混元技术 【免费下载链接】HunyuanVideo-Avatar HunyuanVideo-Avatar:基于多模态扩散Transformer的音频驱动人像动画模型,支持生成高动态、情感可控的多角色对话视频。输入任意风格头像图片与音频&a…

张小明 2026/1/10 16:18:32 网站建设

wordpress 建网站视频总部在深圳的大企业

下面分三大部分说明: 数学推导与公式(欧拉角 ↔ 四元数)C 实现代码Python 实现代码 为便于说明,统一采用常用的航空/机器人学约定: 欧拉角顺序:Z-Y-X(yaw-pitch-roll)旋转顺序&#…

张小明 2026/1/12 18:49:43 网站建设

奔奔网站建设山东手机响应式网站建设设计

毕业论文(设计)开题报告 设计(论文)题目 年产5万吨醋酸的生产工艺初步设计 设计(论文)题目来源 生产实际 设计(论文)题目类型 工程设计 起止时间 一、设计(论文)的研究背景及意义: 醋酸是一种有机化合物,又称乙酸,别名醋酸、冰醋酸,常简写为HAc,是典型的脂肪酸…

张小明 2026/1/11 20:46:36 网站建设

百合网 网站 开发网站建设类有哪些职位

上传文件大小限制?扩展DDColor后端接收能力 在家庭老照片数字化日益普及的今天,越来越多用户尝试用AI修复泛黄褪色的黑白影像。然而,一个看似不起眼的技术细节——上传失败提示“请求体过大”——却常常让高分辨率扫描件止步于第一步。尤其是…

张小明 2026/1/11 18:03:38 网站建设

柳市那些做网站的公司个性化定制平台

当新手光环遇上AI外挂,知识迷宫突然有了自动导航好写作AI官方网址:https://www.haoxiezuo.cn/新手写论文:一场“知识荒野求生”每个学术新手的第一次论文经历,都像极了没看攻略就硬闯高难副本:打开导师给的文献包&…

张小明 2026/1/12 19:34:06 网站建设

手机 网站服务器做网站需要的法律知识

今日头条内容分发适配:lora-scripts生成地域化视觉素材 在信息过载的移动互联网时代,用户每天被成千上万条资讯包围。对今日头条这样的内容平台而言,决定一条新闻能否被看见的关键,早已不是“有没有”,而是“是否戳中我…

张小明 2026/1/12 18:49:22 网站建设