如何在 Windows 窗体应用程序中使用此 WndProc?

2023-12-04

请指导我如何使用这个WndProc在 Windows 窗体应用程序中:

private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
{
    if (msg == NativeCalls.APIAttach && (uint)lParam == NativeCalls.SKYPECONTROLAPI_ATTACH_SUCCESS)
    {
        // Get the current handle to the Skype window
        NativeCalls.HWND_BROADCAST = wParam;
        handled = true;
        return new IntPtr(1);
    }

    // Skype sends our program messages using WM_COPYDATA. the data is in lParam
    if (msg == NativeCalls.WM_COPYDATA && wParam == NativeCalls.HWND_BROADCAST)
    {
        COPYDATASTRUCT data = (COPYDATASTRUCT)Marshal.PtrToStructure(lParam, typeof(COPYDATASTRUCT));
        StatusTextBox.AppendText(data.lpData + Environment.NewLine);

        // Check for connection
        if (data.lpData.IndexOf("CONNSTATUS ONLINE") > -1)
            ConnectButton.IsEnabled = false;

        // Check for calls
        IsCallInProgress(data.lpData);
        handled = true;
        return new IntPtr(1);
    }

    return IntPtr.Zero;
}

我见过有人在 WPF 中以这种方式使用上面的代码,比如

protected override void OnSourceInitialized(EventArgs e)
{
    base.OnSourceInitialized(e);

    // Attach WndProc
    HwndSource source = PresentationSource.FromVisual(this) as HwndSource;
    source.AddHook(WndProc);
}

您可以使用应用程序.AddMessageFilter Method.

