Spec-Zone.ru › Perl 5.34

Win32

СОДЕРЖАНИЕ

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

НАЗВАНИЕ

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

ОПИСАНИЕ

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

Алфавитный список функций 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 может содержать символы Юникода, не входящие в системную кодировку. После создания каталога можно использовать 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. Поскольку она возвращает родной тип процессора, она вернёт 64-битный тип процессора даже при вызове из 32-битной Perl на 64-битной Windows.

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 в полные имена или наоборот. Сравни с Win32::GetShortPathName() и Win32::GetLongPathName().

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

Win32::GetLastError()

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

Win32::GetLongPathName(PATHNAME)

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

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

 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 номера основных и дополнительных версий совпадают. Для различения между Windows 10 и Server-версиями используется поле PRODUCTTYPE. Для различения версий 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::InitiateSystemShutdown

(MACHINE, MESSAGE, TIMEOUT, FORCECLOSE, REBOOT)

Выключает указанную машину MACHINE, уведомляя пользователей с помощью сообщения MESSAGE в течение указанного интервала TIMEOUT. Принудительно закрывает все документы без запроса пользователя, если FORCECLOSE истинно, и перезагружает машину, если REBOOT истинно. Эта функция работает только в 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 не выполняет проверки на уровне тома и просто извлекает короткие имена путей таким же образом, как и вызываемый им базовый API-вызов Windows: если поддержка коротких имён пути отключена, вызов всё равно будет успешным, но фактически будет возвращено длинное имя.

Обратите внимание, что на томах, где это происходит, 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.34.0/Win32

Spec-Zone.ru

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