Spec-Zone.ru › Perl 5.38

Win32

СОДЕРЖАНИЕ

  • НАЗВАНИЕ
  • ОПИСАНИЕ
    • Алфавитный список функций Win32
  • ЗАМЕЧАНИЯ
    • Короткое имя пути

НАЗВАНИЕ

Win32 - Интерфейсы к некоторым функциям Win32 API

ОПИСАНИЕ

Модуль Win32 содержит функции для доступа к Win32 API.

Алфавитный список функций Win32

Рекомендуется use Win32; перед использованием любой из этих функций; однако, для обратной совместимости, функции, помеченные как [CORE], сделают это автоматически.

В описаниях функций термин строка Unicode используется для обозначения того, что строка может содержать символы, выходящие за рамки кодовой страницы системы. Оговорка Если поддерживается основной версией Perl, как правило, означает Perl 5.8.9 и более поздние версии, хотя некоторые функции обработки пути Unicode могут работать и на более ранних версиях.

Win32::AbortSystemShutdown(MACHINE)

Прерывает завершение работы системы (запущенное функцией InitiateSystemShutdown) на указанной MACHINE.

Win32::BuildNumber()

[CORE] Возвращает номер сборки ActivePerl. Эта функция доступна только в дистрибутиве ActivePerl.

Win32::CopyFile(FROM, TO, OVERWRITE)

[CORE] Функция Win32::CopyFile() копирует существующий файл в новый файл. Вся информация о файле, такая как время создания и атрибуты файла, будет скопирована в новый файл. Однако информация о безопасности не будет скопирована. Если целевой файл уже существует, он будет перезаписан только при значении параметра OVERWRITE равном true. Однако даже это не перезапишет файл со значением "только чтение"; для этого нужно сначала выполнить unlink() самостоятельно.

Win32::CreateDirectory(DIRECTORY)

Создаёт DIRECTORY и возвращает true при успехе. Проверьте $^E на ошибку для получения дополнительных сведений об ошибке.

DIRECTORY может содержать символы Юникода, выходящие за пределы кодовой страницы системы. После создания каталога можно использовать Win32::GetANSIPathName() для получения имени, которое можно передать системным вызовам и внешним программам.

Win32::CreateFile(FILE)

Создаёт FILE и возвращает true при успехе. Проверьте $^E на ошибку для получения дополнительных сведений об ошибке.

FILE может содержать символы Юникода, выходящие за пределы кодовой страницы системы. После создания файла можно использовать Win32::GetANSIPathName() для получения имени, которое можно передать системным вызовам и внешним программам.

Win32::DomainName()

[CORE] Возвращает имя домена или рабочей группы Microsoft Network, в который вошел владелец текущего процесса Perl. Для получения этой информации необходимо, чтобы служба «Рабочая станция» работала. Эта функция не работает в Windows 9x.

Win32::ExpandEnvironmentStrings(STRING)

Принимает STRING и заменяет все имена переменных среды на их определённые значения. Ссылки на переменные среды имеют вид %VariableName%. При поиске VariableName в среде регистр игнорируется. Если переменная не найдена, то исходный текст %VariableName% сохраняется. Имеет тот же эффект, что и следующее:

$string =~ s/%([^%]*)%/$ENV{$1} || "%$1%"/eg

Однако, эта функция может вернуть строку Юникода, если переменная среды, которая расширяется, не была назначена через %ENV. Доступ к %ENV в настоящее время всегда использует битовую семантику.

Win32::FormatMessage(ERRORCODE)

[CORE] Преобразует указанный номер ошибки Win32 (например, возвращённый Win32::GetLastError()) в описательную строку. Аналогично стандартной функции библиотеки C perror(). Обратите внимание, что $^E в контексте строки имеет примерно такой же эффект.

C:\> perl -e "$^E = 26; print $^E;"
The specified disk or diskette cannot be accessed
Win32::FsType()

[CORE] Возвращает имя файловой системы текущего активного диска (например, 'FAT' или 'NTFS'). В контексте списка возвращает три значения: (FSTYPE, FLAGS, MAXCOMPLEN). FSTYPE — тип файловой системы, как и прежде. FLAGS — комбинация значений из следующей таблицы:

