qq_20408589 2015-01-29 02:03 采纳率: 50%
浏览 698

给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 发送按键消息  要怎么写
  • 写回答

1条回答 默认 最新

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2023-05-27 00:02
    关注

    该回答引用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函数用于向窗口发送按键消息。


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

    评论

报告相同问题?

悬赏问题

  • ¥15 Python爬取指定微博话题下的内容,保存为txt
  • ¥15 vue2登录调用后端接口如何实现
  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?