PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » PureBasic для Windows » SystemParametersInfo


SystemParametersInfo

Сообщений 1 страница 2 из 2

1

Посмотрел что в этой функции сотня запросов, решил поискать для себя интересное, в итоге:

Вот это давно хотел, изменить размер шрифта в проводнике, без смены пользователя, мгновенно

Код:
Define size.l, spinfo.ICONMETRICS
spinfo\cbSize = SizeOf(spinfo)
SystemParametersInfo_(#SPI_GETICONMETRICS, 0, @spinfo, 0)
size = PeekL(@spinfo\lfFont\lfHeight)
PokeL(@spinfo\lfFont\lfHeight, size+2)
SystemParametersInfo_(#SPI_SETICONMETRICS, 0, @spinfo, #SPIF_UPDATEINIFILE | #SPIF_SENDWININICHANGE)
SystemParametersInfo_(#SPI_SETICONS, 0, #Null ,0)

Wallpaper - получить/задать

Код:
Define spinfo.s = Space(#MAX_PATH)
SystemParametersInfo_(#SPI_GETDESKWALLPAPER, #MAX_PATH, @spinfo, 0)
Debug spinfo

Define spinfo.s = "C:\Windows\Web\Screen\img102.jpg"
Debug SystemParametersInfo_(#SPI_SETDESKWALLPAPER, 0, @spinfo, 0)

локаль (выводит 1049)

Код:
Define HKL.l
; #SPI_SETDEFAULTINPUTLANG
SystemParametersInfo_(#SPI_GETDEFAULTINPUTLANG, 0, @HKL, 0)
Debug HKL >> 16
Debug HKL & $FFFF

шрифт в проводнике "значки"

Код:
Define size, spinfo.ICONMETRICS
spinfo\cbSize = SizeOf(spinfo)
SystemParametersInfo_(#SPI_GETICONMETRICS, 0, @spinfo, 0)
size = - PeekL(@spinfo\lfFont\lfHeight) * 0.752812499999996 ; 0.75
Debug size

Define size, spinfo.LOGFONT
SystemParametersInfo_(#SPI_GETICONTITLELOGFONT, 0, @spinfo, 0)
size = - PeekL(@spinfo\lfHeight) * 0.752812499999996 ; 0.75
Debug size

И это я ещё до конца не дочитал километровую простыню.

Да, ещё забыл, выдрал кусок кратко, рабочая область экрана, если надо разместить окно чтобы не пересекалось с панелью задач, которая может быть вертикально и любых размеров.

Код:
Define rect.RECT, modification
SystemParametersInfo_(#SPI_GETWORKAREA,0,rect,0)
modification = rect\bottom - rect\top - GetSystemMetrics_(8) * 2 - GetSystemMetrics_(#SM_CYCAPTION)

Отредактировано AZJIO (20.02.2022 19:49:25)

0

2

это лучше

Код:
Protected ap.APPBARDATA
ap\cbSize=SizeOf(APPBARDATA)
SHAppBarMessage_(#ABM_GETTASKBARPOS, @ap)
описание

Посылает appbar сообщение системе.

WINSHELLAPI UINT APIENTRY SHAppBarMessage_(DWORD dwMessage, PAPPBARDATA pData);

Параметры
dwMessage
Идентификатор appbar обменивается сообщениями для отправки. Этот параметр может быть одним из следующих значений:

#ABM_ACTIVATE    Уведомляет систему, что appbar был активирован.
#ABM_GETAUTOHIDEBAR Получает дескриптор того, чтобы автоскрывать appbar связанный с конкретным краем экрана.
#ABM_GETSTATE    Получает автоскрывать и поверх остальных окон состояния панели задач Windows.
#ABM_GETTASKBARPOS Получает ограничительный прямоугольник панели задач Windows.
#ABM_NEW    Регистрирует новый appbar и определяет идентификатор сообщения,
    который система должна использовать для отправки уведомлений в appbar.
#ABM_QUERYPOS    Запрашивает размер и экранное положение для appbar.
#ABM_REMOVE    appbar, удаляя панель из внутреннего списка системы.
#ABM_SETAUTOHIDEBAR Регистры или нерегистры автоскрывать appbar для края экрана.
#ABM_SETPOS    Устанавливает размер и экранное положение appbar.
#ABM_WINDOWPOSCHANGED Уведомляет систему, когда положение appbar изменилось.

pData
Указатель на структуру APPBARDATA. Содержание структуры зависит от значения dwMessage.

Возвращаемые значения
Возвращает зависимое от сообщения значение. Для получения дополнительной информации см. документацию для отдельных сообщений appbar.

---- структура
typedef struct _AppBarData { // abd 
    DWORD  cbSize;           // sizeof(APPBARDATA) 
    HWND   hWnd;             // handle of appbar
    UINT   uCallbackMessage; // see below
    UINT   uEdge;            // see below
    RECT   rc;               // see below
    LPARAM lParam;           // see below
} APPBARDATA, *PAPPBARDATA;

uCallbackMessage
Определенный приложением идентификатор сообщения.
Приложение использует указанный идентификатор для уведомлений, которые это отправляет в appbar, идентифицированный hWnd участником.
Этот участник используется при отправке сообщения #ABM_NEW.

uEdge
Флаг, который определяет край экрана. Этот участник может быть одним из следующих значений:
это сторона где находится бар, возвращается индекс 0-3
#ABE_LEFT 0
#ABE_TOP 1
#ABE_RIGHT 2
#ABE_BOTTOM 3
Этот участник используется при отправке #ABM_GETAUTOHIDEBAR, #ABM_QUERYPOS, #ABM_SETAUTOHIDEBAR и сообщений #ABM_SETPOS.

rc
Структура RECT, которая содержит ограничительный прямоугольник, в координатах экрана, appbar или панели задач Windows.
Этот участник используется при отправке #ABM_GETTASKBARPOS, #ABM_QUERYPOS и сообщений #ABM_SETPOS.

lParam
Зависимое от сообщения значение. Этот участник используется с сообщением #ABM_SETAUTOHIDEBAR.

Комментарии

Эта структура используется с функцией SHAppBarMessage.

0

Похожие темы


Вы здесь » PureBasic - форум » PureBasic для Windows » SystemParametersInfo