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

时间:2011-07-16 06:55:35

标签: 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()

此部分使用.def文件管理

EXPORTS
    SetValuesMouse
    MouseProc

SECTIONS
    .shared READ WRITE SHARED

我指示这个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;
来自共享部分的

在函数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并忽略......在这里做点什么......?

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

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:1)

One =登录C表示分配,当您错误地执行if-check时,您实际上是在改变悬停值并意外触发事件。

==是C中的等号运算符。