0x00000001  supports case-sensitive filenames
0x00000002  preserves the case of filenames
0x00000004  supports Unicode in filenames
0x00000008  preserves and enforces ACLs
0x00000010  supports file-based compression
0x00000020  supports disk quotas
0x00000040  supports sparse files
0x00000080  supports reparse points
0x00000100  supports remote storage
0x00008000  is a compressed volume (e.g. DoubleSpace)
0x00010000  supports object identifiers
0x00020000  supports the Encrypted File System (EFS)

MAXCOMPLEN — максимальная длина компонента имени файла (части между двумя обратными слэшами) в этой файловой системе.

Win32::FreeLibrary(HANDLE)

Выгружает ранее загруженную динамическую библиотеку. После этого вызова HANDLE больше недействителен. См. LoadLibrary для получения информации о динамической загрузке библиотеки.

Win32::GetACP()

Возвращает идентификатор текущей кодовой страницы Windows ANSI для операционной системы. См. также GetOEMCP(), GetConsoleCP() и GetConsoleOutputCP().

Win32::GetANSIPathName(FILENAME)

Возвращает ANSI-версию FILENAME. Это может быть короткое имя, если длинное имя не может быть представлено в кодовой странице системы.

Хотя в настоящее время не реализовано, в будущем эта функция может преобразовывать только части пути FILENAME в короткий формат.

Если FILENAME не существует в файловой системе или если файловая система не поддерживает короткие имена ANSI, эта функция преобразует имя Юникода в кодовую страницу системы с использованием символов замены.

Win32::GetArchName()

Использование этой функции устарело. Она эквивалентна $ENV{PROCESSOR_ARCHITECTURE}. Возможно, она не будет работать в Win9X.

Win32::GetChipName()

Возвращает тип процессора: 386, 486 или 586 для процессоров x86, 8664 для процессора x64 и 2200 для процессора Itanium. Для процессоров arm/arm64 значение отмечено как «Зарезервировано» (не указано, но обычно 0) в документации Microsoft, поэтому лучше использовать GetChipArch(). Поскольку она возвращает родной тип процессора, она вернёт 64-разрядный тип процессора, даже если её вызывают из 32-разрядного Perl, работающего на 64-разрядной Windows.

Win32::GetChipArch()

Возвращает архитектуру процессора: 0 для процессоров x86, 5 для arm, 6 для Itanium, 9 для x64 и 12 для arm64, и 0xFFFF для неизвестной архитектуры.

Win32::GetConsoleCP()

Возвращает кодовую страницу ввода, используемую консолью, связанной с вызывающим процессом. Для установки кодовой страницы ввода консоли см. SetConsoleCP(). См. также GetConsoleOutputCP(), GetACP() и GetOEMCP().

Win32::GetConsoleOutputCP()

Возвращает кодовую страницу вывода, используемую консолью, связанной с вызывающим процессом. Для установки кодовой страницы вывода консоли см. SetConsoleOutputCP(). См. также GetConsoleCP(), GetACP() и GetOEMCP().

Win32::GetCwd()

[CORE] Возвращает текущий активный диск и каталог. Эта функция не возвращает путь UNC, так как необходимая для этой функции функциональность недоступна в Windows 95.

Если это поддерживается ядром Perl, эта функция вернёт ANSI путь к текущему каталогу, если полный путь к нему не может быть представлен в кодовой странице системы.

Win32::GetCurrentProcessId()

Возвращает идентификатор процесса текущего процесса. До завершения процесса идентификатор процесса однозначно идентифицирует процесс в системе.

Текущий идентификатор процесса также обычно доступен через предопределённую переменную $$ в большинстве случаев. Однако, при эмуляции fork() переменная $$ может содержать псевдо-идентификатор процесса, который имеет значение только для функций Perl kill(), wait() и waitpid(). Функция Win32::GetCurrentProcessId() всегда возвращает обычный идентификатор Windows процесса, даже если её вызывают изнутри псевдо-процесса.

