给SAP发送按键消息 c++

HWND hWnd = ::FindWindow(L"SAP_FRONTEND_SESSION", NULL);

CWnd* hEditEx= CWnd::FindWindowExW(hWnd,NULL, L"Afx:63DE0000:1008",NULL);
HWND hEdit=hEditEx->GetSafeHwnd();

::PostMessage(hEdit, WM_CHAR,0x31,0);//发送

            上面这种方法是错误的   如果是句柄就可以   SAP_FRONTEND_SESSION  Afx:63DE0000:1008  现在通过这两个CLASSNAME 发送按键消息  要怎么写

该回答引用ChatGPT-3.5,仅供参考,不保证完全正确

要发送按键消息给具有类名为"SAP_FRONTEND_SESSION"和"Afx:63DE0000:1008"的窗口,可以使用以下方法:

#include <Windows.h>

HWND FindWindowByClassName(const wchar_t* className)
{
    return ::FindWindow(className, NULL);
}

HWND FindChildWindowByClassName(HWND parentWnd, const wchar_t* className)
{
    return ::FindWindowExW(parentWnd, NULL, className, NULL);
}

void SendKeyMessage(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    ::PostMessage(hWnd, message, wParam, lParam);
}

int main()
{
    HWND sapWindow = FindWindowByClassName(L"SAP_FRONTEND_SESSION");
    if (sapWindow != NULL)
    {
        HWND editWindow = FindChildWindowByClassName(sapWindow, L"Afx:63DE0000:1008");
        if (editWindow != NULL)
        {
            SendKeyMessage(editWindow, WM_CHAR, 0x31, 0);
        }
    }

    return 0;
}

上述代码中的FindWindowByClassName函数用于查找具有指定类名的顶级窗口,FindChildWindowByClassName函数用于在父窗口下查找具有指定类名的子窗口。SendKeyMessage函数用于向窗口发送按键消息。


请注意,您需要将代码中的窗口类名和消息参数调整为适合您的实际情况的值。此外,确保您的代码在正确的上下文中执行,并且已经获得了适当的权限来操作目标窗口。