hgggb Ответов: 1

Использование shellexecuteex в библиотеке DLL


Я хочу позвонить в программу sdbinst.exe в ДЛЛ. Когда я компилирую программу в exe-файл, sdbinst.exe может начаться нормально. Но когда я компилирую его как dll, то sdbinst.exe программа будет тупиковой. Exe или dll они называют sdbinst.exe код точно такой же. Код взаимоблокировки-ShellExecuteEx. Я использовал OD, чтобы следовать ShellExecuteEx, а затем использовать в dll будет тупик в USER32.MsgWaitForMultipleObjects, я не знаю, что это вызывает. Надеюсь, кто-нибудь сможет мне помочь. Спасибо!

Что я уже пробовал:

Я пробовал использовать другие API вместо этого ShellExecuteEx, но в этом случае программа не будет работать

1 Ответов

Рейтинг:
2

Richard MacCutchan

Увидеть различные предупреждения о заторах на Функция ShellExecuteEx (Windows)[^].


KarstenK

Интересно, почему люди не читают документацию? RTFM ...

Richard MacCutchan

Главным образом потому, что мы делаем это для них.

hgggb

Спасибо, что ответили на этот вопрос за меня. RTFM описывает: "когда библиотеки DLL загружаются в ваш процесс, вы получаете блокировку, известную как загрузчик lock.....It важно, чтобы вы не вызывали ShellExecuteEx, удерживая блокировку загрузчика. "Это значит не вызывать ShellExecuteEx при загрузке библиотек DLL? (Примечание: Я не использую никаких частных блокировок в своей библиотеке dll.) Но почему это произошло notepad.exe успешно выполнить ShellExecuteEx внутри библиотеки dll? Еще раз спасибо за ваш ответ!

Richard MacCutchan

Извините, я не знаю ответа, но, очевидно, есть какая-то проблема с вызовом ShellExecute из библиотеки DLL.

hgggb

Ладно, спасибо.