Win32::GetCurrentThreadId()

Возвращает идентификатор потока вызывающего потока. До завершения потока идентификатор потока однозначно идентифицирует поток в системе.

Win32::GetFileVersion(FILENAME)

Возвращает номер версии файла из ресурса VERSIONINFO исполняемого файла или DLL. Это кортеж из четырёх 16-битных чисел. В контексте списка эти четыре числа будут возвращены. В скалярном контексте они объединяются в строку, разделённую точками.

Win32::GetFolderPath(FOLDER [, CREATE])

Возвращает полный путь к одному из специальных папок Windows. Папка будет создана, если она не существует, и параметр CREATE имеет значение true. Следующие константы FOLDER определены в модуле Win32, но экспортируются только по требованию:

CSIDL_ADMINTOOLS
CSIDL_APPDATA
CSIDL_CDBURN_AREA
CSIDL_COMMON_ADMINTOOLS
CSIDL_COMMON_APPDATA
CSIDL_COMMON_DESKTOPDIRECTORY
CSIDL_COMMON_DOCUMENTS
CSIDL_COMMON_FAVORITES
CSIDL_COMMON_MUSIC
CSIDL_COMMON_PICTURES
CSIDL_COMMON_PROGRAMS
CSIDL_COMMON_STARTMENU
CSIDL_COMMON_STARTUP
CSIDL_COMMON_TEMPLATES
CSIDL_COMMON_VIDEO
CSIDL_COOKIES
CSIDL_DESKTOP
CSIDL_DESKTOPDIRECTORY
CSIDL_FAVORITES
CSIDL_FONTS
CSIDL_HISTORY
CSIDL_INTERNET_CACHE
CSIDL_LOCAL_APPDATA
CSIDL_MYMUSIC
CSIDL_MYPICTURES
CSIDL_MYVIDEO
CSIDL_NETHOOD
CSIDL_PERSONAL
CSIDL_PRINTHOOD
CSIDL_PROFILE
CSIDL_PROGRAMS
CSIDL_PROGRAM_FILES
CSIDL_PROGRAM_FILES_COMMON
CSIDL_RECENT
CSIDL_RESOURCES
CSIDL_RESOURCES_LOCALIZED
CSIDL_SENDTO
CSIDL_STARTMENU
CSIDL_STARTUP
CSIDL_SYSTEM
CSIDL_TEMPLATES
CSIDL_WINDOWS

Обратите внимание, что не все папки определены во всех версиях Windows.

См. документацию MSDN по константам CSIDL по адресу:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/enums/csidl.asp

Эта функция возвращает ANSI путь к папке, если длинное имя не может быть представлено в кодовой странице системы. Используйте Win32::GetLongPathName() на результате Win32::GetFolderPath(), если вы хотите получить имя папки в формате Юникода.

Win32::GetFullPathName(FILENAME)

[CORE] GetFullPathName комбинирует FILENAME с текущим диском и каталогом и возвращает полностью квалифицированный (т. е. абсолютный) путь. В контексте списка возвращает два элемента: (PATH, FILE), где PATH — полная часть пути (включая конечный обратный слэш), а FILE — только часть имени файла. Обратите внимание, что не предпринимается попытка преобразовать компоненты 8.3 в FILENAME в longnames или наоборот. Сравните с Win32::GetShortPathName() и Win32::GetLongPathName().

Если это поддерживается ядром Perl, эта функция вернёт ANSI путь, если полный путь к нему не может быть представлен в кодовой странице системы.

Win32::GetLastError()

[CORE] Возвращает последнее значение ошибки, сгенерированное вызовом функции Win32 API. Обратите внимание, что $^E в числовом контексте эквивалентно этому значению.

Win32::GetLongPathName(PATHNAME)

[CORE] Возвращает представление PATHNAME, состоящее из компонентов longname (если таковые имеются). Результат не обязательно должен быть длиннее, чем PATHNAME. Не предпринимается попытка преобразовать PATHNAME в абсолютный путь. Сравните с Win32::GetShortPathName() и Win32::GetFullPathName().

