理论:通过C++编写的动态库DLL, 找到PB 的window窗口句柄ID,然后通过SENDMESSAGE给该句柄发送消息就可以了。
但是这里需要知道window的具体事件对应的ID值,才可以发送消息成功。也就是windows窗口对应的自定义事件名称关联的event ID 号,在PB 的window窗口可以选择的event ID 号 只有pbm_custom01 --pbm_custom75 才有对应的消息值。而pbm_custom01 对应C++ 中的WM_USER +1.
实际操作,
1. 在C++编译的动态库dll中使用sendMessage方法,给PB 窗口的自定义事件发送消息
LRESULT SendMessage(
HWND hWnd, // handle to destination window
UINT Msg, // message
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
);
//参考:
SendMessageAnsiPtr(proc.MainWindowHandle, 0x429, 11, ptr); //11 is the length of the string hardcoded for testing
如何得到pbm_custom01的Msg的值, 或者得到自定义事件的Msg值?
2. 创建PB window窗口,新增自定义事件并关联事件id pbm_custom01 --pbm_custom75 中的任意一个。
1). 先定义个自定义事件, id: pbm_custom01
2). 在自定义事件里写上: messagebox("