.net sendmessage api选择组合框控件的特定索引

.net sendmessage api选择组合框控件的特定索引,.net,vb.net,winforms,winapi,combobox,.net,Vb.net,Winforms,Winapi,Combobox,我正在编写一个应用程序,可以选择另一个应用程序的组合框与某个索引。 例如,我想使用挂钩从我的应用程序中选择第二个列出的项目Adobe flash player ComboBox应用程序不是我的,因此我无法修改目标应用程序 通常,在VB.Net中使用Sendmessage API可以放置文本或单击按钮 可以检索该组合框的句柄值Hwnd。 我想知道应该使用哪个FunctionPI和哪个值 多谢各位 您可以将消息发送到组合框。的wParam参数应该是要设置为选定索引的项的从零开始的索引,而LPRAM在

我正在编写一个应用程序,可以选择另一个应用程序的组合框与某个索引。 例如,我想使用挂钩从我的应用程序中选择第二个列出的项目Adobe flash player

ComboBox应用程序不是我的,因此我无法修改目标应用程序

通常,在VB.Net中使用Sendmessage API可以放置文本或单击按钮

可以检索该组合框的句柄值Hwnd。 我想知道应该使用哪个FunctionPI和哪个值

多谢各位

您可以将消息发送到组合框。的wParam参数应该是要设置为选定索引的项的从零开始的索引,而LPRAM在这里是无用的

应用程序发送一条消息以选择 组合框的列表。如有必要,列表会将字符串滚动到 看法组合框的编辑控件中的文本将更改以反映 将删除列表中的新选择和任何以前的选择

wParam:指定要选择的字符串的从零开始的索引。如果这 参数为–1,则列表中的任何当前选择都将被删除,并且 编辑控件被清除。 lParam:未使用此参数。 C示例

[System.Runtime.InteropServices.DllImportuser32.dll] 静态外部IntPtr sendmagesintptr hWnd、int Msg、int wParam、int lParam; 常数int CB_SETCURSEL=0x014E; 无效集合SelectedIndexIntPtr ComboxHandle,int索引 { SendMessagecomboBoxHandle,CB_SETCURSEL,索引,0; } VB.NET示例


正是我需要的。谢谢此外,是否有任何方法可以获取ComboBox控件的计数?CB_GETCOUNT用于获取项目计数。如果您对此有任何疑问,请随时通知我,我将为您发布一个示例。您是否可以编写一个示例代码来检索Count,如果可能,还可以编写组合框的内容文本?非常感谢。你介意问个问题吗?它不适合评论:如果您想自己尝试,要获取所选项目的文本,可以使用CB_GETLBTEXT和CB_GETLBTEXTLEN消息。作为一个选项,您可以创建一个类来封装使用win32组合框的逻辑。
<System.Runtime.InteropServices.DllImport("user32.dll")> _
Shared Function SendMessage(ByVal hWnd As IntPtr, ByVal Msg As Integer, _
                            ByVal wParam As Integer, ByVal lParam As Integer) As IntPtr
End Function
Const CB_SETCURSEL As Integer = &H14E
Sub SetSelectedIndex(comboBoxHandle As IntPtr, index As Integer)
    SendMessage(comboBoxHandle, CB_SETCURSEL, index, 0)
End Sub