Как запустить программу из файла dll

Я понимаю, что мне нужно использовать LoadLibrary(). Но какие еще шаги я должен предпринять, чтобы использовать сторонний DLL файл? Я просто прыгнул в С++, и это единственная часть, которую я не получаю (как программист Java). Я просто изучаю, как я могу использовать Qt Library и tesseract-ocr, но процесс для меня не имеет смысла и настолько сложный для google.

Как сообщить компилятору о функциях, которые я использую? Должен ли быть файл include от стороннего поставщика?

Zombies 30 янв. 2009, в 16:45
Поделиться

Вы понимаете, как добавить сторонний DLL-файл в Visual Studio 2012 для C ++. Пожалуйста, помогите мне с этим.

afzalex 06 июль 2015, в 15:37
Поделиться:
visual-studio

6 ответов

Лучший ответ

Как все говорят, LoadLibrary — это трудный способ сделать это, и вряд ли когда-либо понадобится.

В DLL должен быть добавлен файл .lib для связывания и один или несколько файлов заголовков в #include в ваши источники. Файлы заголовков будут определять классы и прототипы функций, которые вы можете использовать в DLL. Вам понадобится это, даже если вы используете LoadLibrary.

Как скачать vcomp110.dll. Чтоб исправить ошибку: на компьютере отсутствует файл

Чтобы установить связь с библиотекой, вам может потребоваться добавить файл .lib в конфигурацию проекта в Linker/Input/Additional Dependencies.

Mark Ransom 30 янв. 2009, в 17:17
Поделиться

Спасибо, другие ответы были очень хорошими (и полезными для меня), но это объяснило именно то, что я искал.

Zombies 30 янв. 2009, в 15:28

Диалог «Дополнительные зависимости» выглядит так, как будто он поддерживает только имена файлов и расширения, а не пути к файлам. Добавление имени файла + расширения не исправило ошибки «идентификатор не найден». Добавление полного пути + имени файла + также не исправило их.

anon58192932 04 июнь 2012, в 23:21
Mark Ransom 04 июнь 2012, в 23:52

Я действительно сделал это, но я все еще получаю ошибки компоновщика. Я положил свой файл .dll в мой C: / Windows. Что я делаю неправильно?

Bart 12 нояб. 2015, в 08:46
Ark-kun 26 май 2016, в 08:09

Это первое место, где я прочитал, что мне нужно добавить .h файлы для включения. В любом другом уроке говорится, что вам нужны только .lib и .dll. Может кто-нибудь, пожалуйста, объясните это? , Здесь у вас есть еще один вариант: stackoverflow.com/questions/7845886/…

darkgaze 01 май 2017, в 09:34
Mark Ransom 01 май 2017, в 16:18

Если нет файла .h, который является удобочитаемой ссылкой для всех объектов и методов, как вы можете создать экземпляр объекта или вызвать методы из библиотеки?

winux 23 нояб. 2018, в 08:55
Показать ещё 6 комментариев

Чтобы включить сторонние библиотеки DLL в проект VS 2008 С++, я сделал следующее (вы должны перевести на 2010, 2012 и т.д.).

Я поместил файлы заголовков в свое решение с другими файлами заголовков, внес изменения в свой код, чтобы вызвать функции DLL (иначе зачем мы все это делаем?).: ^) Затем я сменил сборку, чтобы связать код LIB с моим EXE, скопировать библиотеки DLL на место и очистить их, когда я сделал «чистый». Я объясняю эти изменения ниже.

Система не обнаружила amd_ags_x64.dll как скачать файл и исправить ошибку

Предположим, что у вас есть 2 сторонних DLL, A.DLL и B.DLL, и у вас есть файл LIB для каждого (A.LIB и B.LIB) и файлы заголовков (AH и BH).

  • Создайте каталог «lib» в вашем каталоге решений, например. используя проводник Windows.
  • Скопируйте ваши сторонние файлы .LIB и .DLL в этот каталог

