如何用sendmessage触发combobox的CBN_SELCHANGE事件
本人在网上反复查找,主要用下面方法,均未成功,望高人指点迷津
方法一:能触发事件,但无法改变选择(选择始终是第一项)
SendMessage(hComboBox, CB_SHOWDROPDOWN, 1, 0);
SendMessage(hComboBox, CB_SETCURSEL, 2, 0);
ShowWindow(hComboBox, SW_NORMAL);
SetForegroundWindow(hComboBox);
Thread.Sleep(100);
Support.SendMessage(hComboBox, WM_KEYDOWN, VK_RETURN, 0);
Thread.Sleep(100);
Support.SendMessage(hComboBox, WM_KEYUP, VK_RETURN, 0);
方法二:不知道其中一行代码 Tools.ToD(cbn_selchange, 16)
IntPtr mwh = (IntPtr)Convert.ToInt32(handle); //ComboBox的句柄
int result = SendMessage(hComboBox, CB_SETCURSEL, index, 0); //改变ComboBox的值
int mwh_p = GetWindowLong(hComboBox, -8); //获取ComboBox所属窗口的句柄
IntPtr mwh2 = (IntPtr)Convert.ToInt32(mwh_p); //转换ComboBox所属窗口的句柄
string cbn_selchange;
int cb_id = GetWindowLong(hComboBox, -12); //获取ComboBox的控件ID
cbn_selchange = "0001" + string.Format("{0:X4}", cb_id);
IntPtr s1 = (IntPtr)Convert.ToInt32(Tools.ToD(cbn_selchange, 16));
SendMessage(mwh2, WM_COMMAND, s1, hComboBox); //给ComboBox所属窗口发送WM_COMMAND命令