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 使用C#,asp.net读取Excel文件并保存到Oracle数据库
  • ¥15 C# datagridview 单元格显示进度及值
  • ¥15 thinkphp6配合social login单点登录问题
  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配