#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并忽略......在这里做点什么......?
我知道我可能在这里犯了一个完全愚蠢的错误,但是我无法帮助它,而是寻求帮助。
答案 0 :(得分:5)
您在=
条件中缺少if
,它应该是if (hover == 1)
。
答案 1 :(得分:1)
One =登录C表示分配,当您错误地执行if-check时,您实际上是在改变悬停值并意外触发事件。
==是C中的等号运算符。