为什么我的mousehook内dll无法识别简单BOOL

Why is my mousehook inside dll unable to recognize simple BOOL?

本文关键字:识别 简单 BOOL dll 我的 mousehook 为什么      更新时间:2023-10-16
#pragma data_seg(".shared")  // ".shared" is defined in exports.def to allow  
HWND        m_hHwndMouse = 0;
HHOOK        m_hHookMouse = 0;
BOOL hover = true;
#pragma data_seg()

这个部分是用.def file

管理的
EXPORTS
    SetValuesMouse
    MouseProc
SECTIONS
    .shared READ WRITE SHARED

我正在指导这个dll(添加值)+试图改变BOOL悬停= true;通过自动调用DLL

来改变这个值

DllCall("。 simplemousehook.dll"、"int"、"SetValuesMouse","hwnd",主要美元,"hwnd hhMouse美元[0],"BOOL",0)

这只是使

HWND        m_hHwndMouse = 0;
HHOOK        m_hHookMouse = 0;
在SetValuesMouse函数中修改的共享部分

void WINAPI SetValuesMouse(HWND hWnd, HHOOK hk, BOOL ho)
{
    m_hHwndMouse = hWnd;
    m_hHookMouse = hk;
    hover = ho;
}

好的,现在我的鼠标钩子在DLL中知道在哪里发送消息(m_HWNDMOuse)

LRESULT CALLBACK MouseProc( int nCode, WPARAM wParam, LPARAM lParam )
{
    case WM_MOUSEMOVE:
    wParm = AU3_WM_MOUSEMOVE;
        PostMessage(m_hHwndMouse, wParm,(WPARAM)( (MOUSEHOOKSTRUCT*) lParam )->hwnd,     LPARAM(fromp));

这工作得很好,我的gui(这是hHwndMouse)通常从dll接收消息,所以显然我可以通过setvaluesmouse函数来改变它

但是…

如果我这样做

if (hover = 1)
{
.. do something here
}

在此之前,我通过SetValuesMouse函数将BOOL悬停值更改为0,dll忽略悬停值为0并且"在这里做一些事情"…

为什么不能正确读取bool并忽略…在这里做点什么?

我知道我可能犯了一个完全愚蠢的错误,但我忍不住要寻求帮助。

您在if条件中缺少一个=,应该是if (hover == 1)

One = sign在C语言中意味着赋值,当你错误地执行if-check时,你实际上是在改变hover的值并意外触发事件。

==是c中的相等操作符。