Как использовать Rundll32 для выполнения Функции DLL?

Используя документацию ShellExecute как ссылка:

Я выполняю следование из командной строки:

C:\>RUNDLL32.EXE SHELL32.DLL,ShellExecute handle,"open","C:\Documents and Settings\admin\Desktop\tmp",NULL,NULL,SW_SHOWNORMAL

Это приводит к ошибке исключения.

Я не знаю то, что это означает:

HINSTANCE ShellExecute(
  __in_opt  HWND hwnd,
  __in_opt  LPCTSTR lpOperation,
  __in      LPCTSTR lpFile,
  __in_opt  LPCTSTR lpParameters,
  __in_opt  LPCTSTR lpDirectory,
  __in      INT nShowCmd
);

Но в описании, упоминаются дескриптор (HWND) и указатель на завершенную пустым указателем строку (LPCTSTR), но это очень сбивает с толку.

Любая справка значительно ценилась бы. Я также хотел бы узнать больше, таким образом, любые ссылки (книга, ссылки на сайт, и т.д.) также будут большими!

28
задан Matteo Italia 15 March 2014 в 16:00
поделиться

1 ответ

Rundll32 поддерживает только запуск экспорта DLL со следующей сигнатурой:

void CALLBACK
  EntryPoint(HWND hwnd, HINSTANCE hinst, LPSTR lpszCmdLine, int nCmdShow);

Он не поддерживает запуск произвольных точек входа. Поскольку ShellExecute не имеет такой сигнатуры, очевидно, что произойдут плохие вещи.

INFO: Windows Rundll и интерфейс Rundll32 содержит больше информации об интерфейсе rundll32.

Если вы хотите выполнить эквивалент ShellExecute из командной строки, просто используйте start:

C:\>start "C:\Documents and Settings\admin\Desktop\tmp"
26
ответ дан 28 November 2019 в 03:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: