Ik probeer uit een ListBox alle item texten te krijgen. Alleen krijg ik bij de applicatie waarbij ik dit nodig heb rare resultaten terug, terwijl ik uit een willekeurig andere applicatie met dezelfde code juist prima resultaten terug krijg. waar kan het verschil in zitten?
Ik ben al uuuuuuuren aan het proberen te achterhalen WAT het probleem is, zodat ik het kan oplossen.
De code die ik gebruik:
Het verwijderen van listbox items gaat prima, ook de lengte bevat altijd de correcte waarde. Ik krijg alleen hele rare tekens bij LB_GETTEXT?
Waar moet ik het probleem zoeken? b.v. andere encoding?
Als jullie meer informatie/verschillen willen hebben, bijvoorbeeld informatie uit Spy++, laat het dan even weten.
De code die ik gebruik:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| [DllImport("user32.dll", EntryPoint = "SendMessage", CharSet = CharSet.Unicode)] internal static extern int SendMessage(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam); [DllImport("user32.dll", EntryPoint = "SendMessage", CharSet = CharSet.Unicode)] internal static extern int SendMessage(IntPtr hwnd, int msg, int wParam, [MarshalAs(UnmanagedType.LPTStr)] StringBuilder lParam); internal const int LB_GETTEXTLEN = 0x0000018A, LB_GETTEXT = 0x00000189, LB_GETCOUNT = 0x0000018B; [...] int listBoxItemCount = SendMessage(listBoxHandle, LB_GETCOUNT, IntPtr.Zero, IntPtr.Zero); for (int i = 0; i < listBoxItemCount; i++) { int length = SendMessage(listBoxHandle, LB_GETTEXTLEN, IntPtr.Zero, IntPtr.Zero); StringBuilder text = new StringBuilder(); SendMessage(listBoxHandle, LB_GETTEXT, i, text); } |
Het verwijderen van listbox items gaat prima, ook de lengte bevat altijd de correcte waarde. Ik krijg alleen hele rare tekens bij LB_GETTEXT?
Waar moet ik het probleem zoeken? b.v. andere encoding?
Als jullie meer informatie/verschillen willen hebben, bijvoorbeeld informatie uit Spy++, laat het dan even weten.