Сначала 100 FindWindowA()
может найти окна, которые нужно отправить, и получить дескриптор окна («hwnd»). Используйте SendMessage()
отправку чего-либо в обработчик сообщений Trigger WindowProcedure()
, затем обработайте этот тип сообщения в WindowProcedure()
.
Вот пример кода:
LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
COPYDATASTRUCT* copyData;
CHAR str[BUFFER_SIZE] = { 0 };
switch (message)
{
case WM_CREATE:
//Do Creat Windows.
break;
case WM_COMMAND:
//Do Something.
break;
case WM_COPYDATA:
copyData = (COPYDATASTRUCT*)lParam;
memcpy(str, (void *)copyData->lpData, copyData->cbData);
MessageBoxA(hWnd, str, "title", MB_OKCANCEL);
break;
}
}
файл class.cpp:
#include <windows.h>
#pragma warning(disable:4996)
int main()
{
char szWindowClass[] = "EDIT";
char cp[] = "printthis";
HWND hWnd = FindWindowA(szWindowClass, "xxx"/*windows title*/);
COPYDATASTRUCT copyData = { 0 };
copyData.lpData = cp;
copyData.cbData = strlen(cp)+1;
LRESULT h = SendMessageA(hWnd, WM_COPYDATA, 0, (LPARAM)©Data);
BOOL reg = SetWindowTextA(hWnd, "test");
return 0;
}