 |
некая несовместимость функций в delphi XE3 - Общение разработчиков - Программирование для Perfect World, общение и обсуждене разработок |
10.10.2013, 23:07
|
#1
|
|
|
|
Пехотинец
|
 Регистрация: 20.08.2009
 Сообщений: 90
 Популярность: 173
 Сказал(а) спасибо: 14
Поблагодарили 26 раз(а) в 8 сообщениях
|
некая несовместимость функций в delphi XE3
решил перекинуть проекты с 7ой делфи на XE3 перекинул значит столкнулся с порой нюансов ну например что функция чтения памяти пследнюю переменную имеет теперь там типа SIZE_T а не DWORD ну да ладно это нюансы..
проблема заключается во многим известной функции поиска окон...
Код:
Form3.Combobox1.Clear;
Local_WID:=FindWindow(0,0);
While (Local_WID<>0) do
Begin
GetClassName(Local_WID,@buf,100);
if buf='ElementClient Window' then
begin
GetWindowThreadProcessId(Local_WID, @PID);
hProcess:=OpenProcess(PROCESS_ALL_ACCESS, False, PID);
flag := 0;
ReadProcessMemory(hProcess, Pointer($00C38B44), @flag, 1, BytesCount);
if flag = 1 then
begin
ReadProcessMemory(hProcess, Pointer(PW_GAMERUN_ADDR), @ipbuf, sizeof(ipbuf), BytesCount);
ReadProcessMemory(hProcess, Pointer(ipbuf+$34), @ipbuf, sizeof(ipbuf), BytesCount);
ReadProcessMemory (hProcess, Pointer(ipbuf+$634), @gtro, sizeof(gtro), BytesCount);
ReadProcessMemory(hProcess, Pointer(ipbuf+$688), @ipbuf, sizeof(ipbuf), BytesCount);
ReadProcessMemory(hProcess, Pointer(PW_BASE_ADDRESS), @lok, sizeof(lok), BytesCount);
ReadProcessMemory(hProcess, Pointer(lok+$4C8), @lok, sizeof(lok), BytesCount);
ReadProcessMemory(hProcess, Pointer(ipbuf+$0), @n1234, sizeof(n1234), BytesCount);
form3.ComboBox1.Items.Add(n1234);
hwndl[i1+1]:=Local_WID;
inc(i1);
closehandle(hProcess);
hProcess:=0;
end;
Application.ProcessMessages;
Local_WID:=GetNextWindow(Local_WID,GW_HWNDNEXT);
end;
ну вроде при компиляции в delphi 7 на WIN XP! работает нормально окна ищет...
а вот delphi XE3 компилит так что XP окна не видит...как быть?
не знаю как правильно выдать запрос гуглу ибо там вообще относительно delphi xe3 найти что то сложно..
небольшое наблюдение...почему то окно пв в XP не имеет PID процесса...а в вин 7 имеет...
Последний раз редактировалось tianddu; 10.10.2013 в 23:09.
|
|
|
10.10.2013, 23:32
|
#2
|
|
|
|
Рыцарь-капитан
|
 Регистрация: 14.06.2012
 Сообщений: 511
 Популярность: 7566
 Сказал(а) спасибо: 4
Поблагодарили 181 раз(а) в 88 сообщениях
|
Re: некая несовместимость функций в delphi XE3
и не увидишь, я сам не понял в чем прикол, но чтение с памяти на XP в XE3 не поддерживается. последняя рабочая если не ошибаюсь просто XE. Не могу утверждать этого в XE4 и XE5 так как не пользовался ими. А XE2 и XE3 точно не поддерживаются
________________
Хотите как то отблагодарить за помощь?
Не стесняйтесь нажимайте "Спасибо" Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Делаю программы на заказ, по всем вопросам в скайп: Ginrey2
|
|
|
10.10.2013, 23:52
|
#3
|
|
|
|
Пехотинец
|
 Регистрация: 20.08.2009
 Сообщений: 90
 Популярность: 173
 Сказал(а) спасибо: 14
Поблагодарили 26 раз(а) в 8 сообщениях
|
Re: некая несовместимость функций в delphi XE3
почитал сейчас...пишут что может прокатить с GetClassNameW вместо GetClassName завтра будет комп с XP отпишусь работает или нет...
|
|
|
11.10.2013, 00:13
|
#4
|
|
|
|
Разведчик
|
 Регистрация: 23.06.2012
 Сообщений: 43
 Популярность: 427
 Сказал(а) спасибо: 18
Поблагодарили 59 раз(а) в 35 сообщениях
|
Re: некая несовместимость функций в delphi XE3
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
|
|
|
11.10.2013, 00:29
|
#5
|
|
|
|
Рыцарь-капитан
|
 Регистрация: 14.06.2012
 Сообщений: 511
 Популярность: 7566
 Сказал(а) спасибо: 4
Поблагодарили 181 раз(а) в 88 сообщениях
|
Re: некая несовместимость функций в delphi XE3
tianddu, так Class окна вроде бы и так нормально находит
________________
Хотите как то отблагодарить за помощь?
Не стесняйтесь нажимайте "Спасибо" Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Делаю программы на заказ, по всем вопросам в скайп: Ginrey2
|
|
|
11.10.2013, 01:48
|
#6
|
|
|
|
Пехотинец
|
 Регистрация: 02.08.2009
 Сообщений: 57
 Популярность: 417
 Сказал(а) спасибо: 12
