Пытаюсь вызвать message box из dll, учебное задание.
typedef int (WINAPI* _MessageBoxA)(HWND, LPTSTR, LPTSTR, UINT);
HMODULE user32 = (*LoadLibraryAPointer)("user32.dll");
PDWORD Address = (PDWORD)((LPBYTE)user32 + pIED->AddressOfFunctions);
PDWORD Name = (PDWORD)((LPBYTE)user32 + pIED->AddressOfNames);
PDWORD Ordinal = (PWORD)((LPBYTE)user32 + pIED->AddressOfNameOrdinals);
_LoadLibraryA LoadLibraryAPointer;
_MessageBoxA MessageBoxPointer;
for (int i = 0; i < pIED->AddressOfFunctions; i++)
{
if (!hashComparatorA(MESSAGE_BOX_HASH, (char*)user32 + Name[i]))
{
MessageBoxPointer = (user32 + Address[Ordinal[i]]);
break;
}
}
Возникает ошибка
error C2440: '=' : cannot convert from 'HMODULE' to '_MessageBoxA'
Странные у вас учебные задания. Ошибка возникает из-за того, что тип HMODULE, который определен как указатель на структуру struct {int unused;}
, несовместим с типом указателя на функцию. Эту ошибку можно убрать приведением типов, но в данном случае это не поможет заставить код работать, так как он выглядит в целом некорректным. Если предположить, что pIED - это указатель на структуру IMAGE_EXPORT_DIRECTORY, определенную в winnt.h (которая описывает раздел экспорта PE-файла), то адрес функции должен вычисляться так:
MessageBoxPointer = (_MessageBoxA)((char*)user32 + Address[i]);
Тип HMODULE нужно привести к указателю на один байт, чтобы адресная арифметика работала как ожидается. Переменная user32 содержит базовый адрес DLL, а Address[i] - относительный адрес функции, поэтому мы их складываем. Ordinal не нужен.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Пилю сайт, сначала был HTML шаблон, сейчас в процессе натяжки на WPВо время натяжки на CMS появилась промежуточная задача от заказчика, один из пунктов...
Есть корзина интернет магазина, в которой стараюсь сделать перерасчет по клику ценыВ случае 1 товара проблем особых нет, но в случае 2х и более...
пытаюсь стилизовать select, хочу сделать анимацию, что при клике на select и выборе нужного option, border-bottom будет менять цвет, а еще лучше это будет...