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

Mar*_*o29 0 c++ winapi autoit

#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()
Run Code Online (Sandbox Code Playgroud)

此部分使用.def文件进行管理

EXPORTS
    SetValuesMouse
    MouseProc

SECTIONS
    .shared READ WRITE SHARED
Run Code Online (Sandbox Code Playgroud)

我正在指导这个dll(添加值)+尝试更改BOOL hover = true; 通过autoit dll调用更改此值

DllCall(".\ simplemousehook.dll","int","SetValuesMouse","hwnd",$ main,"hwnd",$ hhMouse [0],"BOOL",0)

这简直就是这样

HWND        m_hHwndMouse = 0;
HHOOK        m_hHookMouse = 0;
Run Code Online (Sandbox Code Playgroud)

从函数SetValuesMouse中更改的共享部分

void WINAPI SetValuesMouse(HWND hWnd, HHOOK hk, BOOL ho)
{
    m_hHwndMouse = hWnd;
    m_hHookMouse = hk;
    hover = ho;
}
Run Code Online (Sandbox Code Playgroud)

好吧,现在我的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));
Run Code Online (Sandbox Code Playgroud)

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

但...

如果我这样做

if (hover = 1)
{
.. do something here
}
Run Code Online (Sandbox Code Playgroud)

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

为什么它无法正确阅读布尔并忽略......在这里做点什么......?

我知道我可能在这里犯了一个完全愚蠢的错误,但我无法帮助它,而是寻求帮助.

Nav*_*een 5

你缺少一个=if状态,它应该是if (hover == 1).

  • 如果他使用mousehook等做了很多,我猜他知道C语言的基础知识,我只是指出一个简单的疏忽. (6认同)