Win32
СОДЕРЖАНИЕ
НАЗВАНИЕ
Win32 — Интерфейсы к некоторым функциям Win32 API.
ОПИСАНИЕ
Модуль Win32 содержит функции для доступа к Win32 API.
Алфавитный список функций Win32
Рекомендуется use Win32; перед использованием любой из этих функций; однако, для обратной совместимости, функции, помеченные как [CORE], сделают это автоматически.
В описаниях функций термин строка Юникода используется для обозначения строки, которая может содержать символы, не входящие в кодовую страницу системы. Оговорка Если поддерживается ядром версии Perl, как правило, означает Perl 5.8.9 и более поздние версии, хотя некоторые функции работы с путями Юникода могут работать и на более ранних версиях.
- 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 может содержать Unicode-символы, которые не входят в системную кодовую страницу. После создания директории вы можете использовать Win32::GetANSIPathName(), чтобы получить имя, которое можно передать системным вызовам и внешним программам.
- Win32::CreateFile(FILE)
-
Создаёт файл FILE и возвращает true при успехе. При ошибке проверьте $^E для получения дополнительной информации об ошибке.
FILE может содержать Unicode-символы, которые не входят в системную кодовую страницу. После создания файла вы можете использовать Win32::GetANSIPathName(), чтобы получить имя, которое можно передать системным вызовам и внешним программам.
- Win32::DomainName()
-
[CORE] Возвращает имя Microsoft Network домена или рабочей группы, к которой вошёл владелец текущего процесса Perl. Для определения этой информации должен быть запущен сервис "Workstation". Эта функция не работает в Windows 9x.
- Win32::ExpandEnvironmentStrings(STRING)
-
Принимает STRING и заменяет все ссылки на имена переменных среды их определёнными значениями. Ссылки на переменные среды имеют вид
%VariableName%. При поиске VariableName в среде регистр игнорируется. Если переменная не найдена, исходный текст%VariableName%сохраняется. Эквивалентно следующему:$string =~ s/%([^%]*)%/$ENV{$1} || "%$1%"/egОднако, эта функция может вернуть строку Unicode, если переменная среды, которую требуется расширить, не была назначена через %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-имена файлов, эта функция переведёт имя Unicode в системную кодовую страницу с использованием символов замены.
- 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(), если вам нужно Unicode-представление имени папки.
- 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().
Эта функция может вернуть путь в Unicode, если он не может быть представлен в системной кодовой странице. Используйте 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", "Media Center", "Tablet PC" или "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(). Более специфические или сложные ситуации следует решать с помощью неё. Другой вариант — использовать POSIX::uname(), однако последний, похоже, сообщает только имя семейства ОС, а не конкретную ОС. В скалярном контексте он возвращает только идентификатор.
Название "WinXP/.Net" используется только по историческим причинам для обеспечения обратной совместимости модуля Win32. Windows .NET Server был переименован в Windows 2003 Server перед окончательным выпуском и использует другой номер основной/второстепенной версии, чем Windows XP.
Аналогично, имя "WinWin32s" должно было быть "Win32s", но сохранено в неизменном виде для обеспечения обратной совместимости.
- Win32::GetOSVersion()
-
[CORE] Возвращает список (СТРОКА, ОСНОВНАЯ, ВТОРОСТЕПЕННАЯ, СБОРКА, ИД), где элементы соответственно: произвольная описательная строка, номер основной версии операционной системы, номер второстепенной версии, номер сборки и цифра, указывающая фактическую операционную систему. Для 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 (Domaincontroller), а не PRODUCTTYPE 3 (Server).
- Win32::GetShortPathName(PATHNAME)
-
[CORE] Возвращает представление PATHNAME, состоящее из коротких (8.3) компонентов пути, где это возможно. Для компонентов пути, для которых файловая система не сгенерировала короткую форму, возвращаемый путь будет использовать длинную форму, поэтому эта функция всё равно может, например, вернуть путь, содержащий пробелы. Возвращает
undefкогда PATHNAME не существует. Сравните с Win32::GetFullPathName() и Win32::GetLongPathName(). - Win32::GetSystemMetrics(INDEX)
-
Извлекает указанный системный параметр или системную настройку. Обратитесь к документации Microsoft по функции GetSystemMetrics() для справки о доступных значениях INDEX. Все системные параметры возвращают целые значения.
- 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 bubbleTITLE определяет необязательный заголовок окна. По умолчанию — "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–2021 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.36.0/Win32