Это - продолжение статьи о том, как вызывать функции из командной строки.
Прмечание: ссылка в названии функции ведет на ее документацию (официальную, если такая имеется).
Полезные функции
Эта часть будет посвящена функциям, которые имеют применение (в том числе для bat-файлов)
- MessageBoxA
Вызов стандартного для Windows окна сообщения.
Сигнатура:
| C++ | 1
2
3
4
5
6
| int MessageBoxA(
[in, optional] HWND hWnd,
[in, optional] LPCSTR lpText,
[in, optional] LPCSTR lpCaption,
[in] UINT uType
); |
|
Расположение: %SystemRoot%\System32\user32.dll
Способ вызова через rundll34:
| Windows Batch file | 1
| rundll34 user32.dll MessageBoxA int null string:"Текст" string:"Заголовок" uint:Настройки_кнопок_и_иконки |
|
- SHEmptyRecycleBinA
Очистка корзины.
Сигнатура:
| C++ | 1
2
3
4
5
| SHSTDAPI SHEmptyRecycleBinA(
[in, optional] HWND hwnd,
[in, optional] LPCSTR pszRootPath,
DWORD dwFlags
); |
|
Расположение: %SystemRoot%\System32\shell32.dll
Способ вызова через rundll34:
| Windows Batch file | 1
| rundll34 shell32.dll SHEmptyRecycleBinA void null null int:если_1_то_операция_будет_скрытой |
|
- RunFileDlg (#61)
Вызов окна "Выполнить" (недокументированная функция)
Сигнатура (неофициальная):
| C++ | 1
2
3
4
5
6
7
8
9
10
| BOOL
FASTCALL
RunFileDlg(
IN HWND hwndOwner, // Owner window, receives notifications
IN HICON hIcon, // Dialog icon handle, if NULL default icon is used
IN LPCTSTR lpszDirectory, // Working directory
IN LPCTSTR lpszTitle, // Dialog title, if NULL default is displayed
IN LPCTSTR lpszDescription, // Dialog description, if NULL default is displayed
IN UINT uFlags // Dialog flags
); |
|
Расположение: %SystemRoot%\System32\shell32.dll, функция не экспортирована по имени, доступен только ординал #61
Способ вызова через rundll34:
| Windows Batch file | 1
| rundll34 shell32.dll #61 void null null null string:"Title" string:"Text" uint:0 |
|
- RestartDialogEx
Открытие диалога перезагрузки системы.
Сигнатура:
| C++ | 1
2
3
4
5
6
| int RestartDialogEx(
[in, optional] HWND hwnd,
[in, optional] PCWSTR pszPrompt,
DWORD dwReturn,
DWORD dwReasonCode
); |
|
Расположение: %SystemRoot%\System32\shell32.dll
Способ вызова через rundll34:
| Windows Batch file | 1
| rundll34 shell32.dll RestartDialogEx void null null int:Тип_завершения_работы int:0 |
|
Типы завершения работы:- 0 - выход из системы
- 1 - завершение работы
- 2 - перезагрузка
Странные, старые и просто интересные функции
Здесь перечислены функции, которые не имеют практического смысла для вызова из командной строки. Они просто прикольные 
- CredUIPromptForCredentialsA
Старая версия функции для запроса имени пользователя и пароля. В ней сломана кодировка, а выглядит она вообще как "динозавр" из Windows XP.
Сигнатура:
| C++ | 1
2
3
4
5
6
7
8
9
10
11
12
| CREDUIAPI DWORD CredUIPromptForCredentialsA(
[in, optional] PCREDUI_INFOA pUiInfo,
[in] PCSTR pszTargetName,
[in] PCtxtHandle pContext,
[in, optional] DWORD dwAuthError,
[in, out] PSTR pszUserName,
[in] ULONG ulUserNameBufferSize,
[in, out] PSTR pszPassword,
[in] ULONG ulPasswordBufferSize,
[in, out] BOOL *save,
[in] DWORD dwFlags
); |
|
Расположение: %SystemRoot%\System32\credui.dll
Способ вызова через rundll34:
| Windows Batch file | 1
| rundll34 credui.dll CredUIPromptForCredentialsA void null string:" " null int:0 string:"" int:255 string:"" int:255 int:0 int:0 |
|
P.S. статья возможно будет дополняться новыми функциями
|