#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并且"在这里做了一些事情"......
为什么它无法正确阅读布尔并忽略......在这里做点什么......?
我知道我可能在这里犯了一个完全愚蠢的错误,但我无法帮助它,而是寻求帮助.