нужен перебор символов от 0000 до 99999999 (Цикл от 0000 до 99999999. Что бы было 0001...0002... 9999 ..... 00001 .... 00002....99999 и так далее)
for (int i = 0; i < 9999999; i++) {
std::cout << std::setfill('0') << std::setw(4) << i << std::endl;
}
Как узнать размеры изображения в пикселях (N x N) не загружая его в память - C++ Builder - Киберфорум(http://www.cyberforum.ru/cpp-builder/thread1837218.html)Добрый день, форумчане. Как найти WINAPI адрес, из которого можно достать размер определённой картинки?
Посмотреть вложение 14961
Можно сохранять перезаписываемые команды и выполнять их после своего кодаВ общем, у меня есть функция, которая ставит JMP хук на указанный адрес. Проблема в том, что если поставить хук в разных файлах на один и тот же адрес, то хук перезаписывается и работает только в одном файле. Можно ли как то этого избежать?
Добрый день, форумчане. Как найти WINAPI адрес, из которого можно достать размер определённой картинки?
Посмотреть вложение 14961
И сразу же добивающий вопрос...
Как узнать, сколько файлов в определённой папке?
Посмотреть вложение 14962
Заранее спасибо за ответ:sensored:
int iCount = 0;
std::string sPatch = "D:\\ShP\\;
std::string sMask= sPatch+ "*.png";
void CheckFiles()
{
iCount = 0;
WIN32_FIND_DATA FindFileData;
HANDLE hFile = FindFirstFileA(szFullMask.c_str(), &FindFileData);
if (hFile != INVALID_HANDLE_VALUE)
{
do {
iCount ++;
} while (FindNextFile(hFile, &FindFileData) != 0);
FindClose(hFile);
}
}
printf("%i",iCount);
Как это примерно на C++ будет выглядеть? Чет не нашел ничего на эту тему в гугле.Можно сохранять перезаписываемые команды и выполнять их после своего кода
using proc_DialogCallBack = void(__stdcall *)();
class DialogHook {
public:
void registerDialogHook(void(__stdcall *func)()) {
// ...
}
void registerDialogCallBack(proc_DialogCallBack callback) {
// ...
callbacks.push_back(callback);
}
std::vector<proc_DialogCallBack> callbacks;
} *pDialog;
__declspec(naked) void __stdcall hook() {
std::for_each(pDialog->callbacks.begin(), pDialog->callbacks.end(), [](proc_DialogCallBack &callback) {
callback();
});
}
int main() {
pDialog->registerDialogHook(hook);
pDialog->registerDialogCallBack([]() {
std::cout << "callback1" << std::endl;
});
pDialog->registerDialogCallBack([]() {
std::cout << "callback2" << std::endl;
});
pDialog->registerDialogCallBack([]() {
std::cout << "callback3" << std::endl;
});
}
А если опкод будет другойНужно ещё учесть то, что хук другого плагина может не стоять. Можешь проверить это вот так: if (*reinterpret_cast<BYTE*>(0x021A1F) == 0xE9) // 0xE9 - опкод jmp
Как раз таки из разных плагиноввообще конфликтуют хуки из одного плагина, зачем вообще что то проверять через байты
так чевоже ты сразу не указал этоКак раз таки из разных плагинов
Помещает в переменную pPlayer указатель на структуру игрока с id'ом находящимся в переменной i.stRemotePlayer *pPlayer = SF->getSAMP()->getPlayers()->pRemotePlayer[ i ];
Проверяет ее валидность.if(!pPlayer) return;