|
vb.net treeview сторонней программы сделать item checked=true
|
|||
---|---|---|---|
#18+
Здравствуйте. имеется treeView c чекбоксами в стороннем приложении. необходимо найти определенный itrm и поставить на него галочку ( т.е. сделать checked=true) думаю что это возможно через sendmesage но найти информацию такого рода не могу(( может кто знает как такое реализовать? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2015, 12:45 |
|
vb.net treeview сторонней программы сделать item checked=true
|
|||
---|---|---|---|
#18+
surbanec, Код: vbnet 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. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45.
пока нашел только это. но при попытке изменить checked программа с treeview вылетает с ошибкой: Имя события проблемы: APPCRASH Имя приложения: Performance.exe Версия приложения: 1.1.76.16 Отметка времени приложения: 4a5bc9a4 Имя модуля с ошибкой: COMCTL32.dll Версия модуля с ошибкой: 6.10.7601.17514 Отметка времени модуля с ошибкой: 4ce7c45b Код исключения: c0000005 Смещение исключения: 000000000009651e Версия ОС: 6.1.7601.2.1.0.256.48 Код языка: 1049 Дополнительные сведения 1: d846 Дополнительные сведения 2: d846d650c9652838446cdc5df96797e8 Дополнительные сведения 3: f6a0 Дополнительные сведения 4: f6a0ff0351922a65a1e170d4368c6458 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2015, 13:09 |
|
vb.net treeview сторонней программы сделать item checked=true
|
|||
---|---|---|---|
#18+
surbanec, ха .. походу я туплю hitem - это хендл итема а не индекс? если так то как найти итем по индексу? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2015, 13:26 |
|
vb.net treeview сторонней программы сделать item checked=true
|
|||
---|---|---|---|
#18+
surbanec, все равно вылетает.. делаю выбор root нода и подставляю хендл к функции. приложение падает также. в чем дело не могу понять..(( ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2015, 14:14 |
|
vb.net treeview сторонней программы сделать item checked=true
|
|||
---|---|---|---|
#18+
Так нельзя делать. Объектное представление коммон контрола не зависит напрямую от его внутреннего состояния, управляемого через WinAPI (по крайней мере так было с ocx, идущими в составе VB6). Между внутренним состоянием айтема и свойством объекта есть прослойка в виде локальной переменной, значение которой не обновится при вмешательстве напрямую в TVITEM. Нужно имитировать клик пользователя на чекбоксе, тогда объектное представление корректно отработает изменение состояния. surbanecесли так то как найти итем по индексу?У TVITEM нет индекса. Код: vbnet 1.
Почему передается ноль, а не Len(tvi)? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2015, 14:22 |
|
vb.net treeview сторонней программы сделать item checked=true
|
|||
---|---|---|---|
#18+
AntonariyТак нельзя делать. Объектное представление коммон контрола не зависит напрямую от его внутреннего состояния, управляемого через WinAPI (по крайней мере так было с ocx, идущими в составе VB6). Между внутренним состоянием айтема и свойством объекта есть прослойка в виде локальной переменной, значение которой не обновится при вмешательстве напрямую в TVITEM. Нужно имитировать клик пользователя на чекбоксе, тогда объектное представление корректно отработает изменение состояния. surbanecесли так то как найти итем по индексу?У TVITEM нет индекса. Код: vbnet 1.
Почему передается ноль, а не Len(tvi)? короче не удачная затея... а как иметировать клик по определенному ноду ... я даже не представляю.. авторПочему передается ноль, а не Len(tvi)? не знаю даже. я содрал этот код. и в большинстве источников именно 0& ничего это не меняет. при потправки меседжа приложение глохнет.. я помню было такое. в диспетчере задач в листвью пытался удалить итем. получалось примерно тоже самое. вылет., однако такое удаление хорошо работало с листвью эксплорера. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2015, 14:42 |
|
vb.net treeview сторонней программы сделать item checked=true
|
|||
---|---|---|---|
#18+
AntonariyТак нельзя делать. Объектное представление коммон контрола не зависит напрямую от его внутреннего состояния, управляемого через WinAPI (по крайней мере так было с ocx, идущими в составе VB6). Между внутренним состоянием айтема и свойством объекта есть прослойка в виде локальной переменной, значение которой не обновится при вмешательстве напрямую в TVITEM. Нужно имитировать клик пользователя на чекбоксе, тогда объектное представление корректно отработает изменение состояния. surbanecесли так то как найти итем по индексу?У TVITEM нет индекса. Код: vbnet 1.
Почему передается ноль, а не Len(tvi)? короче не удачная затея... а как иметировать клик по определенному ноду ... я даже не представляю.. авторПочему передается ноль, а не Len(tvi)? не знаю даже. я содрал этот код. и в большинстве источников именно 0& ничего это не меняет. при потправки меседжа приложение глохнет.. я помню было такое. в диспетчере задач в листвью пытался удалить итем. получалось примерно тоже самое. вылет., однако такое удаление хорошо работало с листвью эксплорера. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2015, 14:43 |
|
vb.net treeview сторонней программы сделать item checked=true
|
|||
---|---|---|---|
#18+
surbanec Имя события проблемы: APPCRASH Не ну ты хоть Long-и то заменил бы для начала правильно на Integer/IntPtr В .Net Long означает совсем другое что в VB6 и вот такое тупое использование в половине случаев просто не приведет к результату, а во второй половине приведет как раз к крашу. Если конечно ты пытаешься сделать то что ты хочешь на VB.Net а не на VB6. А по поводу того что есть объектная прослойка и возможно так делать нельзя Antonariy возможно прав, хотя попытка не пытка. Во всяком случае с VB6-ListView некоторые вещи даже со своим ListView через API из-за этой прослойки делать нельзя (кажется добавление итемов), с Treeview так глубоко не копал. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2015, 18:16 |
|
vb.net treeview сторонней программы сделать item checked=true
|
|||
---|---|---|---|
#18+
surbanec, Остается только одно - делать через SendKey. Ставить фокус в нужный контрол, и слать стрелочки - как нажатия клавиатуры. Это очень плохо - скринсейвер будет мешать такой связке работать - но хоть как-то... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2015, 11:02 |
|
|
start [/forum/topic.php?fid=20&msg=38869512&tid=1401958]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 139ms |
0 / 0 |