Эта функция может вернуть путь в формате Юникода, если он не может быть представлен в кодовой странице системы. Используйте Win32::GetANSIPathName() перед передачей пути системному вызову или другой программе.

Win32::GetNextAvailDrive()

[CORE] Возвращает строку в форме «<d>:&», где <d> — первая доступная буква диска.

Win32::GetOEMCP()

Возвращает идентификатор текущей кодовой страницы изготовителя оригинального оборудования (OEM) для операционной системы. См. также GetACP(), GetConsoleCP() и GetConsoleOutputCP().

Win32::GetOSDisplayName()

Возвращает «маркетинговое» имя версии операционной системы Windows, используемой в данный момент. Возвращаемые значения включают, но не ограничиваются этими образцами:

Windows 2000 Datacenter Server
Windows XP Professional
Windows XP Tablet PC Edition
Windows Home Server
Windows Server 2003 Enterprise Edition for Itanium-based Systems
Windows Vista Ultimate (32-bit)
Windows Small Business Server 2008 R2 (64-bit)

Имя отображения описывает родную версию Windows, поэтому даже в 32-битном Perl эта функция может вернуть имя «Windows ... (64-битная)» при работе на 64-битной Windows.

Эта функция должна использоваться только для отображения фактического имени ОС пользователю; она не должна использоваться для определения класса операционных систем, к которому принадлежит данная система. Функции Win32::GetOSName(), Win32::GetOSVersion, Win32::GetProductInfo() и Win32::GetSystemMetrics() предоставляют основную информацию для проверки определённых возможностей или семейств выпусков ОС.

Win32::GetOSName()

В скалярном контексте возвращает имя используемой операционной системы Win32. В контексте списка возвращает список из двух элементов: имени ОС и информации об издании, известной для конкретной сборки (для систем Win9X), а также установленных пакетов обновления. Последнее примерно эквивалентно первому элементу, возвращаемому функцией GetOSVersion() в контексте списка.

Описание также будет включать метки для других специальных изданий, таких как "R2", "Центр медиа", "Планшетный ПК" или "Starter Edition".

В эпоху Windows 10/Server Semi-Annual Channel описание может содержать соответствующее значение ReleaseId, но это определяется только по номеру сборки, а не абсолютно.

В настоящее время возможные значения имени ОС:

WinWin32s
Win95
Win98
WinMe
WinNT3.51
WinNT4
Win2000
WinXP/.Net
Win2003
WinHomeSvr
WinVista
Win2008
Win7
Win8
Win8.1
Win10
Win2016
Win2019
WinSAC

Эта процедура — просто простой интерфейс к GetOSVersion(). Для более специфичных или сложных ситуаций следует использовать GetOSVersion(). Другой вариант — использовать POSIX::uname(), однако последний, похоже, сообщает только имя семейства ОС, а не конкретной ОС. В скалярном контексте возвращается только идентификатор.

Имя "WinXP/.Net" используется только по историческим причинам, чтобы сохранить обратную совместимость модуля Win32. Windows .NET Server было переименовано в Windows 2003 Server до финального релиза и использует другой номер основной/второстепенной версии, чем Windows XP.

Аналогично, имя "WinWin32s" должно было быть "Win32s", но сохранено в неизменном виде по причинам обратной совместимости.

Win32::GetOSVersion()

[CORE] Возвращает список (СТРОКА, ОСНОВНАЯ, ВТОРОСТЕПЕННАЯ, СБОРКА, ID), где элементы соответственно: произвольная описательная строка, номер основной версии операционной системы, номер второстепенной версии, номер сборки и цифра, указывающая фактическую операционную систему. Для ID значения: 0 для Win32s, 1 для Windows 9X/Me и 2 для Windows NT/2000/XP/2003/Vista/2008/7. В скалярном контексте возвращается только ID.

В настоящее время известные значения для ID, ОСНОВНОЙ, ВТОРОСТЕПЕННОЙ и СБОРКИ:

