Покопавшись на сайтах и в документации, узнал, что нужно найти handle рабочего стола и через него добраться до ярлыков
- Код: Выделить всё
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, _
ByVal lpWindowName As String) As Int32
Public Declare Function GetWindow Lib "user32" _
(ByVal hwnd As Int32, _
ByVal wCmd As Int32) As Int32
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Int32, _
ByVal wMsg As Int32, _
ByVal wParam As Int32, _
ByVal lParam As Int32) As Int32
Sub Main()
Dim hWnd As Int32
hWnd = FindWindow("Progman", vbNullString)
hWnd = GetWindow(hWnd, GW_CHILD)
hWnd = GetWindow(hWnd, GW_CHILD)
SendMessage(hWnd, LVM_ARRANGE, LVA_ALIGNLEFT, 0)
End Sub
Данный пример кода должен выстроить все иконки по порядку. FindWindow находит handle рабочего стола, но дальше дело не идет, т.к. вторая строчка возвращает 0. Второй вариант этого кода слегка переделан. Вместо типа Int32 почти везде стоит Long. Вместо 0 вторая строка возвращает астрономические цифры и результат все равно не достигается. Может ктонибудь подсказать где ошибка в коде, либо предложить свой вариант решения проблемы?