(Не)правильный вызов из dll
В следующем коде я пытался вызвать диалог "Запуск программы" (которое также вызывается через Меню Пуск - Выполнить... или сочетание клавиш Win+R).
Возникает ошибка (можете сами попробовать).
Может кто знает другой способ или этот, но правильно.
[COLOR=blue]
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
HMODULE hMyMod = NULL;
typedef INT_PTR (*MYPROC)(HANDLE, HICON, UINT, LPCTSTR, LPCTSTR, UINT);
MYPROC fnRunApp;
hMyMod = LoadLibrary("Shell32.dll");
fnRunApp = (MYPROC)GetProcAddress(hMyMod, (LPCSTR)0x3d);
fnRunApp(0, 0, 0, 0, 0, 0);
FreeLibrary(hMyMod);
return 0;
}
[/COLOR]
Спасибо заранее.
P.S. Если нужен проект - он здесь
Вот такой exception мне выдает .NET на функции FreeLibrary. Может быть, ты указал неправильное число параметров (или неправильный тип). А откуда ты узнал номер функции, параметры?
Прошу прощения, exception не на функции FreeLibrary, а по выходу из fnRunApp.
Цитата:
Originally posted by Jaymz Void
Прошу прощения, exception не на функции FreeLibrary, а по выходу из fnRunApp.
Прошу прощения, exception не на функции FreeLibrary, а по выходу из fnRunApp.
Номер функции взял при анализе taskman.exe, количество и размер(не тип) параметров - там же, и еще функция, возможно, возвращает 4-хбайтовое значение. Параметры вроде подобрал, но кроме 3-го:
[COLOR=blue]
func(v1, v2, v3, v4, v5, v6);
v1 хэндл окна
v2 хэндл иконки
v3 ?????
v4 Заголовок
v5 Описание
v6 Дополнит. параметры (кол-во кнопок, ...)
[/COLOR]
typedef INT_PTR (WINAPI* MYPROC)(HANDLE, HICON, UINT, LPCTSTR, LPCTSTR, UINT);