我正在编写一个可以选择具有特定索引的其他应用ComboBox
的应用。
例如,我想从我的应用程序中选择第二个列出的项目“Adobe flash player”并挂钩。
ComboBox
应用不是我的,所以我无法修改目标应用。
通常,可以使用VB.Net中的Sendmessage
API来完成文本或单击按钮。
可以检索ComboBox
的句柄值(hWnd)。
我想知道要使用哪个函数(api)以及应该使用哪个值。
谢谢。
答案 0 :(得分:1)
您可以向组合框发送CB_SETCURSEL
消息。 SendMessage
的wParam
参数应该是您要设置为所选索引的项目的从零开始的索引,lParam
在这里没用。
应用程序发送
CB_SETCURSEL
消息以选择中的字符串 组合框列表。如有必要,列表会将字符串滚动到 视图。组合框的编辑控件中的文本更改为反映 新选择以及列表中的任何先前选择都将被删除。
wParam
:指定要选择的字符串从零开始的索引。如果这 参数为-1,列表中的任何当前选择都将被删除 编辑控件已清除。lParam
:未使用此参数。
C#示例
[System.Runtime.InteropServices.DllImport("user32.dll")]
static extern IntPtr SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
const int CB_SETCURSEL = 0x014E;
void SetSelectedIndex(IntPtr comboBoxHandle, int index)
{
SendMessage(comboBoxHandle, CB_SETCURSEL, index, 0);
}
VB.NET示例
<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