OS                      ID    MAJOR   MINOR   BUILD
Win32s                   0      -       -       -
Windows 95               1      4       0       -
Windows 98               1      4      10       -
Windows Me               1      4      90       -

Windows NT 3.51          2      3      51       -
Windows NT 4             2      4       0       -

Windows 2000             2      5       0       -
Windows XP               2      5       1       -
Windows Server 2003      2      5       2       -
Windows Server 2003 R2   2      5       2       -
Windows Home Server      2      5       2       -

Windows Vista            2      6       0       -
Windows Server 2008      2      6       0       -
Windows 7                2      6       1       -
Windows Server 2008 R2   2      6       1       -
Windows 8                2      6       2       -
Windows Server 2012      2      6       2       -
Windows 8.1              2      6       2       -
Windows Server 2012 R2   2      6       2       -

Windows 10               2     10       0       -
Windows Server 2016      2     10       0   14393
Windows Server 2019      2     10       0   17677

В Windows NT 4 SP6 и более поздних версиях эта функция возвращает следующие дополнительные значения: SPMAJOR, SPMINOR, SUITEMASK, PRODUCTTYPE.

Номера версий Windows 2003 и Windows Home Server идентичны; поле SUITEMASK необходимо использовать для их различения.

Номера версий Windows Vista и Windows Server 2008 идентичны; поле PRODUCTTYPE необходимо использовать для их различения.

Номера версий Windows 7 и Windows Server 2008 R2 идентичны; поле PRODUCTTYPE необходимо использовать для их различения.

Номера версий Windows 8 и Windows Server 2012 идентичны; поле PRODUCTTYPE необходимо использовать для их различения.

Для современных версий Windows номера основной и второстепенной версии идентичны. Поле PRODUCTTYPE необходимо использовать для различения выпусков Windows 10 и Server. Поле СБОРКА используется для различения версий Windows Server: в настоящее время 2016, 2019 и Semi-Annual Channel.

SPMAJOR и SPMINOR — номера версии последнего установленного пакета обновления. (В эпоху Windows 10 эти значения не используются.)

SUITEMASK — битовое поле, определяющее доступные на системе продукты. Известные биты:

VER_SUITE_SMALLBUSINESS             0x00000001
VER_SUITE_ENTERPRISE                0x00000002
VER_SUITE_BACKOFFICE                0x00000004
VER_SUITE_COMMUNICATIONS            0x00000008
VER_SUITE_TERMINAL                  0x00000010
VER_SUITE_SMALLBUSINESS_RESTRICTED  0x00000020
VER_SUITE_EMBEDDEDNT                0x00000040
VER_SUITE_DATACENTER                0x00000080
VER_SUITE_SINGLEUSERTS              0x00000100
VER_SUITE_PERSONAL                  0x00000200
VER_SUITE_BLADE                     0x00000400
VER_SUITE_EMBEDDED_RESTRICTED       0x00000800
VER_SUITE_SECURITY_APPLIANCE        0x00001000
VER_SUITE_STORAGE_SERVER            0x00002000
VER_SUITE_COMPUTE_SERVER            0x00004000
VER_SUITE_WH_SERVER                 0x00008000
VER_SUITE_MULTIUSERTS               0x00020000

Имена VER_SUITE_xxx указаны здесь для сопоставления с документацией Microsoft. Модуль Win32 не предоставляет символьных имен для этих констант.

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

1 - Workstation (NT 4, 2000 Pro, XP Home, XP Pro, Vista, etc)
2 - Domaincontroller
3 - Server (2000 Server, Server 2003, Server 2008, etc)

Обратите внимание, что сервер, который также является контроллером домена, отображается как PRODUCTTYPE 2 (Контроллер домена), а не PRODUCTTYPE 3 (Сервер).

Win32::GetShortPathName(PATHNAME)

[CORE] Возвращает представление PATHNAME, состоящее из коротких (8.3) компонентов пути, где это возможно. Для компонентов пути, для которых файловая система не сгенерировала короткую форму, возвращаемый путь будет использовать длинную форму, поэтому эта функция по-прежнему может, например, возвращать путь, содержащий пробелы. Возвращает undef когда PATHNAME не существует. Сравните с Win32::GetFullPathName() и Win32::GetLongPathName().

