Evo bas probavam taj primer sto si mi poslao
Code:
public partial class Form1 : Form
{
IntPtr h;
int index = -1;
private const long LVIS_STATEIMAGEMASK = 0xF000;
private const long LVIS_UNCHECKED = 0x1000;
private const long LVIS_CHECKED = 0x2000;
private const long LVIF_STATE = 0x8;
private const long LVM_FIRST = 0x1000;
private const long LVM_SETITEMSTATE = (LVM_FIRST + 43);
private const long LVIS_SELECTED = 0x2000;
public Form1()
{
InitializeComponent();
this.listView1.HideSelection = true;
this.listView1.MultiSelect = true;
h = this.listView1.Handle;
}
public struct LVITEM
{
public long mask;
public long iItem;
public long iSubItem;
public long state;
public long stateMask;
public string pszText;
public long cchTextMax;
public long iImage;
public long lParam;
public long iIndent;
}
[DllImport("user32.dll")]
private static extern uint SendMessage(IntPtr Hdc, long Msg_Const, int wParam, IntPtr lParam);
private void button1_Click(object sender, EventArgs e)
{
LVITEM lvItem = new LVITEM();
lvItem.mask = LVIF_STATE;
lvItem.stateMask = LVIS_STATEIMAGEMASK;
lvItem.state = LVIS_SELECTED;
IntPtr pointer = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(LVITEM)));
Marshal.StructureToPtr(lvItem, pointer, true);
SendMessage(h, LVM_SETITEMSTATE, index, pointer);
Marshal.FreeHGlobal(pointer);
}
}
Javlja mi sledecu gresku u redu gde je SendMessage(...):
"Attempted to read or write protected memory. This is often an indication that other memory is corrupt."
Sad kontam da ovaj pointer nije dobar, ali ne znam kako nije dobar, deluje mi sve ok odradjeno.
Elem, poenta citave price je da kada se prikaze OpenFileDialog, neki itemi vec budu selektovani u oknu gde se nalazi lista dokumenata. E sad ako znas neki drugi nacin da se to realizuje, moze, ne mora to ovako da ide.