Win32 ListBox コントロールからテキストを取得するには、そのコントロール専用のメッセージと関数を使用する必要があります。参考文献は次のとおりです。
http://msdn.microsoft.com/en-us/library/windows/desktop/ff485971%28v=vs.85%29.aspx
あなたの場合、最初にリストボックスにあるアイテムの数を で確認しLB_GETCOUNT
、次にアイテムごとに でテキストを取得する必要がありますLB_GETTEXT
。
リスト内のアイテムを返すメソッドは次のとおりです。パラメーターは ListBox コントロール ウィンドウ ハンドルです。
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]
static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, StringBuilder lParam);
const int LB_GETCOUNT = 0x018B;
const int LB_GETTEXT = 0x0189;
private List<string> GetListBoxContents(IntPtr listBoxHwnd)
{
int cnt = (int)SendMessage(listBoxHwnd, LB_GETCOUNT, IntPtr.Zero, null);
List<string> listBoxContent = new List<string>();
for (int i = 0; i < cnt; i++)
{
StringBuilder sb = new StringBuilder(256);
IntPtr getText = SendMessage(listBoxHwnd, LB_GETTEXT, (IntPtr)i, sb);
listBoxContent.Add(sb.ToString());
}
return listBoxContent;
}