Win32::GetSystemMetrics(INDEX)

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

Win32::GetProcAddress(INSTANCE, PROCNAME)

Возвращает адрес функции внутри загруженной библиотеки. Информация о том, что вы можете сделать с этим адресом, потеряна во времени. Используйте модуль Win32::API вместо этой устаревшей функции.

Win32::GetProcessPrivileges([PID])

Возвращает ссылку на хэш, содержащий информацию о привилегиях, имеющихся у указанного процесса. Ключи — имена привилегий, а значения — булевы значения, указывающие, включена ли данная привилегия в данный момент или нет.

Если необязательный параметр PID опущен, функция запрашивает текущий процесс.

Пример возвращаемого значения:

{
    SeTimeZonePrivilege => 0,
    SeShutdownPrivilege => 0,
    SeUndockPrivilege => 0,
    SeIncreaseWorkingSetPrivilege => 0,
    SeChangeNotifyPrivilege => 1
}
Win32::GetProductInfo(OSMAJOR, OSMINOR, SPMAJOR, SPMINOR)

Получает тип продукта для операционной системы на локальном компьютере и сопоставляет его с типами продуктов, поддерживаемыми указанной операционной системой. Для получения дополнительной информации о параметрах и возвращаемом значении обратитесь к документации Microsoft функции GetProductInfo(). Эта функция требует Windows Vista или более поздней версии.

См. также функции Win32::GetOSName() и Win32::GetOSDisplayName(), которые предоставляют более высокий уровень абстракции данных, возвращаемых этой функцией.

Win32::GetTickCount()

[CORE] Возвращает количество миллисекунд, прошедших с момента последнего запуска системы. Разрешение ограничено системными тиками таймера (около 10 мс в WinNT и 55 мс в Win9X).

Win32::GuidGen()

Создает 128-битовое целое число, глобально уникальное, которое можно использовать в качестве постоянного идентификатора в распределенной среде. С высокой долей вероятности эта функция возвращает уникальное значение. Ни один другой вызов, на той же или любой другой системе (сетевой или нет), не должен возвращать то же самое значение.

Возвращаемое значение отформатировано в соответствии с соглашениями OLE, как группы шестнадцатеричных цифр с окружающими фигурными скобками. Например:

{09531CF1-D0C7-4860-840C-1C8C8735E2AD}
Win32::HttpGetFile(URL, FILENAME [, IGNORE_CERT_ERRORS])

Использует библиотеку WinHttp для загрузки файла, указанного параметром URL, в локальный файл, указанный параметром FILENAME. Необязательный третий параметр, если он true, указывает на то, что ошибки сертификатов должны игнорироваться для подключений https; используйте с осторожностью в безопасной среде, например, при тестировании локально с самоподписанным сертификатом.

Поддерживаются только протоколы http и https. Авторизация не поддерживается. Функция недоступна при компиляции с gcc до версии 4.8.0, потому что библиотека WinHttp недоступна.

В скалярном контексте возвращает булево значение успеха или неудачи, а в контексте списка также возвращает, помимо булевого статуса, второе значение, содержащее текст сообщения, связанный со статусом.

Если вызов завершился неудачей, Win32::GetLastError() вернёт числовой код ошибки, который может быть системной ошибкой, ошибкой WinHttp или ошибкой, определённой пользователем, состоящей из 1e9 плюс код HTTP-статуса.

Пример скалярного контекста:

print Win32::GetLastError()
    unless Win32::HttpGetFile('http://example.com/somefile.tar.gz',
                              '.\file.tgz');

Пример контекста списка:

my ($ok, $msg) = Win32::HttpGetFile('http://example.com/somefile.tar.gz',
                                    '.\file.tgz');
if ($ok) {
    print "Success!: $msg\n";
}
else {
    print "Failure!: $msg\n";
    my $err = Win32::GetLastError();
    if ($err > 1e9) {
        printf "HTTP status: %d\n", ($err - 1e9);
    }
}
Win32::InitiateSystemShutdown