[SecurityPermission(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.UnmanagedCode)]
public class TestMessageFilter : IMessageFilter
{
    public bool PreFilterMessage(ref Message m)
    {
        // Blocks all the messages relating to the left mouse button. 
        if (m.Msg >= 513 && m.Msg <= 515)
        {
            Console.WriteLine("Processing the messages : " + m.Msg);
            return true;
        }
        return false;
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Windows 窗体应用程序中使用此 WndProc? 的相关文章

  • 使用具有现有访问令牌的 Google API .NET 客户端

    用例如下 移动应用程序正在通过 Google 对用户进行身份验证 并且在某些时候 我们需要将用户的视频发布到他的 YouTube 帐户 出于实际原因 实际发布应该由后端完成 已经存储在那里的大文件 由于用户已经通过应用程序的身份验证 因此应
  • 以编程方式检查页面是否需要基于 web.config 设置进行身份验证

    我想知道是否有一种方法可以检查页面是否需要基于 web config 设置进行身份验证 基本上如果有这样的节点
  • 使用post方法将多个参数发送到asp.net core 3 mvc操作

    使用 http post 方法向 asp net mvc core 3 操作发送具有多个参数的 ajax 请求时存在问题 参数不绑定 在 dot net 框架 asp net web api 中存在类似的限制 但在 asp net mvc
  • C++:重写已弃用的虚拟方法时出现弃用警告

    我有一个纯虚拟类 它有一个纯虚拟方法 应该是const 但不幸的是不是 该接口位于库中 并且该类由单独项目中的其他几个类继承 我正在尝试使用这个方法const不会破坏兼容性 至少在一段时间内 但我找不到在非常量方法重载时产生警告的方法 以下
  • C++ 异步线程同时运行

    我是 C 11 中线程的新手 我有两个线程 我想让它们同时启动 我可以想到两种方法 如下 然而 似乎它们都没有按照我的预期工作 他们在启动另一个线程之前启动一个线程 任何提示将不胜感激 另一个问题是我正在研究线程队列 所以我会有两个消费者和
  • 访问者和模板化虚拟方法

    在一个典型的实现中Visitor模式 该类必须考虑基类的所有变体 后代 在许多情况下 访问者中的相同方法内容应用于不同的方法 在这种情况下 模板化的虚拟方法是理想的选择 但目前这是不允许的 那么 模板化方法可以用来解析父类的虚方法吗 鉴于
  • 如何从 C# 控制器重定向到外部 url

    我使用 C 控制器作为网络服务 在其中我想将用户重定向到外部网址 我该怎么做 Tried System Web HttpContext Current Response Redirect 但没有成功 使用控制器的重定向 http msdn
  • 如何识别 WPF 文本框中的 ValidationError 工具提示位置

    我添加了一个箭头来指示工具提示中的文本框 当文本框远离屏幕边缘时 这非常有效 但是当它靠近屏幕边缘时 工具提示位置发生变化 箭头显示在左侧 Here is the Image Correct as expected since TextBo
  • 如何从网站下载 .EXE 文件?

    我正在编写一个应用程序 需要从网站下载 exe 文件 我正在使用 Visual Studio Express 2008 我正在使用以下代码 private void button1 Click object sender EventArgs
  • C 语言中 =+(等于加)是什么意思?

    我碰到 与标准相反 今天在一些 C 代码中 我不太确定这里发生了什么 我在文档中也找不到它 In ancientC 版本 相当于 它的残余物与最早的恐龙骨头一起被发现 例如 B 引入了广义赋值运算符 使用x y to add y to x
  • 将数据打印到文件

    我已经超载了 lt lt 运算符 使其写入文件并写入控制台 我已经为同一个函数创建了 8 个线程 并且我想输出 hello hi 如果我在无限循环中运行这个线程例程 文件中的o p是 hello hi hello hi hello hi e
  • 无法将类型“System.IO.Stream”隐式转换为“Java.IO.InputStream”

    我提到了一些类似的问题 但没有一个涉及IO 当我使用时 我在java中使用了相同的代码Eclipse 那次就成功了 但现在我尝试在中使用这段代码Mono for Android C 它不起作用 我正在尝试运行此代码来创建一个InputStr
  • 将构建日期放入“关于”框中

    我有一个带有 关于 框的 C WinForms 应用程序 我使用以下方法将版本号放入 关于 框中 FileVersionInfo GetVersionInfo Assembly GetExecutingAssembly Location F
  • 在 C 中使用 GNU automake 中的解析器

    我是 GNU autotools 的新手 在我的项目中使用了 lex 和 yacc 解析器 将它们作为 makefile am 中的源代码会产生以下错误 配置 in AC CHECK PROGS YACC bison yacc none i
  • 如何一步步遍历目录树?

    我发现了很多关于遍历目录树的示例 但我需要一些不同的东西 我需要一个带有某种方法的类 每次调用都会从目录返回一个文件 并逐渐遍历目录树 请问我该怎么做 我正在使用函数 FindFirstFile FindNextFile 和 FindClo
  • g++ 对于看似不相关的变量“警告:迭代...调用未定义的行为”

    考虑以下代码strange cpp include
  • 有没有一种简单的方法可以让 Visual Studio 2015 使用特定的 ToolsVersion?

    使用特定版本构建项目或解决方案时msbuild我可以使用以下命令选择早期的 net 工具链 toolsversion or tv switch C Program Files x86 MSBuild 14 0 bin msbuild tv
  • 是否可以有一个 out ParameterExpression?

    我想定义一个 Lambda 表达式out范围 有可能做到吗 下面是我尝试过的 C Net 4 0 控制台应用程序的代码片段 正如您在 procedure25 中看到的 我可以使用 lambda 表达式来定义具有输出参数的委托 但是 当我想使
  • 什么是 __declspec 以及何时需要使用它?

    我见过这样的例子 declspec在我正在阅读的代码中 它是什么 我什么时候需要使用这个构造 这是 Microsoft 对 C 语言的特定扩展 它允许您使用存储类信息来赋予类型或函数属性 文档 declspec C https learn
  • 使用 CSharpCodeProvider 类编译 C# 7.3 的 C# 编译器版本是什么?

    我想使用 Microsoft CSharp CSharpCodeProvider 类来编译 C 7 3 代码 编译器版本在 IDictionary 中指定 在创建新的 CSharpCodeProvider 时将其作为输入 例如 Compil

随机推荐

  • 从 VBA 调用 Python 脚本

    我在 Excel 中从 vba 调用 python 脚本时遇到问题 我阅读了解决相同问题的其他线程 但是当我运行代码时 Python 屏幕闪烁 然后消失 仅供参考 我下载了适用于 Windows 10 的 python 3 6 5 并将其添
  • 使用 JavaScript 中的 Dart 类

    我有一个 Dart 类 foo dart class Foo void talk print Hello 将 foo dart 编译为 JavaScript 后 我 希望能够像这样使用 Foo var foo new Foo from fo
  • java.lang.NoClassDefFoundError:org/apache/commons/lang/Validate

    为什么会发生以下情况以及如何解决 Exception in thread main java lang NoClassDefFoundError org apache commons lang Validate at org jsoup D
  • Pygame 如何修复“尾随像素”?

    在图像中 红色轨迹是当我在精灵周围添加边界矩形时 pygame 创建的轨迹 精灵也可以做到这一点 最简单的解决方案是在每次重绘后将表面清除为黑色 然而 尝试在整个主表面上这样做并不是一个好主意 我怎样才能解决这个问题 通常你会这样做 def
  • Java 中 for 循环转换为 while 循环

    我需要将这个 for 循环转换为 while 循环 这样我就可以避免使用中断 double array new double 100 Scanner scan new Scanner System in for int index 0 in
  • 单击 Facebook 通知后应用程序启动时,请求 ID 不可用

    Facebook 应用程序是使用 iOS 本机应用程序设置的 并使用另一个应用程序的捆绑 ID 和应用商店 ID 启用 在当前情况下 以下是可能的 1 向朋友发送应用程序请求 2 请求徽章出现在好友的Facebook中 3 单击请求将启动我
  • ftplib.error_perm: 553 无法创建文件。 (Python 2.4.4)

    我正在写入我要通过 FTP 访问的用户的主目录 因此权限应该不是问题 FTP 在 FileZilla 中运行 我检查了 vsftp conf 并做了local enable YES change On a Debian4使用 Python
  • 在 Angular2 中设置选定的属性

    我有选择组 我想为具有特定 id 的对象设置选定属性 我试图在功能上改变这种情况 但没有帮助 即使我只是简单地设置 attr selected true 这也没有帮助 div class form group div
  • 检查给定区域中是否存在包含 4 个顶点的点

    指的是http www weather gov directives sym pd01008006curr pdf 第 8 页 我们在地理坐标系 纬度和经度系统 中给出了一个具有四个顶点的区域 我想检查该区域内是否存在具有特定纬度和经度的点
  • Application Insights 如何跟踪 User_Id?

    我正在运行具有应用程序洞察力的 Azure Web 应用程序 我知道微软无法显示真实IP Client IP 所以我将真实IP地址添加到所有请求 Ip 我有一个访客 client id h9zbt 在过去 24 小时内使用 48 个不同的
  • 更新后“主页”类别页面无法使用

    版本 1 4 1 4 的 prestashop 网站正在与category php类别页面的文件 不幸的是 1 6 0 6 的更新删除了该文件 因为它已被视为已弃用 CMS 更新后 URL 结构发生变化 后果之一是 URL 结构发生变化 f
  • Rails-4 中不区分大小写的活动记录查询

    目前我正在 Rails 4 中的一个项目中工作 其中我在 example com username 上有一个用户页面 但如果我在正确的情况下使用用户名 它只会找到记录 如何在活动记录 Rails 中执行不区分大小写的搜索 看看我下面的代码
  • 当使用 Python 处理一个巨大的 CSV 并突然停止时,“killed”是什么意思?

    我有一个 Python 脚本 它导入一个大型 CSV 文件 然后计算文件中每个单词的出现次数 然后将计数导出到另一个 CSV 文件 但正在发生的事情是 一旦计数部分完成并开始导出 它就会说Killed在终端中 我不认为这是一个内存问题 如果
  • 如何从 Google Earth Engine python api 迭代并下载图像集合中的每个图像

    我是 Google Earth Engine 的新手 试图了解如何使用 Google Earth Engine python api 我可以创建一个图像集 但显然getdownloadurl 方法仅适用于单个图像 所以我试图了解如何迭代并下
  • “是”报告子进程通信错误()

    我正在使用以下函数在 Python 中运行命令 def run proc cmd child subprocess Popen cmd shell True stdout subprocess PIPE stderr subprocess
  • 使用变量值调用数组元素

    我有一个字符串变量 其中包含数组的名称 我想做的是访问该数组的一个元素 并将其写入另一个变量 我怎样才能做到这一点 var sample new Array sample 0 one sample 1 two var arrayname s
  • OpenId 与桌面应用程序?

    我们正在使用来自提供商的 API 在他们的下一个版本中 他们将提供 OpenId 服务器 但大多数用户正在使用他们的桌面应用程序 我们正在构建的另一个网站将从该应用程序打开 并且我们应该与 openid 连接以访问存储在该提供程序中的资源
  • 画布 - 移动图像问题

    我的使用画布的脚本有问题 我想移动我的图像 但使用drawImage图像移动 但结果是这样的 所以 我的代码是 function desenhaBonecoDir var ctxt document getElementById camad
  • Wix 设置中的警告

    我是 Wix 工具包的新手 我正在使用 Wix Toolkit 为我的应用程序创建一项设置 但是当我尝试使用 Wix 构建它时 它显示此警告 C Users BNK Desktop wix popup setup wxs 60 警告 LGH
  • 如何在 Windows 窗体应用程序中使用此 WndProc?

    请指导我如何使用这个WndProc在 Windows 窗体应用程序中 private IntPtr WndProc IntPtr hwnd int msg IntPtr wParam IntPtr lParam ref bool handl