(Вам нужно будет сделать следующий набор изменений один раз для каждой используемой вами цели построения источника (Debug, Release).)

  • Сделайте EXE зависимым от файлов LIB
  • Перейдите в Configuration Properties → Linker → Input → Additional Dependencies и перечислите файлы .LIB по одному за раз, разделенные пробелами: A.LIB B.LIB
  • Перейдите в «Свойства конфигурации» → «Общие» — «Дополнительные каталоги библиотек» и добавьте каталог «lib» в любой, который у вас там есть. Записи разделяются точкой с запятой. Например, если у вас уже есть $(SolutionDir)fodder , вы меняете его на $(SolutionDir)fodder;$(SolutionDir)lib , чтобы добавить «lib» .
  • Перейдите в Свойства конфигурации → События сборки → Событие после сборки
  • В командной строке (для значений ключа см. «XCOPY/?» в окне DOS):

XCOPY «$(SolutionDir)»lib*.DLL «$(TargetDir)» /D /K /Y

  • Вы можете поместить что-то вроде этого для описания:

Copy DLLs to Target Directory

  • Исключено из сборки должно быть No . Нажмите OK .
  • Перейдите в «Свойства конфигурации» → «Общие» → «Расширения для удаления по очистке» и нажмите «. «; добавьте *.dll в конец списка и нажмите OK .

rich p 05 дек. 2013, в 22:30
Поделиться

Я пытаюсь использовать ваш метод для использования сторонних DLL. Я использую Visual Studio 2012 Ultimate, и у него нет Additional Library Directories в Configuration Properties -> General вкладка « Configuration Properties -> General ». Пожалуйста, помогите мне.

afzalex 06 июль 2015, в 15:17
Это должны быть Configuration Properties -> Linker -> General -> Additional Library Directories .
Colin Robertson 08 июль 2015, в 21:04
Bokhari 19 май 2016, в 21:08
Цитата пропущена для шага 2. Использование: XCOPY «$(SolutionDir)lib*.DLL» «$(TargetDir)» /D /K /Y
Tristan CHARBONNIER 31 май 2016, в 23:00
rich p 30 сен.

2016, в 20:52

Спасибо, пункт 2 решил, что у меня была проблема с программой, которая не смогла найти .dll во время выполнения, хотя она скомпилирована нормально!

Читайте также:
Python как выйти из программы

EM-Creations 10 апр. 2018, в 10:32
Показать ещё 4 комментария

Это два способа использования DLL файла в Windows:

  • Существует библиотека заглушек (.lib) со связанными файлами заголовков. Когда вы связываете свой исполняемый файл с lib файлом, он автоматически загружает DLL файл при запуске программы.
  • Загрузка DLL вручную. Обычно это то, что вы хотите сделать, если разрабатываете систему плагинов, где есть много DLL файлов, реализующих общий интерфейс. Ознакомьтесь с документацией для LoadLibrary и GetProcAddress для получения дополнительной информации о это.

Для Qt я подозреваю, что есть заголовки и статическая библиотека, которые вы можете включить и связать в своем проекте.

Laserallan 30 янв. 2009, в 15:34
Поделиться

И есть третий способ, аналогичный вашему первому, с использованием ключа /MT , который статически связывает ваши библиотеки. Преимущество заключается в том, что нет динамических накладных расходов . Однако это нельзя использовать, если вы также используете ключ /clr .

Abel 08 нояб. 2014, в 01:32

Это относится только к стандартной библиотеке. Для пользовательских библиотек (сторонних) вы не можете статически связать dll, если кто-то явно не создал статическую версию, которую вы можете связать.

Laserallan 09 нояб. 2014, в 18:26

Чтобы использовать Qt с динамической связью, вы должны указать файлы lib (обычно qtmaind.lib , QtCored4.lib и QtGuid4.lib для конфигурации «Отладка» ) в
Properties » Linker » Input » Additional Dependencies .

Вы также должны указать путь, где libs, а именно в
Properties » Linker » General » Additional Library Directories .

И вам нужно сделать, чтобы соответствующие .dll были доступны во время выполнения, либо сохраняя их в той же папке, что и ваш .exe , либо в папке, в которой находится на вашем пути.