(MACHINE, MESSAGE, TIMEOUT, FORCECLOSE, REBOOT)

Выключает указанную машину MACHINE, уведомляя пользователей с помощью предоставленного сообщения MESSAGE в течение заданного интервала TIMEOUT. Вынуждает закрытие всех документов без запроса пользователя, если FORCECLOSE равно true, и перезагружает машину, если REBOOT равно true. Эта функция работает только в WinNT.

Win32::IsAdminUser()

Возвращает ненулевое значение, если учётная запись, в контексте безопасности которой выполняется текущий процесс/поток, принадлежит локальной группе Администраторы в встроенном домене системы; возвращает 0, если нет. В Windows Vista будет возвращать ненулевое значение только если процесс действительно выполняется с повышенными привилегиями. Возвращает undef и выводит предупреждение, если произошла ошибка. В Win9X эта функция всегда возвращает 1.

Win32::IsDeveloperModeEnabled()

Возвращает true, если режим разработчика включён в данный момент. В версиях Windows, более ранних чем Windows 10, всегда возвращает false.

Win32::IsSymlinkCreationAllowed()

Возвращает true, если текущий процесс имеет право создавать символические ссылки. Эта функция является удобной обёрткой вокруг Win32::GetProcessPrivileges() и Win32::IsDeveloperModeEnabled().

Win32::IsWinNT()

[CORE] Возвращает ненулевое значение, если подсистема Win32 — Windows NT.

Win32::IsWin95()

[CORE] Возвращает ненулевое значение, если подсистема Win32 — Windows 95.

Win32::LoadLibrary(LIBNAME)

Загружает динамическую библиотеку ссылок в память и возвращает дескриптор её модуля. Этот дескриптор может использоваться с Win32::GetProcAddress() и Win32::FreeLibrary(). Эта функция устарела. Используйте модуль Win32::API вместо неё.

Win32::LoginName()

[CORE] Возвращает имя пользователя владельца текущего процесса Perl. Возвращаемое значение может быть строкой Unicode.

Win32::LookupAccountName(SYSTEM, ACCOUNT, DOMAIN, SID, SIDTYPE)

Ищет ACCOUNT в SYSTEM и возвращает имя домена, SID и тип SID.

Win32::LookupAccountSID(SYSTEM, SID, ACCOUNT, DOMAIN, SIDTYPE)

Ищет SID в SYSTEM и возвращает имя учётной записи, имя домена и тип SID.

Win32::MsgBox(MESSAGE [, FLAGS [, TITLE]])

Создаёт диалоговое окно с сообщением MESSAGE. FLAGS задаёт необходимый значок и кнопки в соответствии со следующей таблицей:

0 = OK
1 = OK and Cancel
2 = Abort, Retry, and Ignore
3 = Yes, No and Cancel
4 = Yes and No
5 = Retry and Cancel

MB_ICONSTOP          "X" in a red circle
MB_ICONQUESTION      question mark in a bubble
MB_ICONEXCLAMATION   exclamation mark in a yellow triangle
MB_ICONINFORMATION   "i" in a bubble

TITLE задаёт необязательное заголовок окна. По умолчанию — "Perl".

Функция возвращает идентификатор меню выбранной кнопки:

0  Error

1  OK
2  Cancel
3  Abort
4  Retry
5  Ignore
6  Yes
7  No
Win32::NodeName()

[CORE] Возвращает имя узла Microsoft Network текущей машины.

Win32::OutputDebugString(STRING)

Отправляет строку в отладчик приложения или системы для отображения. Если активного отладчика нет, функция ничего не делает.

В качестве альтернативы можно использовать приложение Debug Viewer для просмотра вывода OutputDebugString():

http://www.microsoft.com/technet/sysinternals/utilities/debugview.mspx

Win32::RegisterServer(LIBRARYNAME)

Загружает DLL LIBRARYNAME и вызывает функцию DllRegisterServer.

Win32::SetChildShowWindow(SHOWWINDOW)

