Я видел, как здесь задавали аналогичный вопрос о переполнении стека, но он старый, и код не работал. у меня это не работает. Ссылка на вопрос: Расположение значков на рабочем столе с помощью C#. Я пытаюсь добиться этого в Windows 10.
Там был комментарий, в котором говорилось, что значения LVM_* и LVA_* хранятся в commctrl.h, который входит в состав SDK. По какой-то причине мне не удалось найти этот файл.
Вот что я использую:
Код: Выделить всё
//sort desktop
public const int LVM_ARRANGE = 4118;
public const int LVM_ALIGNLEFT = 1;
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern IntPtr GetDesktopWindow();
[DllImport("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, uint Msg, int wParam, int lParam);
//end of sort desktop
private void organizeBtn_Click(object sender, EventArgs e) {
var DesktopHandle = GetDesktopWindow();
MessageBox.Show(GetDesktopWindow().ToString());
SendMessage(GetDesktopWindow(), LVM_ARRANGE, LVM_ALIGNLEFT, 0);
}
Подробнее здесь: https://stackoverflow.com/questions/483 ... icons-in-c