Программа не работает на windows xp , хотя на wondows 7 никаких проблем нет . Персонажа не ищет вместо него символы и соответственно все остальное тоже не работает . В интернете нет ни 1 похожей темы из за чего это может быть . Delphi XE2 .
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов
Кошельки: WMZ - Z276844220882; WMR - R231028582939; WMU - U394136909210; ЯД - 410011494605270.
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов
Кошельки: WMZ - Z276844220882; WMR - R231028582939; WMU - U394136909210; ЯД - 410011494605270.
Я не знаю сервер элита функция на всех одна и та же . У 2 человек на х32 Windows Xp не идет
Код:
procedure FindClientPW;
var
Wnd:THandle;
Hndl,Nick,Cl:array[0..255] of Char;
ibuf,BC,hProcess:size_t;
i:Integer;
const
BA=$00A571E0;
begin
i:=0;
Wnd:=FindWindow(nil,nil);
while Wnd<>0 do
begin
GetClassName(Wnd,Cl,100);
if Cl='ElementClient Window' then
begin
GetWindowText(Wnd,Hndl,SizeOf(Hndl));
GetWindowThreadProcessId(Wnd,@FID[i]);
hProcess:=OpenProcess(PROCESS_ALL_ACCESS,False,FID[i]);
ReadProcessMemory(hProcess,ptr(BA),@ibuf,sizeof(ibuf),BC);
ReadProcessMemory(hProcess,ptr(ibuf+$1C),@ibuf,sizeof(ibuf),BC);
ReadProcessMemory(hProcess,ptr(ibuf+$34),@ibuf,sizeof(ibuf),BC);
ReadProcessMemory(hProcess,ptr(ibuf+$66C),@ibuf,sizeof(ibuf),BC);
ReadProcessMemory(hProcess,ptr(ibuf),@Nick,sizeof(Nick),BC);
Form2.sComboBox1.Items.Add(Nick);
inc(i);
end;
Wnd:=GetNextWindow(Wnd,GW_HWNDNEXT);
Application.ProcessMessages;
end;
CloseHandle(hProcess);
end;
Причем если я даже тупо делаю программу по нажатия на кнопку и вывод ника в combobox всеравно иероглифы идут вместо ника
Добавлено через 1 час 0 минут
Решил протестировать кинул код на delphi 7 поменял пару значений и у меня тоже стал находить не ник , а иероглифы . А у друзей на ХР наоборот начал находить ник . Они говорят , что программы смертига у них идут. В чем проблема?
Последний раз редактировалось STIL23; 26.07.2012 в 22:38.
Причина: Добавлено сообщение
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов
Кошельки: WMZ - Z276844220882; WMR - R231028582939; WMU - U394136909210; ЯД - 410011494605270.
А может, просто проблема в шрифте? Попробуй ID перса вместо имени в выборе клиента выводить. Выведи поэтапно при каждом следующем получении данных MsgBox и посмотри, что получает. Или как то по другому сохрани или брекпоинт поставь при MemoryRead - тут все зависит от компилятора, с ним я не знаком. Но можно же отследить все, что он тащит с клиента.
А может, просто проблема в шрифте? Попробуй ID перса вместо имени в выборе клиента выводить. Выведи поэтапно при каждом следующем получении данных MsgBox и посмотри, что получает. Или как то по другому сохрани или брекпоинт поставь при MemoryRead - тут все зависит от компилятора, с ним я не знаком. Но можно же отследить все, что он тащит с клиента.
Шрифт точно нет потому что делал простую программу по поиску ,а там все обычное
Шрифт точно нет потому что делал простую программу по поиску ,а там все обычное
У тебя выходят кракозябры вместо имени? Выходят. Если больше никаких идей нет, то проверяй, что получают переменные при чтении памяти. Сверяй эти данные в любой программе, хоть в артмани. Переведи имя в цифровой вариант и посмотри, что там у тебя получается, а потом уже думай.
Давно где то с такой хренью сталкивался, когда в винде подходящего шрифта просто не было, и прога гнала квадратики.
Количество квадратиков с количеством символов имени совпадает?
Последний раз редактировалось sumikot; 27.07.2012 в 19:03.
У тебя выходят кракозябры вместо имени? Выходят. Если больше никаких идей нет, то проверяй, что получают переменные при чтении памяти. Сверяй эти данные в любой программе, хоть в артмани. Переведи имя в цифровой вариант и посмотри, что там у тебя получается, а потом уже думай.
Давно где то с такой хренью сталкивался, когда в винде подходящего шрифта просто не было, и прога гнала квадратики.
Количество квадратиков с количеством символов имени совпадает?
Нет количество не совпадает если беру другие функции поиска окна , то ищет окно но как только касается чтении ник квадраты сразу
Насколько я понял, в разных условиях испытывается один и тот же скомпилированный файл? Я не знаю, как хранит символьные данные паскаль, но если квадратиков в 2 раза больше букв имени, то вывод происходит в анси. Попробуй принудительно преобразовать из юникода, что ли. хз. Раз в других условиях читает нормально, дело не в алгоритме, а в кодировке. В паскале жестко можно задать формат char ? Я бы давно уже проверил получаемое значение побайтно и тогда бы были мысли.
Насколько я понял, в разных условиях испытывается один и тот же скомпилированный файл? Я не знаю, как хранит символьные данные паскаль, но если квадратиков в 2 раза больше букв имени, то вывод происходит в анси. Попробуй принудительно преобразовать из юникода, что ли. хз. Раз в других условиях читает нормально, дело не в алгоритме, а в кодировке. В паскале жестко можно задать формат char ? Я бы давно уже проверил получаемое значение побайтно и тогда бы были мысли.
Я делал разные проекты с разными способами поиска, но всеравно на моем компьютере программа работает , а на windows xp нет. Окно ищет , а внедряться не хочет
Добавлено через 1 час 6 минут
Всем спасибо . Намучался дофига перустановил винду, 3 раза delphi xe2 . В итоге плюнул перешел на delphi xe и ура работает . Мне кажется была проблема в типе переменных size_t и dword
Последний раз редактировалось STIL23; 27.07.2012 в 22:39.
Причина: Добавлено сообщение
Странный ты, у меня на делбфе ХЕ2 всё работает на х86 и х64.
________________
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов
Кошельки: WMZ - Z276844220882; WMR - R231028582939; WMU - U394136909210; ЯД - 410011494605270.