首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在Win x64中的32位和64位应用程序之间共享HWND?

在Windows x64中,32位和64位应用程序之间共享HWND的方法是通过使用Windows API中的SetWindowLongPtr函数。

首先,需要在32位应用程序中定义一个宏,以便在64位应用程序中使用SetWindowLongPtr函数。在32位应用程序中,可以使用以下宏定义:

代码语言:c++
复制
#ifndef SetWindowLongPtr
#define SetWindowLongPtr SetWindowLong
#endif

然后,在64位应用程序中,可以使用以下代码来设置32位应用程序的窗口句柄:

代码语言:c++
复制
HWND hWnd32 = ::FindWindow(NULL, TEXT("32位应用程序窗口标题"));
LONG_PTR hWnd64 = (LONG_PTR)::GetCurrentProcess();
SetWindowLongPtr(hWnd32, GWLP_USERDATA, hWnd64);

在32位应用程序中,可以使用以下代码来获取64位应用程序的窗口句柄:

代码语言:c++
复制
HWND hWnd64 = (HWND)GetWindowLongPtr(hWnd, GWLP_USERDATA);

这样,就可以在32位和64位应用程序之间共享HWND了。

推荐的腾讯云相关产品和产品介绍链接地址:

  • 腾讯云CVM:腾讯云CVM是一种虚拟化的计算服务,可以帮助用户快速创建、部署和管理虚拟机。
  • 腾讯云CLB:腾讯云CLB是一种负载均衡服务,可以帮助用户在多个服务器之间分配流量,以提高应用程序的性能和可靠性。
  • 腾讯云COS:腾讯云COS是一种对象存储服务,可以帮助用户存储和管理文件和数据。
  • 腾讯云CDB:腾讯云CDB是一种关系型数据库服务,可以帮助用户创建、管理和维护数据库。
  • 腾讯云CNS:腾讯云CNS是一种云硬盘存储服务,可以帮助用户创建、管理和维护虚拟硬盘。

这些产品都可以帮助用户更好地管理和部署应用程序,并提高应用程序的性能和可靠性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Electron调用DLL

fr=aladdin Edge.js 开源项目 edge 可以帮助我们实现 Node .NET 之间相互调用 我们最常见就是使用它来调用C#代码方法或者C#生成DLL文件方法 C/C++生成...安装 node-ffi通过Buffer类,在C代码JS代码之间实现了内存共享,类型转换则是通过ref、ref-array、ref-struct实现。...`p`,即`p`指向`a` node-ffi实现指针原理是借助ref,使用Buffer类在C代码JS代码之间实现了内存共享,让Buffer成为了C语言当中指针。...如果你不是WIN10用户,那么你只需要这一个工具即可,下面工具可以跳过。 Process Monitor 可以查看进程执行时候各种操作,IO、注册表访问等。...WINAPI winapi存在大量自定义变量类型,waitingsong大侠轮子 node-win32-api完整翻译了全套windef.h类型,而且这个项目采用TS来规定FFI返回Interface

