每次lPram和wParam的含义和上下文是什么?我正在使用来自c#的PostMessage API

本文关键字:API PostMessage wParam lPram 上下文 每次 是什么 | 更新日期: 2023-09-27 18:03:39

我正在将消息转发给其他进程的一些实际进程控件(这另一个进程在钩子之后模拟了该实际进程的所有控件)。我需要将所有的点击从这些模拟控件转发到实际控件。

因此,我使用PostMessage API。

除了lParam和wParam之外,我对PostMessage的所有参数都有清除。我需要为这些包含wParam和lParams的PostMessage传递什么实际值呢?

现在我正在使用CheckedListBox和它的ItemChecked事件,我需要将这个项目checked传递给实际的CheckedListBox,这些包含在实际进程中的控件钩住并绘制在其他进程上。

<标题>代码:
    CheckedListBox ListBoxCh;
    ListBoxCh.ItemCheck+=new ItemCheckEventHandler(TAKOCheckedListBox_ItemCheck);
    public void TestCheckedListBox_ItemCheck(Object sender, ItemCheckEventArgs a_Args)
    {
        PostMessage(hWnd,(int)Win32.WindowMessages.WM_LBUTTONDOWN,(IntPtr)0,(IntPtr)0); ?? 
        PostMessage(hWnd, (int)Win32.WindowMessages.WM_LBUTTONUP, (IntPtr)0, (IntPtr)0); ??
    }

现在这里,对于每个控件(在本例中是CheckedListBox,以及所有其他控件)的每次单击,我们需要为wParam和lParam传递哪些值,以实现精确的单击和从一个进程传递准确的消息(即从模拟过程到实际过程的模拟控件)。

的问候乌斯曼

每次lPram和wParam的含义和上下文是什么?我正在使用来自c#的PostMessage API

名称wParamlParam的意思是"字参数"answers"长参数",是Win16的保留,当这些参数实际上是2和4字节的值时,尽管它们在Win32中都是4字节的整数值。所需的确切值特定于您要发送的消息。您必须查找Win32 API文档中的消息才能弄清楚,例如:

WM_LBUTTONDOWN和WM_LBUTTONUP

在这种情况下,你很幸运,因为两个参数都不是一个复杂的结构,所以你只需要构造一个合适的32位值,其中包含你的坐标和&和& lt; & lt;操作符。

其中一个参数是指向结构的指针并不罕见,在这种情况下,您将不得不使用Marshal类(特别是AllocHGlobal, StructureToPtr, and FreeHGlobal)将数据强制转换为可用的格式。

编辑:

请注意,大多数Windows常用控件,如ListBox,都有映射到. net公开的事件的特殊消息。不幸的是,在这个特定的情况下,CheckedListBox不是一个标准的Windows API控件;我还没有检查,但我猜它是一个所有者绘制的ListBox控件。您可能可以使用LB_SETITEMDATA事件选中/取消选中控件中的项,但除非lParam(1/0)的明显值实际上有效,否则您必须使用spy++或类似的东西进行一些挖掘才能弄清楚。