drby 30 янв. 2009, в 17:13
Поделиться

Вам нужно всего лишь использовать LoadLibrary, если вы хотите опоздать на связывание и разрешать импортированные функции во время выполнения. Самый простой способ использования сторонней dll — связать с .lib.

В ответ на ваше редактирование:

Да, сторонний API должен состоять из dll и/или lib, которые содержат файлы реализации и заголовка, объявляющие требуемые типы. Вам нужно знать определения типов в зависимости от того, какой метод вы используете: для LoadLibrary вам нужно будет определить указатели на функции, чтобы вы могли просто написать собственный заголовочный файл. В принципе, вам нужно всего лишь использовать LoadLibrary, если вам нужна поздняя привязка. Одной из веских причин для этого было бы, если вы не уверены, что DLL будет доступна на целевом компьютере.

Stu Mackellar 30 янв. 2009, в 15:47
Поделиться

Если вы согласны с тем, что сможете использовать его, то сторонняя библиотека должна иметь *.lib файл, а также файл *.dll. Вам просто нужно добавить *.lib в список входных файлов в ваших проектах «Linker».

Этот *.lib файл не обязательно является «статической» библиотекой (которая содержит код): вместо этого *.lib может быть просто файлом, который связывает ваш исполняемый файл с DLL.

ChrisW 30 янв. 2009, в 16:19
Поделиться

Ещё вопросы

  • 0 Как получить данные с помощью соединения в MySQL
  • 1 Как открыть одно и только одно окно одним нажатием кнопки?
  • 0 Получить всю зарплату сотрудника из таблиц сотрудников с 3-й по величине зарплаты в MYSQL
  • 0 Как перенаправить пользователя на страницу с ошибкой из контроля входа при вводе неверного имени пользователя и / или пароля?
  • 1 Показ промежуточной рекламы adMob, когда пользователь выходит из приложения, но не намеренно
  • 1 Пользовательская страница входа MarkLogic App Server cookie cookie с идентификатором GET
  • 0 Потерянный в pointerworld, запись в переменную через массив
  • 0 сохранение значения с помощью атрибута span в html
  • 1 OAuth Google Plus войдите в систему: 400. Это ошибка. Ошибка: redirect_uri_mismatch
  • 0 JQuery добавление входного Val вместе
  • 0 Связывание событий кликов в цикле for
  • 0 как преобразовать объект в массив, исключая зависимости в php
  • 1 PageSpeed app.js и app.css блокируют рендеринг
  • 0 Передача значений из div, содержащего список с другой страницы
  • 1 Странное поведение метода keras fit_generator
  • 0 Центрировать изображение внутри div в HTML
  • 0 PHP API Parsehub
  • 0 Вернуть функцию несколько раз вместо одного, используя .fadeOut ();
  • 0 Использование всплывающей подсказки jquery несколько раз на одной странице
  • 0 Вставка данных из базы данных в массив и внедрение этих данных в текстовую область
  • 0 Ошибка запуска Kinect Facetracking C ++
  • 1 IllegalThreadStateException при запуске потока
  • 1 JavaScript проблема об «этом»
  • 0 Объектная модель G ++
  • 0 Получить закладки из области видимости Chrome
  • 1 Передача значений из представления в качестве входных значений для формирования в ASP.NET MVC
  • 0 Как обновить количество базы данных из действия php
  • 0 Как показать изображение загрузки во время рендеринга выпадающего списка (не во время загрузки данных, а во время рендеринга)
  • 0 принимая заголовок HTML к переменной javascript
  • 1 Получение значения с нулем при попытке объединить orderByChild () и startAt ()
  • 1 Запустите приложение Python Flask с модулем nginx
  • 1 Как создать AWC по умолчанию в AWS через aws-java-sdk
  • 1 Regex делает браузер невосприимчивым
  • 1 Не удается найти элемент с помощью селектора CSS с Selenium на Python
  • 0 Jquery .siblings () не работает с пользовательскими атрибутами
  • 0 Выберите все старше 48 часов
  • 0 процедурный запрос firebird выдавал ошибку «token unknown» в «SET TERM #;»
  • 1 Отправить письмо без аутентификации
  • 0 Использование IsWow64Process вместо отдельной компиляции
  • 0 Javascript / JQuery: как что-то переопределить?
  • 1 Как проверить, соответствует ли имя строки в dataframe имени столбца
  • 0 PHP — извлекать числа и заключать их в
  • 1 Как бороться с большим массивом (100.000 объектов)?
  • 0 Запрос на член не-классового типа
  • 0 DIV перестает обновляться при создании новой записи в базе данных
  • 0 XML-файл загрузки с PHP
  • 1 Как получить секунды с эпохи без связи со временем устройства? [Дубликат]
  • 1 Как реализовать OnClickListener в RecyclerView?
  • 1 Объедините несколько строк кода C # для краткости или отдельно для ясности
  • 1 Цвет узлов D3 на основе группы, определенной в CSV