11.5K41
  • detour使用教程_devour怎么使用道具

    32位找到“VS2013 x86 本机工具命令提示”(本人是VS2013),64位找到“VS2013 x64 本机工具命令提示”(注意:32或64是 指编译程序,而不是操作系统)。...2.在上面的命令工具找到对应下载文件路径,并在终端转到”Detours”文件夹下”src”文件。:D:\VS2013\VC\Detours\src。再一次输入”nmake”。...可以在“Detour”文件夹下出现“bin.X86”“include”“lib.X86”三个心文件夹。里面包含就是可以直接导入头文件库文件。...2.简化了项目管理 3.节省内存 4.促进资源共享 5.促进本地化 本地有一个DLL不需要重复下载 6.解决各版本差异 注意: DLL与应用程序共享一个进程空间 在DLL中分配内存必须由DLL来进行释放...应用程序不会因为DLL卸载而释放空间 DLL与EXE不同点: 1.生成程序属性不同。

    1.7K20

    图形编程丨图形绘制基础imgui篇—D3D9 HOOK 创建内部Imgui窗口

    这里我们需要用到两个工具Detours-master(微软hook库)imgui-master,主要讲D3D9HOOK。我们先来创建一个DLL项目。...nmake进行编译X64:找到Visual Studio2017,打开“适用于VS 2017 x64 本机工具命令提示”,然后cd到路径里nmake进行编译7.打开项目文件夹8.新建一个目录Detours...,将lib.x86、lib.x64include复制过来(将lib.去掉方便后续识别)9.新建筛选器,命名Detours10.在Detours添加现有项,选定两个头文件detours.hdetver.h11...里imgui_impl_dx9.cpp、imgui_impl_dx9.himgui_impl_win32.cpp、imgui_impl_win32.h;及主目录下所有.cpp.h都复制到imgui文件夹...12.2新建筛选器,命名imgui12.3在imgui添加现有项,选定目录下所有文件12.4.dllmain.h包含导进来所有头文件13.主线程imgui窗口实现typedef HRESULT

    5K51

    锁定屏幕相关知识「建议收藏」

    一方面,在 Win16 DLL 中程序入口点函数出口点函数( LibMain WEP )是分别实现;而在 Win32 DLL 却由同一函数 DLLMain 来实现。...另一方面,在 Win16 环境下,所有应用程序都在同一地址空间;而在 Win32 环境下,所有应用程序都有自己私有空间,每个进程空间都是相互独立,这减少了应用程序相互影响,但同时也增加了编程难度...大家知道,在 Win16 环境, DLL 全局数据对每个载入它进程来说都是相同;而在 Win32 环境,情况却发生了变化,当进程在载入 DLL 时,系统自动把 DLL 地址映射到该进程私有空间...因此,在 Win32 环境下要想在多个进程中共享数据,就必须进行必要设置。亦即把这些需要共享数据分离出来,放置在一个独立数据段里,并把该段属性设置为共享。...下面说说在 VC6 全局共享数据实现   在主文件,用 #pragma data_seg 建立一个新数据段并定义共享数据,其具体格式为: #pragma data_seg

    1.2K11

    WPF 同一窗口内多线程多进程 UI(使用 SetParent 嵌入另一个窗口)

    后者使用Win32 方式,实际效果非常类似 WindowsFormsHost,新线程 UI 在原来所有 WPF 控件上面遮挡。另外,后者不止可以是跨线程,还可以跨进程。...准备必要 Win32 函数 完成基本功能所需 Win32 函数是非常少,只有 SetParent MoveWindow。...呃……就是 Windows 自诞生以来那种传统。在传统 Win32 应用程序,每一个控件都有自己窗口句柄,它们之间通过 SetParent 进行连接;可以说一个 Button 就是一个窗口。...而我们现在使用 SetParent 其实就是在使用传统 Win32 程序控件机制。 MoveWindow 用于指定窗口相对于其父级位置,我们使用这个函数来决定新嵌入窗口在原来界面位置。...这是 WPF 窗口刚刚获得 Windows 窗口句柄时机,在此事件,我们可以最早地拿到窗口句柄以便进行 Win32 函数调用。

    4.1K10

    System.InvalidOperationException:“寄宿 HWND 必须是子窗口。”

    当试图在 WPF 窗口中嵌套显示 Win32 子窗口时候,你有可能出现错误:“System.InvalidOperationException:“寄宿 HWND 必须是子窗口。””。...这是很典型 Win32 错误,本文介绍如何修复此错误。 ---- 一个最简嵌入其他窗口例子 我们在 MainWindow 嵌入一个其他窗口来承载新 WPF 控件。...WPF 可以使用 HwndSource 来包装一个 WPF 控件到 Win32 窗口,使用自定义继承自 HwndHost 类可以把 Win32 窗口包装成 WPF 控件。...WPF嵌入式调用Win32应用程序问题—提示异常:寄宿HWND必须是指定父级子窗口 本文会经常更新,请阅读原文: https://blog.walterlv.com/post/hosted-hwnd-must-be-a-child-window.html...本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。

    31520

    msi简单使用

    每个安装包都包含一个.msi文件,该文件包含安装数据库、摘要信息流安装各个部分数据流。...msf 直接加载msfmsi上线 msfvenom -a x64 -p windows/x64/shell/reverse_tcp LHOST=192.168.11.1 LPORT=8888 -f...vs 下载扩展 搜索创建msi文件即可 利用文件系统自定义操作选项,可以设置将在目标主机上释放文件执行命令 点击项目输出 打包exe进msi 可以添加图标 创建快捷方式...在扩展可以对安装包属性进行设置,部分属性会在msi文件详细信息中体现,所以可以对属性进行一些伪造欺骗 如果选择True时,在管理员权限下msiexec会使用SYSTEM权限执行安装: 启动条件...:https://learn.microsoft.com/en-us/windows/win32/msi/orca-exe 常见判断条件可参考:https://community.flexera.com

    1.1K30

    修改Windows Mobile默认按键消息

    问题来源: 如何屏蔽talk键 (打电话那个键) 问题描述: 在《利用HardwareButton操作Windows Mobile硬件按钮》一文,讲述了在.NET CF,如何利用HardwareButton...但是在某些情况下,用户希望对应硬件按钮只为其应用程序服务,而不实施该硬件按钮默认功能(Talk按键)。...具体实施例: 参考SDK自带Sample,位于“Windows Mobile 6 SDK\Samples\Common\CPP\Win32\FullScreen”目录。...该例子演示了如何在Windows Mobile上隐藏taskbarsoftkey,进行全屏显示。其中,退出全屏功能,采用softkey按钮来实现。...而具体方式,就是向窗口发送SHCMBM_OVERRIDEKEY消息,在WM_HOTKEY,加入用户自己应用。

    1.2K60

    C# 进程间通讯

    进程间通讯方式有很多,常用共享内存(内存映射文件、共享内存DLL、剪切板等)、命名管道匿名管道、发送消息等几种方法来直接完成,另外还可以通过socket口、配置文件注册表等来间接实现进程间数据通讯任务...这样,可供选择通讯方式只剩下共享内存发送消息两种。...如果此参数为HWND_BROADCAST,则消息将被发送到系统中所有顶层窗口,包括无效或不可见非自身拥有的窗口、被覆盖窗口弹出式窗口,但消息不被发送到子窗口。 msg:指定被发送消息类型。...用api参考手册查看SendMessage用法时,参考手册则提示 SendMessage与PostMessage之间区别:SendMessagePostMessage,这两个函数虽然功能非常相似,都是负责向指定窗口发送消息...启动ProcessCommunication1.exe可执行文件,在弹出窗体文本框输入任意数字,点击button1按钮,接受消息窗体textBox1即显示该数字。 到此结束。 ?

    1.5K20

    WINDOWS核心编程--Windows程序内部运行机制

    一个消息一般都与某个窗口相关联,比如鼠标移动到某个窗口中按下鼠标左键,该窗口就会收到一个“WM_LBUTTONDOWND”消息,而应用程序就是利用消息hwnd值来 确定该消息到底是属于众多窗口中哪一个窗口...通过查看 MSDN 我们可以知道,在 Win32 环境下,这个参数总是 NULL ,即在 Win32 环境下,这个参数不再起作用。...要在 VC++ 开发环境应用程序传递参数,可以单击菜单 【 Project 】→【 Settings 】,选择“ Debug ” 选项卡,在“ Program arguments ”编辑框输入你想传递给应用程序参数...可以看出,匈牙利命名法非常便于记忆,而且使变量名非常清晰易懂,这样,增强了代码可读性,方便各程序员之间相互交流代码。...CALLBACK 使用在应用程序回叫例程,窗口对话框过程FAR PASCAL位置 LPCSTR 与LPSTR相同,只是LPCSTR用于只读串指针,其定义类似(const char FAR

    1.5K50

    MFC多线程

    本实例针对多线程技术在应用中经常遇到问题,线程间通信、同步等,分别进行探讨,并利用多线程技术进行线程之间通信,实现了数字简单排序。  ...根据实际需要,应用程序可以分解成许 多独立执行线程,每个线程并行运行在同一进程。   一个进程所有线程都在该进程虚拟地址空间中,使用该进程全局变量系统资源。...工作线程用户界面线程启动时要调用同一个函数不同版本;最 后需要读者明白是,一个进程所有线程共享它们父进程变量,但同时每个线程可以拥有自己变量。   ...(三)线程悬挂恢复   CWinThread类包含了应用程序悬挂恢复它所创建线程函数,其中SuspendThread()用来悬挂线程,暂停线程执行;ResumeThread()用来恢复线程执行...(一) 利用用户定义消息通信   在Windows程序设计应用程序每一个线程都拥有自己消息队列,甚至工作线程也不 例外,这样一来,就使得线程之间利用消息来传递信息就变非常简单。

    2.4K60

    WPF 通过 GetMessageExtraInfo 方法获取当前收到鼠标消息是否由触摸转换过来

    本文将告诉大家如何在 WPF 或者其他 Win32 应用里面,在收到鼠标消息时,通过 GetMessageExtraInfo 方法获取当前收到鼠标消息是否由触摸消息提升而来 大家都知道,在不开启 WM_Pointer...情况下,无论是走 WM_Touch 或者是 RealTimeStylus 等方式,默认下触摸都会提升为鼠标消息从而更好兼容应用程序逻辑 如果此时应用程序想要根据消息循环里面接收到 Win32 消息判断一个鼠标消息来源是否来自于触摸框触摸屏或者是...值,即可通过返回结果判断鼠标消息来源,返回结果是 0xFF515780 则判断是 Touch 触摸消息过来,通过返回结果是 0xFF515700 则判断是 Pen 笔过来 演示代码如下...,还是由真正鼠标创建 特别感谢 許煜坤-台灣微軟研究開發處 大佬提供了这个方法 本文以上可调试代码放在github gitee 欢迎访问 可以通过如下方式获取本文源代码,先创建一个空文件夹,...- Win32 apps - Microsoft Learn 更多触摸笔迹书写相关请看 WPF 触摸相关

    21810

    异步方法与HTTP请求:.NET中提高响应速度实用技巧

    引言在现代Web应用程序,网络爬虫需要高效地从目标网站获取数据。而随着Web应用程序复杂性增加,如何在爬虫快速响应和处理大量HTTP请求成为了一项挑战。...本文将介绍如何在.NET利用异步方法HTTP请求来提高响应速度,同时结合代理IP技术、user-agent、cookie等关键设置,实现高效数据抓取。...正文在.NET开发环境,HttpClient是处理HTTP请求核心工具。通过使用异步方法(asyncawait),我们可以避免阻塞主线程,从而在处理多个请求时提高性能。...代理IP技术集成为了避免IP被目标网站封禁,我们可以使用代理IP技术。爬虫代理提供了稳定代理服务,可以在请求添加代理IP,确保数据抓取持续性稳定性。...本文提供代码示例展示了如何在实际项目中应用这些技术,提升爬虫整体性能可靠性。

    12410

    windows消息机制详解

    首发于奇安信攻防社区:https://forum.butian.net/share/1609 前言 windows是一个消息驱动系统,windows消息提供了应用程序之间应用程序与windows...系统之间进行通信手段。...,一个线程可以有很多个窗口,一个线程中所有的窗口共享同一个消息队列 消息接收 首先在3环创建窗口窗口类对象,对应0环_WINDOW_OBJECT结构 消息队列结构 SentMessagesListHead...GetMessage( LPMSG lpMsg, //返回从队列摘下来消息 HWND hWnd, //过滤条件一:发个这个窗口消息 UNIT wMsgFilterMin, //过滤条件...链表里面搜索是否存在SendMessage,如果存在SendMessage,GetMessage就会在两个程序共享内存里面向发送消息程序发送一个结果,在这个过程,发送消息程序是一直处于等待状态

    57610
    领券