Используя документацию 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), но это очень сбивает с толку.
Любая справка значительно ценилась бы. Я также хотел бы узнать больше, таким образом, любые ссылки (книга, ссылки на сайт, и т.д.) также будут большими!
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"