Top.Mail.Ru
Ответы

Помогите с библиотекой TCHAR.h c++

Я подключил инклюд <tchar.h>
в туториале человек писал

но у меня это не получается
и я заменил код на этот

мне почемуто не выдает результат который должен
подскажите это из за того что я изменил код или из за каких-то других строк кода
код GetModuleBaseAddress :

1234567891011121314151617181920
 DWORD GetModuleBaseAddress(TCHAR* lpszModuleName, DWORD pID) { 
    DWORD dwModuleBaseAddress = 0; 
    HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, pID); // make snapshot of all modules within process 
    MODULEENTRY32 ModuleEntry32 = { 0 }; 
    ModuleEntry32.dwSize = sizeof(MODULEENTRY32); 
 
    if (Module32First(hSnapshot, &ModuleEntry32)) //store first Module in ModuleEntry32 
    { 
        do { 
            if (_tcscmp(ModuleEntry32.szModule, lpszModuleName) == 0) // if Found Module matches Module we look for -> done! 
            { 
                dwModuleBaseAddress = (DWORD)ModuleEntry32.modBaseAddr; 
                break; 
            } 
        } while (Module32Next(hSnapshot, &ModuleEntry32)); // go through Module entries in Snapshot and store in ModuleEntry32 
 
 
    } 
    CloseHandle(hSnapshot); 
    return dwModuleBaseAddress; 
По дате
По рейтингу
Аватар пользователя
Мудрец

Ставишь отладку на строку
if (_tcscmp
и смотришь - идёт перечисление модулей или не идёт. Если вообще не идёт - косяк в том месте, где открываешь процесс. Если идёт - косяк в том, что неправильно указал имя dll-ки.

Касательно tchar - он включается не для того, чтобы ему явным образом пихать Lстроки, а для того, чтобы их запаковывать в макросы, работающие и с короткими, и с длинными строками.
TCHAR FirstModule[] = _T("client.dll");

Аватар пользователя
Ученик

спасибо

Аватар пользователя
Мудрец

Судя по DWORD и MODULEENTRY32 код работает только для 32 битных систем.



Видео по теме