private string GetFileNameFromSelectedItem(IntPtr hListView, int selectedIndex) { if (selectedIndex >= 0) { var lvitem = new InteropUtil.LVITEM(); lvitem.mask = InteropUtil.LVIF_TEXT; IntPtr nativeBuffer = Marshal.AllocCoTaskMem(InteropUtil.NumberOfFileChars * 2); for (int i = 0; i < InteropUtil.NumberOfFileChars; ++i) { Marshal.WriteInt16(nativeBuffer, i * 2, '\0'); } string name; try { Marshal.WriteInt16(nativeBuffer, 0); lvitem.pszText = nativeBuffer; lvitem.cchTextMax = InteropUtil.NumberOfFileChars; uint length = InteropUtil.SendListViewMessageInt(hListView, InteropUtil.LVM_GETITEMTEXT, selectedIndex, ref lvitem); name = Marshal.PtrToStringUni(lvitem.pszText, (int)length); } finally { Marshal.FreeCoTaskMem(nativeBuffer); } if (name != null && m_currentFolder != null) { try { string path = System.IO.Path.Combine(m_currentFolder, name); return(path); if (Directory.Exists(path)) { //hFNCombo.SetWindowTextW(name); } } catch (Exception) { } } return(name); } return(string.Empty); }