导航
  • 主页
  • VC综合技术
  • 互联网技术
  • MFC AppLauncher
  • .NET 技术
  • 界面
  • 进程
  • 算法
  • 硬件/系统
  • 数据库
  • VC++技术资源

如何由HWND转为HINSTANCE??

angelcool 2005-03-28 11:02:21
RT
...全文
1029 点赞 收藏 20
写回复
20 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
angelcool 2005-03-28
to tabris17(四不象)
没错。我也认为有点怪。
但是我在程序中如下修改:
HINSTANCE m_hInstance=AfxGetInstanceHandle();
glhHook = SetWindowsHookEx(WH_KEYBOARD, KeyboardProc, m_hInstance, 0 );

这个钩子函数也起作用。
所以我才想将此处的m_hInstance换成我想要的程序的hInstance。
回复
tabris17 2005-03-28
如果楼主说的是

HHOOK SetWindowsHookEx(
int idHook,
HOOKPROC lpfn,
HINSTANCE hMod,
DWORD dwThreadId
);

中的HINSTANCE hMod的话,那就你的理解错误了

此处的hMod指的是自身进程中HOOK DLL的hModule,可以用GetModuleHandle取得
回复
tabris17 2005-03-28
MFC的函数可以获得呀!一定有的,只是我们现在没发现。


=================


MFC获得的那是自己进程的HINSTANCE
回复
tabris17 2005-03-28
一般情况下

进程EXE的HINSTANCE的值是0x00400000
回复
angelcool 2005-03-28
不会吧!
MFC的函数可以获得呀!一定有的,只是我们现在没发现。
回复
tabris17 2005-03-28

先用GetWindowThreadProcessId函数来得到该窗口的所属进程ID


可以用GetModuleHandleEx函数得到HMODULE,其中lpModuleName参数传递为NULL就可以了
回复
windowssky 2005-03-28
据我了解是不可以的,你问问别人,不好意思!
回复
windowssky 2005-03-28
解得:不能实现
回复
angelcool 2005-03-28
已知:程序B的HWND,它的标题
求:程序B的HINSTANCE
前提:要求在程序A中实现。
回复
windowssky 2005-03-28
你是想通过地址获得句柄??
回复
angelcool 2005-03-28
对不起,没说清。

我是在程序A中要获得程序B的HINSTANCE。
回复
windowssky 2005-03-28
这个好象不能转换,地址和句柄好象没有对应关系!
回复
在mfc程序中可以用AfxGetInstance得到程序的instance
回复
angelcool 2005-03-28
我在创建钩子时需要指定程序的HINSTANCE,但是现在我只知道它的HWND,所以想知道如何能获取它的HINSTANCE.或者通过其他信息获得也可以。
有什么函数可以获得一个程序的HINSTANCE吗?
回复
tabris17 2005-03-28
结论是不能转化
回复
tabris17 2005-03-28
HINSTANCE的本质是模块基地址,他仅仅在同一进程中才有意义

跨进程的HINSTANCE是没有意义的

你把HINSTANCE的值打印出来看看就知道了

HINSTANCE和HWND是没有关系的


HWND是线程相关的,你可以通过HWND找到该窗口所属进程和线程

回复
windowssky 2005-03-28
在库中是这样定义的:
typedef void __RPC_FAR *HWND;
typedef void __RPC_FAR *HINSTANCE;
类型一样啊
回复
angelcool 2005-03-28
不行,获得的信息不对。它的值和HWND的一样。
回复
windowssky 2005-03-28
强行转换不行吗?
回复
angelcool 2005-03-28
这个钩子函数也起作用。
------------------
我知道了,因为是在本进程里实现的钩子函数的功能,所以将本进程的HINSTANCE赋给它时,它能够捕捉本进程的键盘消息。

我是将原来编写为DLL的钩子函数的实现部分加入到程序中。
那么怎样能实现获取其他程序的消息呢???
(因为我还需要这些消息做一些特殊的处理,所以需要将钩子的实现加入到本程序中)
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……