Rundll32.exe не работает должным образом при попытке вызвать функцию в пользовательской DLL.C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Rundll32.exe не работает должным образом при попытке вызвать функцию в пользовательской DLL.

Сообщение Anonymous »


Я учусь писать на C++, чтобы лучше понять, как работает DLL и как функции вызываются из DLL. Я пытаюсь запустить calc.exe из моей DLL, используя rundll32.exe. В моем коде (ниже) при выполнении rundll32.exe с моей скомпилированной DLL в качестве аргумента я ожидаю, что spwncalc() будет вызван из DLLMain()< /code> (независимо от того, какую функцию/порядковый номер экспорта я передаю через rundll32.exe) и calc.exe для запуска. Я также пытался вызвать функцию spwncalc() посредством выполнения rundll32.exe, но не могу заставить calc.exe выполнить выполнить.

#include недействительный spwncalc() { WinExec("C:\\Windows\\System32\\calc.exe", 1); } BOOL WINAPI DllMain (HANDLE hDll, DWORD dwReason, LPVOID lpReserved){ переключатель (dwReason) { случай DLL_PROCESS_ATTACH: spwnкальк(); перерыв; случай DLL_PROCESS_DETACH: перерыв; случай DLL_THREAD_ATTACH: перерыв; случай DLL_THREAD_DETACH: перерыв; } вернуть ИСТИНА; } Как я могу изменить свой код, чтобы при запуске rundll32.execalc_spwn.dll,spwncalc он выполнял мою функцию? Кроме того, есть ли способ заставить его загружаться, когда dll загружается через rundll32.exe?
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»