Что нового

Правый клик мышки на Рабочий стол -> Вид -> Мелкие значки

SharkyEXE

Новичок
Сообщения
134
Репутация
0
Версия AutoIt: 3.3.14.2
Описание:

Всем здравствуйте.

1) Операционная система: Microsoft Windows 7 Professional Service Pack 1 x64
2) Контроль учетных записей: ВЫКЛючен

1) Пожалуйста, я очень прошу, напишите мне красивый код, как с помощью функции DllCall и/или функции _WinAPI сделать:
1-1) Правый клик мышки на Рабочий стол -> Вид -> Мелкие значки

Спасибо.

Примечания:

Отсутствуют
 
Автор
S

SharkyEXE

Новичок
Сообщения
134
Репутация
0
Поднимем

У меня у самого есть топорный вариант
Код:
$hWnd = WinGetHandle ( "[TITLE:Program Manager; CLASS:Progman]", "" )
$hControl = ControlGetHandle ( $hWnd, "", "[CLASS:SysListView32; INSTANCE:1]" )

WinActivate ( $hWnd, "" )

Sleep ( 1000 )

WinWaitActive ( $hWnd, "" )

Sleep ( 1000 )

WinSetOnTop ( $hWnd, "", 1 )

Sleep ( 1000 )

# Один раз нажать правую кнопку мышки в " Левом верхнем углу рабочего стола "
ControlFocus ( $hWnd, "", $hControl )
ControlClick ( $hWnd, "", $hControl, "right", 1, 0, 0 )

Sleep ( 2000 )

# Вниз до строки " Вид "
ControlFocus ( $hWnd, "", $hControl )
ControlSend ( $hWnd, "", $hControl, "{DOWN 1}" )

Sleep ( 2000 )

# Вправо
ControlFocus ( $hWnd, "", $hControl )
ControlSend ( $hWnd, "", $hControl, "{RIGHT}" )

Sleep ( 2000 )

# Вниз до строки " Мелкие значки "
ControlFocus ( $hWnd, "", $hControl )
ControlSend ( $hWnd, "", $hControl, "{DOWN 2}" )

Sleep ( 2000 )

# Один раз нажать левую кнопку мышки на строке " Мелкие значки "
ControlFocus ( $hWnd, "", $hControl )
ControlSend ( $hWnd, "", $hControl, "{ENTER}" )

Sleep ( 2000 )
Правда, вроде работает.

Однако, хоть я и не программист, хочется по красивше, в одну или две строки, при помощи WinAPI или DllCall
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
А если как то так:

Код:
$hWin = WinGetHandle('[ACTIVE]')
WinActivate('[TITLE:Program Manager; CLASS:Progman]')
ControlSend('[TITLE:Program Manager; CLASS:Progman]', '', 'SysListView321', '^+4') ;3 medium
WinActivate($hWin)


:scratch:
 
Автор
S

SharkyEXE

Новичок
Сообщения
134
Репутация
0
CreatoR

Здравствуйте.

Специально выставил Вид - Крупные значки

Пробовал как выполнить - Ф5, так и после компиляции запускать exe файл - результата нету.

На забугорном форуме https://www.autoitscript.com/forum/topic/182064-desktop-view-changer-with-icon-position-savingxp-icon-sizevista/ - если запустить этот код, выбрать Size - MedSmall , значки станут по размеру как мне надо на рабочем столе

Только выкорчевать бы ту функцию, которая заложена для изменения размера

Вполне возможно, это
Код:
Func _Desktop_DefView_SetIconSz($hWnd, $iSize) ;$hwnd of DefView, $iSize 0-4 smallest to largest

    ;EXLARGEICONS=0, MEDICONS=1, LARGEICONS=2,SMALLICONS=3, SMALLESTICONS=4
    ;Made this up from watching Window Messages (fires menu messages I think)
    ;(IFolderView2::SetViewModeAndIconSize. is probably how WE should be doing this)
    If @OSVersion = "WIN_XP" Then Return 0
    ;Works on Windows 7/8, Sends icon size to defView based on ListView view

    If $iSize < 0 Or $iSize > 4 Or @OSVersion = "WIN_XP" Then Return 0
    Local $aLvtoDv[5] = [4, 3, 1, 2, 0]
    ;Extra Large Icons = &H704D -28749<-----Index 0
    ;Medium Icons = &H704E      -28750; Large Icons = &H704F       -28751;
    ;Small Icons = &H7050       -28752; Smallest Icons = &H7051    -28753

    Local Const $WM_COMMAND = 0x111
    Local $iMsg = $WM_COMMAND
    Local $wParam = 28749 + $aLvtoDv[Int($iSize)] ;FVM_??
    Local Const $lParam = 0
    _SendMessage($hWnd, $iMsg, $wParam, $lParam)
    If @error Then
        MsgBox(0, "_Desktop_DefView_SetIconSz", "_SendMessage Error: " & @error)
        Exit
    EndIf

    Return 1
EndFunc   ;==>_Desktop_DefView_SetIconSz
Спасибо.
 
Верх