Источник: overcoder.net

Читайте также:
Программа линекс для компьютера как

Практическое руководство. Отладка из проекта DLL в Visual Studio (C#, C++, Visual Basic, F#)

Область применения:yesVisual StudionoVisual Studio для Mac noVisual Studio Code

Одним из способов отладки проекта библиотеки DLL является указание вызывающего приложения в свойствах проекта библиотеки DLL. Затем можно запускать отладку из самого проекта DLL. Чтобы этот метод работал, приложение должно вызвать одну и ту же библиотеку DLL в том расположении, которое вы настроили. Если приложение находит и загружает другую версию библиотеки DLL, эта версия не будет содержать точки останова. Другие методы отладки библиотек DLL см. в разделе Отладка проектов DLL.

Если управляемое приложение вызывает собственную библиотеку DLL или ваше собственное приложение вызывает управляемую библиотеку DLL, можно выполнить отладку библиотеки DLL и вызывающего приложения. Дополнительные сведения см. в разделе Практическое руководство. Отладка в смешанном режиме.

Собственные и управляемые DLL-проекты имеют разные параметры для указания вызывающих приложений.

Указание вызывающего приложения в собственном проекте DLL

Debug Properties window

  1. Выберите проект C++ DLL в обозревателе решений. Щелкните значок Свойства, нажмите сочетание клавиш ALT+ВВОД или щелкните проект правой кнопкой мыши и выберите элемент Свойства.
  2. В диалоговом окне Страницы свойств убедитесь, что в поле Настройка в верхней части окна задано значение Отладка.
  3. Выберите Свойства конфигурации>Отладка.
  4. В списке Запускаемый отладчик выберите Локальный отладчик Windows или Удаленный отладчик Windows.
  5. В поле Команда или Удаленная команда добавьте полный путь и имя файла вызывающего приложения, например EXE-файл.
  6. Добавьте необходимые аргументы программы в поле Аргументы команды.
  7. Нажмите кнопку ОК.

Указание вызывающего приложения в проекте C# или DLL (.NET Core, .NET 5+)

Screenshot of the UI to create a new debug profile.

  1. Выберите проект C# или Visual Basic DLL в обозревателе решений. Щелкните значок Свойства, нажмите сочетание клавиш ALT+ВВОД или щелкните проект правой кнопкой мыши и выберите элемент Свойства.
  2. Откройте вкладку «Отладка» и выберите пункт Открыть пользовательский интерфейс профилей запуска отладки.
  3. В диалоговом окне «Профили запуска» щелкните значок Создать новый профиль и выберите Исполняемый файл.
  4. В новом профиле в разделе Исполняемый файл перейдите к расположению исполняемого файла ( .exe) и выберите его.
  5. В диалоговом окне «Профили запуска» найдите и запишите имя профиля по умолчанию, а затем выберите его и удалите.
  6. Присвойте новому профилю имя профиля по умолчанию. Чтобы получить такой же результат, можно также вручную изменить файл launchSettings.json. Необходимо, чтобы первый профиль в файле launchSettings.json соответствовал имени библиотеки классов и он был первым указан в файле.

Указание вызывающего приложения в управляемом проекте DLL

  1. Выберите проект C# или Visual Basic DLL в обозревателе решений. Щелкните значок Свойства, нажмите сочетание клавиш ALT+ВВОД или щелкните проект правой кнопкой мыши и выберите элемент Свойства.
  2. Убедитесь, что в поле Настройка в верхней части окна задано значение Отладка.
  3. В разделе Запустить действие
    • Для библиотек DLL .NET Framework выберите Запустить внешнюю программу и добавьте полный путь и имя вызывающего приложения.
    • Или выберите Запустить браузер с URL-адресом и введите URL-адрес локального приложения ASP.NET.
    • У библиотек DLL .NET Core для Visual Basic страница свойств Отладка отличается. Выберите Исполняемый файл из раскрывающегося списка Запуск, а затем добавьте полный путь и имя вызывающего приложения в поле Исполняемый файл.
    • Для библиотек DLL .NET Core страница свойств Отладка отличается. Выберите Исполняемый файл из раскрывающегося списка Запуск, а затем добавьте полный путь и имя вызывающего приложения в поле Исполняемый файл.

    C# Debug Properties window

  4. Добавьте необходимые аргументы командной строки в поле Аргументы командной строки или Аргументы приложения.
  5. Используйте Файл>Сохранить выбранные элементы или CTRL+S, чтобы сохранить изменения.
  6. Отладка из проекта DLL

    1. Задайте точки останова в проекте DLL.
    2. Щелкните проект DLL правой кнопкой мыши и выберите Назначить запускаемым проектом.
    3. Убедитесь, что в поле Конфигурация решений установлено значение Отладка. Нажмите клавишу F5, щелкните зеленую стрелку Запуск или выберите Отладка>Начать отладку.
    • Если отладка не достигает точек останова, убедитесь, что выходные данные библиотеки DLL (по умолчанию — папка Debug) — это расположение, которое вызывает вызывающее приложение.
    • Если вы хотите прервать выполнение кода в управляемом вызывающем приложении из собственной библиотеки DLL или наоборот, включите отладку в смешанном режиме.
    • В некоторых сценариях может потребоваться сообщить отладчику, где найти исходный код. Дополнительные сведения см. в разделе Использование страниц «Символы не загружены» или «Нет исходного кода».

    См. также

    • Отладка проектов DLL
    • Параметры проекта для конфигураций отладки C#
    • Параметры проекта для конфигурации отладки Visual Basic
    • Параметры проекта для конфигурации отладки C++

    Источник: learn.microsoft.com

    Команда RUNDLL32 – выполнить в командной строке функцию, экспортированную библиотекой DLL.

    Команда RUNDLL32 (RUNDLL для 16-разрядных Windows) изначально разрабатывалась корпорацией Microsoft для внутреннего использования в качестве отладочного программного обеспечения и предназначалась для вызова API-функций, экспортируемых библиотеками DLL. Но поскольку RunDLL32 оказалась удобным и простым средством, предоставляющим реализовать системные возможности общего характера, в настоящее время она включена в состав всех дистрибутивов Windows и широко используется в качестве стандартного компонента системы. С помощью утилиты rundll32 можно выполнить любую API-функцию, описанную в библиотеке, как будто эта функция вызывается из программы, написанной для использования данной функции.

    DLL — Dynamic Link Library — библиотека динамической компоновки, динамически подключаемая библиотека, которая может многократно использоваться разными программными приложениями. Описание библиотек и функций можно найти на сайте сети разработчиков Microsoft MSDN

    Хотя утилита rundll32.exe способна выполнять любые функции, результат такого выполнения зависит от самой вызываемой библиотеки. Если функция, например, выполняет какие-либо вычисления, основанные на содержимом оперативной памяти или регистров, подготовленных другими функциями, то результат ее выполнения будет непредсказуемым и на экране пользователь не увидит никаких результатов или увидит сообщение об ошибке. Но если вызывается функция, например, отображающая сведения об операционной системе, то на экране отобразится соответствующая информация.

    Формат командной строки RUNDLL32:

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

    Читайте также:
    Лизаонаир программа как работает

    Примеры использования RUNDLL32

    Одна из наиболее часто используемых библиотек – имеющаяся во всех версиях операционных систем (ОС) семейства Windows shell32.dll . Данная библиотека содержит несколько десятков функций, большинство из которых предназначено для получения информации о системе и системного управления.

    rundll32.exe shell32.dll,ShellAboutA – отобразить сведения о Windows. Выполняется функция ShellAboutA из библиотеки shell32.dll . Расширения файлов набирать не обязательно.

    Пример команды без расширений:

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

    Ошибка в shell32.dll
    Нет точки входа: shellAbouta

    Rundll32 – нет точки входа.

    Выполнение же команды RUNDLL32.EXE SHELL32.DLL,ShellAboutA закончится обычным отображением сведений о системе.

    rundll32 shell32,Control_RunDLL — открыть окно «Панель управления»;

    rundll32 shell32,Control_RunDLL desk.cpl — открыть окно «Свойства Экрана» панели управления. Как и в предыдущем примере, вызывается функция Control_RunDLL библиотеки shel32.dll , но ей передается параметр desk.cpl ;

    rundll32 shell32, RestartDialogEx — вызвать окно с запросом на перезагрузку Windows. Вместо функции RestartDialogEx можно использовать функцию RestartDialog однако, нужно учитывать тот факт, что последняя разрабатывалась для 16-битных Windows, и в тех случаях, когда в библиотеке присутствует функция с Ex , предпочтительнее использовать ее, во избежание проблем с совместимостью;

    Некоторые библиотеки могут содержать функцию для отображения подсказки по использованию:

    RUNDLL32 printui.dll,PrintUIEntry /? — отобразить справочную информацию по пользовательскому интерфейсу принтера.

    Нужно отметить, что возможности утилиты rundll32.exe нередко используются вирусописатели, в частности для вызова внедренных в легальный код вредоносных функций, использования поддельных библиотек, например, загружаемых из каталога временных файлов пользователя и т.п. Другими словами, файл библиотеки имеет вполне легальное имя, например то же shell32.dll но находится не в каталоге WindowsSystem32 и реализует не стандартные функции оболочки системы, а функции подготовленными авторами вредоносного программного обеспечения (ПО).

    Для получения информации об экспортируемых функциях библиотек сторонних производителей, можно использовать обычный текстовый редактор (Wordpad, например, позволяет читать текст в dll — файле и искать названия функций) или специализированное программное обеспечение, как например, DLL Export Viewer от Nirsoft.

    Пример списка экспортируемых shell32.dll функций в среде Windows 10, полученного с помощью программы DLL Export Viewer :

    DllExp.exe – просмотр списка экспортируемых функций библиотекой DLL.

    Полный список или только выбранные функции можно сохранить в текстовом формате.

    Сохранение списка экспортируемых функций библиотекой DLL в текстовом формате.

    Подсвеченная курсором функция RestartDialog может использоваться для запроса на перезагрузку компьютера.

    Естественно, экспортируемые библиотеками функции зависят от версии Windows и они не могут быть одинаковыми и в Windows XP, и в Windows 11. Рассматриваемые ниже примеры приведены для Windows 10/11

    Элементы Панели Управления через shell32.dll

    RUNDLL32 SHELL32, Control_RunDLL — открыть Панель Управления.

    Элементы Панели управления представляют из себя файлы с расширением .cpl, находящиеся в папке WindowsSystem32. Для открытия какого-либо элемента используется конструкция

    RUNDLL32 SHELL32, Control_RunDLL файл.cpl [параметры]

    RUNDLL32 SHELL32, Control_RunDLL appwiz.cpl — Программы и компоненты.

    RUNDLL32 SHELL32, Control_RunDLL bthprops.cpl — Настройка Bluetooth.

    RUNDLL32 SHELL32, Control_RunDLL desk.cpl — Настройки дисплея.

    RUNDLL32 SHELL32, Control_RunDLL FireWall.cpl — Настройки Брандмауэра.

    RUNDLL32 SHELL32, Control_RunDLL hdwwiz.cpl — Диспетчер устройств.

    RUNDLL32 SHELL32, Control_RunDLL inetcpl.cpl — Настройки Интернет Проводника.

    RUNDLL32 SHELL32, Control_RunDLL intl.cpl — Настройки языковых параметров.

    RUNDLL32 SHELL32, Control_RunDLL irprops.cpl — Настройки инфракрасной связи.

    RUNDLL32 SHELL32, Control_RunDLL joy.cpl — Настройка игровых устройств.

    RUNDLL32 SHELL32, Control_RunDLL main.cpl — Настройки мыши.

    RUNDLL32 SHELL32, Control_RunDLL mmsys.cpl — Настройки звука.

    RUNDLL32 SHELL32, Control_RunDLL ncpa.cpl — Настройки сети.

    RUNDLL32 SHELL32, Control_RunDLL powercfg.cpl — Электропитание

    RUNDLL32 SHELL32, Control_RunDLL sysdm.cpl — Свойства Системы.

    RUNDLL32 SHELL32, Control_RunDLL TabletPC.cpl — Перо и сенсорные устройства.

    RUNDLL32 SHELL32, Control_RunDLL telephon.cpl — Телефонное или модемное соединение.

    RUNDLL32 SHELL32, Control_RunDLL timedate.cpl — Дата и время.

    RUNDLL32 SHELL32, Control_RunDLL wscui.cpl — Центр безопасности и обслуживания.

    Для некоторых элементов Панели управления можно указать дополнительные параметры, например, открываемую вкладку:

    RUNDLL32 SHELL32, Control_RunDLL sysdm.cpl,,1 — Свойства Системы – вкладка Имя компьютера.

    RUNDLL32 SHELL32, Control_RunDLL sysdm.cpl,,2 — Свойства Системы – вкладка Оборудование.

    И так далее. Аналогично задаются вкладки для ”Настройки мыши” main.cpl,,0 – 2

    Две запятые – это отсутствующие параметры указателя (handle) родительского процесса и его иконки, которые нужны при программном вызове библиотеки .cpl и не нужны при запуске через Rundll32.

    Кроме функции Control_RunDLL, использующейся для вызова объектов .cpl, можно использовать и другие, экспортируемые библиотекой shell32.dll

    runDll32.exe shell32.dll,Options_RunDLL — Параметры Проводника — Общие

    runDll32.exe shell32.dll,Options_RunDLL 1 — Персонализация – Панель задач.

    runDll32.exe shell32.dll,Options_RunDLL 2 — Параметры Проводника — Поиск

    runDll32.exe shell32.dll,Options_RunDLL 3 — Персонализация – Пуск.

    runDll32.exe shell32.dll,Options_RunDLL 4 — Персонализация – Уведомления и действия.

    rundll32 shell32,OpenAs_RunDLL — Вызов окна выбора программы для открытия файла.

    rundll32 shell32,ShellAboutA [Text] – Отображение окна сведений о системе с необязательной пометкой Text в кодировке ANSI

    rundll32 shell32,ShellAboutW [Text] – Отображение окна сведений о системе с необязательной пометкой Text в кодировке Unicode. Функции, заканчивающиеся на A или W, отличаются только используемой кодировкой.

    rundll32 SHELL32.DLL,ShellExec_RunDLL explorer.exe %TEMP% — Открыть в Проводнике каталог временных файлов.

    Rundll32 Shell32.dll,SHHelpShortcuts_RunDLL Connect — Вызов окна подключения сетевого диска.

    Хочу добавить, что конструкция, многократно встречающаяся на просторах Интернета

    rundll32 shell32, SHExitWindowsEx 0…8 не работает, поскольку в shell32.dll современных ОС Windows такой функции нет.

    Отсутствие функции в библиотеке shell32.dll.

    И так же в современных ОС Windows не работают многие другие функции библиотек, описание которых вы найдете на просторах Интернета. При чем причиной может быть не только отсутствие нужной функции в библиотеке, но и изменение формата входных параметров для нее.

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

    Источник: ab57.ru

    Рейтинг
    ( Пока оценок нет )
    Загрузка ...
    EFT-Soft.ru