Поблагодарили 1 раз в 1 сообщении
|
Re: некая несовместимость функций в delphi XE3
XE2 все работает) и окна ищет и процессы(кстати окна прошлый век, зачем?))
Проблема в W на конце функций, вызывайте или без буквы или с A
ps,
A=Ansi(xp и ниже)
W=Wide(Vista и выше, он же юникод.)
Без буквы = выбор стандартного для ОС(т.е. программа сама решит что ей звать W или A).
|
|
|
11.10.2013, 08:31
|
#7
|
|
|
|
Пехотинец
|
 Регистрация: 20.08.2009
 Сообщений: 90
 Популярность: 173
 Сказал(а) спасибо: 14
Поблагодарили 26 раз(а) в 8 сообщениях
|
Re: некая несовместимость функций в delphi XE3
|
|
|
11.10.2013, 09:28
|
#8
|
|
|
|
Пехотинец
|
 Регистрация: 17.09.2010
 Сообщений: 66
 Популярность: 701
 Сказал(а) спасибо: 32
Поблагодарили 63 раз(а) в 46 сообщениях
|
Re: некая несовместимость функций в delphi XE3
Код:
...........................
HoldString: PChar;
PID: Cardinal;
...........................
GetMem(HoldString, 1024);
try
if (GetClassName(hWindow, HoldString, 1023) > 0) then
if StrComp(HoldString, 'ElementClient Window') = 0 then
// Нашли окно клиента
begin
GetWindowThreadProcessId(hWindow, @PID);
if GetWindowText(hWindow, HoldString, 1023) > 0 then
frmMain.cbProgram.Items.Add(String(HoldString))
.......................
по-старинке, но работает
год на ХЕ2. работает от ХР до 8ки
________________
© Mel
|
|
|
12.10.2013, 17:07
|
#9
|
|
|
|
Пехотинец
|
 Регистрация: 20.08.2009
 Сообщений: 90
 Популярность: 173
 Сказал(а) спасибо: 14
Поблагодарили 26 раз(а) в 8 сообщениях
|
Re: некая несовместимость функций в delphi XE3
 |
Цитата: |
 |
|
|
|
|
|
|
|
|
по-старинке, но работает
год на ХЕ2. работает от ХР до 8ки
|
|
 |
|
 |
|
XE3 не знает что такое StrComp ))
да и проблема будет с тем же GetClassName что то в нем не так...
Добавлено через 2 часа 15 минут
может у меня переменная buf не того типа...
Последний раз редактировалось tianddu; 12.10.2013 в 19:22.
Причина: Добавлено сообщение
|
|
|
12.10.2013, 21:43
|
#10
|
|
|
|
Рыцарь
|
 Регистрация: 19.11.2008
 Сообщений: 385
 Популярность: 13343
 Сказал(а) спасибо: 124
Поблагодарили 217 раз(а) в 109 сообщениях
|
Re: некая несовместимость функций в delphi XE3
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Последний раз редактировалось Sirioga; 12.10.2013 в 21:47.
Причина: лаги форума
|
|
|
12.10.2013, 22:03
|
#11
|
|
|
|
Пехотинец
|
 Регистрация: 20.08.2009
 Сообщений: 90
 Популярность: 173
 Сказал(а) спасибо: 14
Поблагодарили 26 раз(а) в 8 сообщениях
|
Re: некая несовместимость функций в delphi XE3
|
|
|
14.10.2013, 18:05
|
#12
|
|
|
|
Рыцарь-капитан
|
 Регистрация: 14.06.2012
 Сообщений: 511
 Популярность: 7566
 Сказал(а) спасибо: 4
Поблагодарили 181 раз(а) в 88 сообщениях
|
Re: некая несовместимость функций в delphi XE3
так че нашли альтернативу? чтобы поиск работал и на XP
________________
Хотите как то отблагодарить за помощь?
Не стесняйтесь нажимайте "Спасибо" Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Делаю программы на заказ, по всем вопросам в скайп: Ginrey2
|
|
|
14.10.2013, 19:13
|
#13
|
|
|
|
Пехотинец
|
 Регистрация: 20.08.2009
 Сообщений: 90
 Популярность: 173
 Сказал(а) спасибо: 14
Поблагодарили 26 раз(а) в 8 сообщениях
|
Re: некая несовместимость функций в delphi XE3
нет.. заметил особенность... на delphi 7 всегда hprocess генерируется с числом 380.. в delphi XE и выше генерируется каждый раз разные цифры )
не работает конкретно функция GetClassName(Local_WID,@buf,100); неправильно копирует название окна... переехал на delphi 2010
|
|
|
14.10.2013, 19:37
|
#14
|
|
|
|
Рыцарь-капитан
|
 Регистрация: 14.06.2012
 Сообщений: 511
 Популярность: 7566
 Сказал(а) спасибо: 4
Поблагодарили 181 раз(а) в 88 сообщениях
|
Re: некая несовместимость функций в delphi XE3
о даже так. надо глянуть что в ней изменилось
________________
Хотите как то отблагодарить за помощь?
Не стесняйтесь нажимайте "Спасибо" Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Делаю программы на заказ, по всем вопросам в скайп: Ginrey2
|
|
|
14.10.2013, 22:37
|
#15
|
|
|
|
Рыцарь
|
 Регистрация: 19.11.2008
 Сообщений: 385
 Популярность: 13343
 Сказал(а) спасибо: 124
Поблагодарили 217 раз(а) в 109 сообщениях
|
Re: некая несовместимость функций в delphi XE3
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 01:22.
|
 |