[CORE] Устанавливает ShowMode дочерних процессов, запущенных функцией system(). По умолчанию system() создает новое окно консоли для дочерних процессов, если сам Perl не запущен из консоли. Вызов SetChildShowWindow(0) сделает эти новые окна консоли невидимыми. Вызов SetChildShowWindow() без аргументов восстанавливает поведение system() к значению по умолчанию. Возвращаемое значение SetChildShowWindow() — предыдущее значение или undef.

Доступны следующие символические константы для SHOWWINDOW (но не экспортированы) из модуля Win32: SW_HIDE, SW_SHOWNORMAL, SW_SHOWMINIMIZED, SW_SHOWMAXIMIZED и SW_SHOWNOACTIVATE.

Win32::SetConsoleCP(ID)

Устанавливает кодовую страницу ввода, используемую консолью, связанной с вызывающим процессом. Возвращаемое значение SetConsoleCP() — ненулевое значение при успехе или ноль при неудаче. Чтобы получить кодовую страницу ввода консоли, см. GetConsoleCP().

Win32::SetConsoleOutputCP(ID)

Устанавливает кодовую страницу вывода, используемую консолью, связанной с вызывающим процессом. Возвращаемое значение SetConsoleOutputCP() — ненулевое значение при успехе или ноль при неудаче. Чтобы получить кодовую страницу вывода консоли, см. GetConsoleOutputCP().

Win32::SetCwd(NEWDIRECTORY)

[CORE] Устанавливает текущий активный диск и каталог. Эта функция не работает с UNC-путями, так как необходимая функциональность для такой возможности недоступна в Windows 95.

Win32::SetLastError(ERROR)

[CORE] Устанавливает значение последней ошибки на ERROR. Это значение, которое будет возвращено функцией Win32::GetLastError().

Win32::Sleep(TIME)

[CORE] Приостанавливает выполнение на TIME миллисекунд. Временные кванты предоставляются другим процессам и потокам.

Win32::Spawn(COMMAND, ARGS, PID)

[CORE] Запускает новый процесс с использованием COMMAND, передавая аргументы в строке ARGS. PID содержит идентификатор нового процесса. Эта функция устарела. Используйте модуль Win32::Process вместо неё.

Win32::UnregisterServer(LIBRARYNAME)

Загружает DLL LIBRARYNAME и вызывает функцию DllUnregisterServer.

ОСОБЕННОСТИ

Короткое имя файла

В современных системах Windows часто отсутствует альтернативное короткое имя файла (также называемое именем 8.3 или MS-DOS) для длинных имён файлов.

Поддержка коротких имён файлов может быть настроена на уровне всей системы через реестр, но по умолчанию в современных системах настройка происходит на уровне тома. Конфигурацию тома можно запросить несколькими способами, но это может быть ненадёжно или требовать повышенных (административных) привилегий.

Как правило, конфигурацию тома можно запросить с помощью утилиты fsutil, например fsutil 8dot3name query d:. На уровне C это можно запросить с помощью запроса FSCTL_QUERY_PERSISTENT_VOLUME_STATE к API-функции DeviceIOControl, как описано в этой статье. Однако оба метода требуют административных привилегий.

Модуль Win32 не выполняет проверки на уровне тома и просто получает короткие имена файлов так же, как и используемый им вызов Windows API: если поддержка коротких имён отключена, вызов всё равно выполнится успешно, но вернётся длинное имя.

Обратите внимание, что на томах, где это происходит, GetANSIPathName обычно не может использоваться для возврата полезных имён файлов для файлов, содержащих символы Юникода. (В кодовой странице 65001 это может всё ещё работать.) Обработка имён файлов Юникода таким устаревшим способом полагается на то, что GetShortPathName вернёт имена 8.3, но без поддержки коротких имён он вернёт имя файла, в котором все символы Юникода заменены знаком вопроса.

© 1993–2023 Larry Wall and others
Licensed under the GNU General Public License version 1 or later, or the Artistic License.
The Perl logo is a trademark of the Perl Foundation.
https://perldoc.perl.org/5.38.0/Win32

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API