|
не закрываются блоки и не начинается новая функция - Общение разработчиков - Программирование для Perfect World, общение и обсуждене разработок |
18.05.2012, 23:20
|
#1
|
|
|
|
Пехотинец
|
Регистрация: 29.05.2010
Сообщений: 58
Популярность: 10
Сказал(а) спасибо: 80
Поблагодарили 0 раз(а) в 0 сообщениях
|
не закрываются блоки и не начинается новая функция
вот такая ошибка:
[Error] Unit1.pas(413): Record, object or class type required
[Error] Unit1.pas(415): EXCEPT or FINALLY expected
не закрываются блоки и не начинается новая функция
я открыл 6 блоков,а закрыл только 3..закрываю следующие выводится ошибка,
блоки закрывал подряд:
вот таких 6 блоков
Код:
begin
t:=FindWindow(nil,Pchar(edit1.text));
if t <> 0
then
begin
unfreeze_flag:=1;
unfreeze:=$B0;
GetWindowThreadProcessId(t,@ProcessId);
hProcess:=OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId);
WriteProcessMemory(hProcess, ptr($00420204), @unfreeze, 1, BC);
WriteProcessMemory(hProcess, ptr($00420205), @unfreeze_flag, 1, BC);
GetWindowThreadProcessId(t,@ProcessId);
hProcess := OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId);
If (t > 0) then
try
ReadProcessMemory (hProcess, Pointer($A571E0), @BUM, sizeof(BUM), NoB);
ReadProcessMemory (hProcess, Pointer(BUM+$1C), @BUM, sizeof(BUM), NoB);
ReadProcessMemory (hProcess, Pointer(BUM+$34), @BUM, sizeof(BUM), NoB);
ReadProcessMemory (hProcess, Pointer(BUM+$494), @WHP, sizeof(WHP), NoB);
HP := Integer(WHP);
ReadProcessMemory (hProcess, Pointer(BUM+$4DC), @WHPMax, sizeof(WHPMax), NoB);
HPMax := Integer(WHPMax);
ReadProcessMemory (hProcess, Pointer(BUM+$498), @WMP, sizeof(WMP), NoB);
MP := Integer(WMP);
ReadProcessMemory (hProcess, Pointer(BUM+$4E0), @WMPMax, sizeof(WMPMax), NoB);
MPMax := Integer(WMPMax);
ReadProcessMemory (hProcess, Pointer(BUM+$040), @wkz, sizeof(wkz), NoB);
ReadProcessMemory (hProcess, Pointer(BUM+$03C), @wky, sizeof(wky), NoB);
ReadProcessMemory (hProcess, Pointer(BUM+$044), @wkx, sizeof(wkx), NoB);
y := FloatToStr((wky + 4000) / 10); y := Copy(y, 1, Pos(',', y) - 1);
x := FloatToStr((wkx + 5500) / 10); x := Copy(x, 1, Pos(',', x) - 1);
Z := FloatToStr((wkz) / 10); Z := Copy(Z, 1, Pos(',', Z) - 1);
Edit1.text := IntToStr(HP);
Edit2.text := IntToStr(MP);
Gauge1.Progress := round(HP * 100 / HPMax);
Gauge2.Progress := round(MP * 100 / MPMax);
Edit12.text := x + ' ' + y + ' ' + z;
PostMessage(t,WM_KEYDOWN,$00000032,$00020001);
PostMessage(t,WM_KEYDOWN,$00000033,$00020001);
if (Gauge6.Progress ) < 60
then
PostMessage (t, WM_KEYDOWN, VK_F3, 0) ;
exept
end;
end;
end;
если один такой блок,то всё работает,а если 6,то нет.. все блоки в timer е
может их надо как-то разделить,но я не знаю,как
Последний раз редактировалось Meg(0); 19.05.2012 в 00:04.
|
|
|
19.05.2012, 00:09
|
#2
|
|
|
|
Разведчик
|
Регистрация: 07.10.2010
Сообщений: 21
Популярность: 90
Сказал(а) спасибо: 14
Поблагодарили 15 раз(а) в 14 сообщениях
|
Re: не закрываются блоки и не начинается новая функция
Код:
try
.............
finally
......
end;
Код:
Выбери что нибудь одно
WriteProcessMemory(hProcess, ptr($00420204), @unfreeze, 1, BC);
WriteProcessMemory(hProcess, ptr($00420205), @unfreeze_flag, 1, BC);
зачем тебе в таймере 6 блоков???
запусти уж в потоке один блок
________________
если я не ошибаюсь, а могу и ошибаться ...
too many actual parameters
Последний раз редактировалось zaparca; 19.05.2012 в 00:12.
|
|
|
19.05.2012, 00:34
|
#3
|
|
|
|
Пехотинец
|
Регистрация: 29.05.2010
Сообщений: 58
Популярность: 10
Сказал(а) спасибо: 80
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: не закрываются блоки и не начинается новая функция
zaparca,
а куда писать fynally?
поубирал все begin ы тоесть в один поток всё запустил
вот такой код получается:
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
v:=FindWindow(nil,Pchar(edit1.text));
if v <> 0
then
unfreeze_flag:=1;
unfreeze:=$B0;
GetWindowThreadProcessId(v,@ProcessId);
hProcess:=OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId);
WriteProcessMemory(hProcess, ptr($00420204), @unfreeze, 1, BC);
WriteProcessMemory(hProcess, ptr($00420205), @unfreeze_flag, 1, BC);
GetWindowThreadProcessId(v,@ProcessId);
hProcess := OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId);
If (v > 0) then
try
ReadProcessMemory (hProcess, Pointer($A571E0), @BUM, sizeof(BUM), NoB);
ReadProcessMemory (hProcess, Pointer(BUM+$1C), @BUM, sizeof(BUM), NoB);
ReadProcessMemory (hProcess, Pointer(BUM+$34), @BUM, sizeof(BUM), NoB);
ReadProcessMemory (hProcess, Pointer(BUM+$494), @WHP, sizeof(WHP), NoB);
HP := Integer(WHP);
ReadProcessMemory (hProcess, Pointer(BUM+$4DC), @WHPMax, sizeof(WHPMax), NoB);
HPMax := Integer(WHPMax);
ReadProcessMemory (hProcess, Pointer(BUM+$498), @WMP, sizeof(WMP), NoB);
MP := Integer(WMP);
ReadProcessMemory (hProcess, Pointer(BUM+$4E0), @WMPMax, sizeof(WMPMax), NoB);
MPMax := Integer(WMPMax);
ReadProcessMemory (hProcess, Pointer(BUM+$040), @wkz, sizeof(wkz), NoB);
ReadProcessMemory (hProcess, Pointer(BUM+$03C), @wky, sizeof(wky), NoB);
ReadProcessMemory (hProcess, Pointer(BUM+$044), @wkx, sizeof(wkx), NoB);
y := FloatToStr((wky + 4000) / 10); y := Copy(y, 1, Pos(',', y) - 1);
x := FloatToStr((wkx + 5500) / 10); x := Copy(x, 1, Pos(',', x) - 1);
Z := FloatToStr((wkz) / 10); Z := Copy(Z, 1, Pos(',', Z) - 1);
Edit1.text := IntToStr(HP);
Edit2.text := IntToStr(MP);
Gauge1.Progress := round(HP * 100 / HPMax);
Gauge2.Progress := round(MP * 100 / MPMax);
label4.caption := x + ' ' + y + ' ' + z;
PostMessage(v,WM_KEYDOWN,$00000032,$00020001);
PostMessage(v,WM_KEYDOWN,$00000033,$00020001);
if (Gauge1.Progress ) < 60
then
PostMessage (v, WM_KEYDOWN, VK_F3, 0) ;
q:=FindWindow(nil,Pchar(edit1.text));
if q <> 0
then
unfreeze_flag:=1;
unfreeze:=$B0;
GetWindowThreadProcessId(q,@ProcessId);
hProcess:=OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId);
WriteProcessMemory(hProcess, ptr($00420204), @unfreeze, 1, BC);
WriteProcessMemory(hProcess, ptr($00420205), @unfreeze_flag, 1, BC);
GetWindowThreadProcessId(q,@ProcessId);
hProcess := OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId);
If (q > 0) then
try
ReadProcessMemory (hProcess, Pointer($A571E0), @BUM, sizeof(BUM), NoB);
ReadProcessMemory (hProcess, Pointer(BUM+$1C), @BUM, sizeof(BUM), NoB);
ReadProcessMemory (hProcess, Pointer(BUM+$34), @BUM, sizeof(BUM), NoB);
ReadProcessMemory (hProcess, Pointer(BUM+$494), @WHP, sizeof(WHP), NoB);
HP := Integer(WHP);
ReadProcessMemory (hProcess, Pointer(BUM+$4DC), @WHPMax, sizeof(WHPMax), NoB);
HPMax := Integer(WHPMax);
ReadProcessMemory (hProcess, Pointer(BUM+$498), @WMP, sizeof(WMP), NoB);
MP := Integer(WMP);
ReadProcessMemory (hProcess, Pointer(BUM+$4E0), @WMPMax, sizeof(WMPMax), NoB);
MPMax := Integer(WMPMax);
ReadProcessMemory (hProcess, Pointer(BUM+$040), @wkz, sizeof(wkz), NoB);
ReadProcessMemory (hProcess, Pointer(BUM+$03C), @wky, sizeof(wky), NoB);
ReadProcessMemory (hProcess, Pointer(BUM+$044), @wkx, sizeof(wkx), NoB);
y := FloatToStr((wky + 4000) / 10); y := Copy(y, 1, Pos(',', y) - 1);
x := FloatToStr((wkx + 5500) / 10); x := Copy(x, 1, Pos(',', x) - 1);
Z := FloatToStr((wkz) / 10); Z := Copy(Z, 1, Pos(',', Z) - 1);
Edit2.text := IntToStr(HP);
Edit3.text := IntToStr(MP);
Gauge2.Progress := round(HP * 100 / HPMax);
Gauge3.Progress := round(MP * 100 / MPMax);
label5.caption := x + ' ' + y + ' ' + z;
PostMessage(q,WM_KEYDOWN,$00000032,$00020001);
PostMessage(q,WM_KEYDOWN,$00000033,$00020001);
if (Gauge2.Progress ) < 60
then
PostMessage (v, WM_KEYDOWN, VK_F3, 0) ;
w:=FindWindow(nil,Pchar(edit1.text));
if w <> 0
then
unfreeze_flag:=1;
unfreeze:=$B0;
GetWindowThreadProcessId(w,@ProcessId);
hProcess:=OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId);
WriteProcessMemory(hProcess, ptr($00420204), @unfreeze, 1, BC);
WriteProcessMemory(hProcess, ptr($00420205), @unfreeze_flag, 1, BC);
GetWindowThreadProcessId(w,@ProcessId);
hProcess := OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId);
If (w > 0) then
try
ReadProcessMemory (hProcess, Pointer($A571E0), @BUM, sizeof(BUM), NoB);
ReadProcessMemory (hProcess, Pointer(BUM+$1C), @BUM, sizeof(BUM), NoB);
ReadProcessMemory (hProcess, Pointer(BUM+$34), @BUM, sizeof(BUM), NoB);
ReadProcessMemory (hProcess, Pointer(BUM+$494), @WHP, sizeof(WHP), NoB);
HP := Integer(WHP);
ReadProcessMemory (hProcess, Pointer(BUM+$4DC), @WHPMax, sizeof(WHPMax), NoB);
HPMax := Integer(WHPMax);
ReadProcessMemory (hProcess, Pointer(BUM+$498), @WMP, sizeof(WMP), NoB);
MP := Integer(WMP);
ReadProcessMemory (hProcess, Pointer(BUM+$4E0), @WMPMax, sizeof(WMPMax), NoB);
MPMax := Integer(WMPMax);
ReadProcessMemory (hProcess, Pointer(BUM+$040), @wkz, sizeof(wkz), NoB);
ReadProcessMemory (hProcess, Pointer(BUM+$03C), @wky, sizeof(wky), NoB);
ReadProcessMemory (hProcess, Pointer(BUM+$044), @wkx, sizeof(wkx), NoB);
y := FloatToStr((wky + 4000) / 10); y := Copy(y, 1, Pos(',', y) - 1);
x := FloatToStr((wkx + 5500) / 10); x := Copy(x, 1, Pos(',', x) - 1);
Z := FloatToStr((wkz) / 10); Z := Copy(Z, 1, Pos(',', Z) - 1);
Edit1.text := IntToStr(HP);
Edit2.text := IntToStr(MP);
Gauge3.Progress := round(HP * 100 / HPMax);
Gauge4.Progress := round(MP * 100 / MPMax);
label6.caption := x + ' ' + y + ' ' + z;
PostMessage(w,WM_KEYDOWN,$00000032,$00020001);
PostMessage(w,WM_KEYDOWN,$00000033,$00020001);
if (Gauge3.Progress ) < 60
then
PostMessage (w, WM_KEYDOWN, VK_F3, 0) ;
e:=FindWindow(nil,Pchar(edit1.text));
if e <> 0
then
unfreeze_flag:=1;
unfreeze:=$B0;
GetWindowThreadProcessId(e,@ProcessId);
hProcess:=OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId);
WriteProcessMemory(hProcess, ptr($00420204), @unfreeze, 1, BC);
WriteProcessMemory(hProcess, ptr($00420205), @unfreeze_flag, 1, BC);
GetWindowThreadProcessId(e,@ProcessId);
hProcess := OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId);
If (e > 0) then
try
ReadProcessMemory (hProcess, Pointer($A571E0), @BUM, sizeof(BUM), NoB);
ReadProcessMemory (hProcess, Pointer(BUM+$1C), @BUM, sizeof(BUM), NoB);
ReadProcessMemory (hProcess, Pointer(BUM+$34), @BUM, sizeof(BUM), NoB);
ReadProcessMemory (hProcess, Pointer(BUM+$494), @WHP, sizeof(WHP), NoB);
HP := Integer(WHP);
ReadProcessMemory (hProcess, Pointer(BUM+$4DC), @WHPMax, sizeof(WHPMax), NoB);
HPMax := Integer(WHPMax);
ReadProcessMemory (hProcess, Pointer(BUM+$498), @WMP, sizeof(WMP), NoB);
MP := Integer(WMP);
ReadProcessMemory (hProcess, Pointer(BUM+$4E0), @WMPMax, sizeof(WMPMax), NoB);
MPMax := Integer(WMPMax);
ReadProcessMemory (hProcess, Pointer(BUM+$040), @wkz, sizeof(wkz), NoB);
ReadProcessMemory (hProcess, Pointer(BUM+$03C), @wky, sizeof(wky), NoB);
ReadProcessMemory (hProcess, Pointer(BUM+$044), @wkx, sizeof(wkx), NoB);
y := FloatToStr((wky + 4000) / 10); y := Copy(y, 1, Pos(',', y) - 1);
x := FloatToStr((wkx + 5500) / 10); x := Copy(x, 1, Pos(',', x) - 1);
Z := FloatToStr((wkz) / 10); Z := Copy(Z, 1, Pos(',', Z) - 1);
Edit1.text := IntToStr(HP);
Edit2.text := IntToStr(MP);
Gauge1.Progress := round(HP * 100 / HPMax);
Gauge2.Progress := round(MP * 100 / MPMax);
label7.caption := x + ' ' + y + ' ' + z;
PostMessage(e,WM_KEYDOWN,$00000032,$00020001);
PostMessage(e,WM_KEYDOWN,$00000033,$00020001);
if (Gauge4.Progress ) < 60
then
PostMessage (e, WM_KEYDOWN, VK_F3, 0) ;
r:=FindWindow(nil,Pchar(edit1.text));
if r <> 0
then
unfreeze_flag:=1;
unfreeze:=$B0;
GetWindowThreadProcessId(r,@ProcessId);
hProcess:=OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId);
WriteProcessMemory(hProcess, ptr($00420204), @unfreeze, 1, BC);
WriteProcessMemory(hProcess, ptr($00420205), @unfreeze_flag, 1, BC);
GetWindowThreadProcessId(r,@ProcessId);
hProcess := OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId);
If (r > 0) then
try
ReadProcessMemory (hProcess, Pointer($A571E0), @BUM, sizeof(BUM), NoB);
ReadProcessMemory (hProcess, Pointer(BUM+$1C), @BUM, sizeof(BUM), NoB);
ReadProcessMemory (hProcess, Pointer(BUM+$34), @BUM, sizeof(BUM), NoB);
ReadProcessMemory (hProcess, Pointer(BUM+$494), @WHP, sizeof(WHP), NoB);
HP := Integer(WHP);
ReadProcessMemory (hProcess, Pointer(BUM+$4DC), @WHPMax, sizeof(WHPMax), NoB);
HPMax := Integer(WHPMax);
ReadProcessMemory (hProcess, Pointer(BUM+$498), @WMP, sizeof(WMP), NoB);
MP := Integer(WMP);
ReadProcessMemory (hProcess, Pointer(BUM+$4E0), @WMPMax, sizeof(WMPMax), NoB);
MPMax := Integer(WMPMax);
ReadProcessMemory (hProcess, Pointer(BUM+$040), @wkz, sizeof(wkz), NoB);
ReadProcessMemory (hProcess, Pointer(BUM+$03C), @wky, sizeof(wky), NoB);
ReadProcessMemory (hProcess, Pointer(BUM+$044), @wkx, sizeof(wkx), NoB);
y := FloatToStr((wky + 4000) / 10); y := Copy(y, 1, Pos(',', y) - 1);
x := FloatToStr((wkx + 5500) / 10); x := Copy(x, 1, Pos(',', x) - 1);
Z := FloatToStr((wkz) / 10); Z := Copy(Z, 1, Pos(',', Z) - 1);
Edit1.text := IntToStr(HP);
Edit2.text := IntToStr(MP);
Gauge1.Progress := round(HP * 100 / HPMax);
Gauge2.Progress := round(MP * 100 / MPMax);
label8.caption := x + ' ' + y + ' ' + z;
PostMessage(r,WM_KEYDOWN,$00000032,$00020001);
PostMessage(r,WM_KEYDOWN,$00000033,$00020001);
if (Gauge5.Progress ) < 60
then
PostMessage (r, WM_KEYDOWN, VK_F3, 0) ;
t:=FindWindow(nil,Pchar(edit1.text));
if t <> 0
then
unfreeze_flag:=1;
unfreeze:=$B0;
GetWindowThreadProcessId(t,@ProcessId);
hProcess:=OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId);
WriteProcessMemory(hProcess, ptr($00420204), @unfreeze, 1, BC);
WriteProcessMemory(hProcess, ptr($00420205), @unfreeze_flag, 1, BC);
GetWindowThreadProcessId(t,@ProcessId);
hProcess := OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId);
If (t > 0) then
try
ReadProcessMemory (hProcess, Pointer($A571E0), @BUM, sizeof(BUM), NoB);
ReadProcessMemory (hProcess, Pointer(BUM+$1C), @BUM, sizeof(BUM), NoB);
ReadProcessMemory (hProcess, Pointer(BUM+$34), @BUM, sizeof(BUM), NoB);
ReadProcessMemory (hProcess, Pointer(BUM+$494), @WHP, sizeof(WHP), NoB);
HP := Integer(WHP);
ReadProcessMemory (hProcess, Pointer(BUM+$4DC), @WHPMax, sizeof(WHPMax), NoB);
HPMax := Integer(WHPMax);
ReadProcessMemory (hProcess, Pointer(BUM+$498), @WMP, sizeof(WMP), NoB);
MP := Integer(WMP);
ReadProcessMemory (hProcess, Pointer(BUM+$4E0), @WMPMax, sizeof(WMPMax), NoB);
MPMax := Integer(WMPMax);
ReadProcessMemory (hProcess, Pointer(BUM+$040), @wkz, sizeof(wkz), NoB);
ReadProcessMemory (hProcess, Pointer(BUM+$03C), @wky, sizeof(wky), NoB);
ReadProcessMemory (hProcess, Pointer(BUM+$044), @wkx, sizeof(wkx), NoB);
y := FloatToStr((wky + 4000) / 10); y := Copy(y, 1, Pos(',', y) - 1);
x := FloatToStr((wkx + 5500) / 10); x := Copy(x, 1, Pos(',', x) - 1);
Z := FloatToStr((wkz) / 10); Z := Copy(Z, 1, Pos(',', Z) - 1);
label2.Caption:=inttostr(HP);
label3.Caption:=inttostr(HP);
Gauge1.Progress := round(HP * 100 / HPMax);
Gauge2.Progress := round(MP * 100 / MPMax);
label4.caption := x + ' ' + y + ' ' + z;
PostMessage(t,WM_KEYDOWN,$00000032,$00020001);
PostMessage(t,WM_KEYDOWN,$00000033,$00020001);
if (Gauge6.Progress ) < 60
then
PostMessage (t, WM_KEYDOWN, VK_F3, 0) ;
except
end;
end.
а ошибка всёравно остаются, unfreeze ещё не уберал, т.к. программа не запускается и не посмотреть,что будет работать,а что нет
|
|
|
19.05.2012, 08:49
|
#4
|
|
|
|
Разведчик
|
Регистрация: 07.10.2010
Сообщений: 21
Популярность: 90
Сказал(а) спасибо: 14
Поблагодарили 15 раз(а) в 14 сообщениях
|
Re: не закрываются блоки и не начинается новая функция
Код:
....
procedure TForm1.Timer1Timer(Sender: TObject);
const
unfreeze=$B0;
begin{1}
v:=FindWindow(nil,Pchar(edit1.text));
if v <> 0 then
GetWindowThreadProcessId(v,@ProcessId);
hProcess:=OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId);
ReadProcessMemory(hProcess, ptr($00420204), @unfreeze, 1, BC);
if unfreeze={флаг замороженного окна ?} then
begin {2}
WriteProcessMemory(hProcess, ptr($00420204), @unfreeze, 1, BC);
end;{2}
If (v > 0) then
try
begin{3}
ReadProcessMemory (hProcess, Pointer($A571E0), @BUM, sizeof(BUM), NoB);
ReadProcessMemory (hProcess, Pointer(BUM+$1C), @BUM, sizeof(BUM), NoB);
ReadProcessMemory (hProcess, Pointer(BUM+$34), @BUM, sizeof(BUM), NoB);
ReadProcessMemory (hProcess, Pointer(BUM+$494), @WHP, sizeof(WHP), NoB);
HP := Integer(WHP);
ReadProcessMemory (hProcess, Pointer(BUM+$4DC), @WHPMax, sizeof(WHPMax), NoB);
HPMax := Integer(WHPMax);
ReadProcessMemory (hProcess, Pointer(BUM+$498), @WMP, sizeof(WMP), NoB);
MP := Integer(WMP);
ReadProcessMemory (hProcess, Pointer(BUM+$4E0), @WMPMax, sizeof(WMPMax), NoB);
MPMax := Integer(WMPMax);
ReadProcessMemory (hProcess, Pointer(BUM+$040), @wkz, sizeof(wkz), NoB);
ReadProcessMemory (hProcess, Pointer(BUM+$03C), @wky, sizeof(wky), NoB);
ReadProcessMemory (hProcess, Pointer(BUM+$044), @wkx, sizeof(wkx), NoB);
y := FloatToStr((wky + 4000) / 10); y := Copy(y, 1, Pos(',', y) - 1);
x := FloatToStr((wkx + 5500) / 10); x := Copy(x, 1, Pos(',', x) - 1);
Z := FloatToStr((wkz) / 10); Z := Copy(Z, 1, Pos(',', Z) - 1);
Edit1.text := IntToStr(HP);
Edit2.text := IntToStr(MP);
Gauge1.Progress := round(HP * 100 / HPMax);
Gauge2.Progress := round(MP * 100 / MPMax);
label4.caption := x + ' ' + y + ' ' + z;
PostMessage(v,WM_KEYDOWN,$00000032,$00020001);
PostMessage(v,WM_KEYDOWN,$00000033,$00020001);
if (Gauge1.Progress ) < 60 then
PostMessage (v, WM_KEYDOWN, VK_F3, 0) ;
end;{3}
finally
closehandle(v);
end;
end;{1}
попробуй запустить только это (зачем тебе 6 раз одно и тоже запускать(писать !!!!!!!!!!!!!!)
________________
если я не ошибаюсь, а могу и ошибаться ...
too many actual parameters
Последний раз редактировалось zaparca; 19.05.2012 в 08:55.
|
|
|
Пользователь сказал cпасибо:
|
|
19.05.2012, 15:08
|
#5
|
|
|
|
Пехотинец
|
Регистрация: 29.05.2010
Сообщений: 58
Популярность: 10
Сказал(а) спасибо: 80
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: не закрываются блоки и не начинается новая функция
zaparca, мне надо считать информацию с 6-ти разных окон,вот на каждое и пишу
|
|
|
19.05.2012, 22:08
|
#6
|
|
|
|
Разведчик
|
Регистрация: 07.10.2010
Сообщений: 21
Популярность: 90
Сказал(а) спасибо: 14
Поблагодарили 15 раз(а) в 14 сообщениях
|
Re: не закрываются блоки и не начинается новая функция
|
Цитата: |
|
|
|
|
|
|
|
|
|
с 6-ти разных окон,вот на каждое и пишу
|
|
|
|
|
|
но у тебя везде
Код:
v:=FindWindow(nil,Pchar(edit1.text));
т.е. получается программа видит только одно окно
? ты их за ранее переименовываешь ?
или edit1.text='Perfect word'
Код:
var
Form1: TForm1;
W_n:integer;
....
Const
W_n=1;
....
Function NamePW(Wind_num:integer):string;
begin
If Wind_num>6 then begin Wind_num:=1; end;
Case Wind_num of
1: NamePW:='Обор';{Имена можеш по своему усмотрению написать}
2: NamePW:='Друль';
3: NamePW:='Син';{либо сделать выбор окон из :TComboBox}
4: NamePW:='Вар';{NamePW:=ComboBox4.text;}
5: NamePW:='Маг';{Как то так}
6: NamePW:='Прист';
end;
end;
......
procedure TForm1.Timer1Timer(Sender: TObject);
........
Name_Wind:=NamePW(W_n);
v:=FindWindow(nil,Pchar(Name_Wind{String}));
....
finally
closehandle(v);
end;
W_n:=W_n+1;
end;
попробуй так надеюсь разберешься что куда поставить
но тут окна надо переименовывать за ранее
получится один тот же код на несколько окон
________________
если я не ошибаюсь, а могу и ошибаться ...
too many actual parameters
Последний раз редактировалось zaparca; 19.05.2012 в 22:11.
|
|
|
19.05.2012, 22:24
|
#7
|
|
|
|
Пехотинец
|
Регистрация: 29.05.2010
Сообщений: 58
Популярность: 10
Сказал(а) спасибо: 80
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: не закрываются блоки и не начинается новая функция
я просто окна переименовываю после запуска программы из эдитов разных и и разные буквы присваиваю разным эдитам
каждому оку присваивается своё имя и своя буква:
Код:
v:=FindWindow(nil,Pchar(edit1.text))
q:=FindWindow(nil,Pchar(edit2.text));
w:=FindWindow(nil,Pchar(edit3.text));
e:=FindWindow(nil,Pchar(edit4.text));
r:=FindWindow(nil,Pchar(edit5.text));
t:=FindWindow(nil,Pchar(edit6.text));
;
а смысл этого,не пойму,чем это поможет?
мне надо,что б одновременно в 6 окно действие отправлялось
а...всё,понял чего ошибка была... except надо было писать в конце каждого блока... а я написал просто один раз в конце..(
Последний раз редактировалось Meg(0); 19.05.2012 в 23:04.
|
|
|
20.05.2012, 07:53
|
#8
|
|
|
|
Разведчик
|
Регистрация: 07.10.2010
Сообщений: 21
Популярность: 90
Сказал(а) спасибо: 14
Поблагодарили 15 раз(а) в 14 сообщениях
|
Re: не закрываются блоки и не начинается новая функция
|
Цитата: |
|
|
|
|
|
|
|
|
|
а смысл этого,не пойму,чем это поможет?
|
|
|
|
|
|
ну
во 1 код короче
во 2 в если использовать
Код:
...
TPersInfoThr = class(TThread)
protected
procedure Execute; override;
end;
...
var
...
PersInfoThr:TPersInfoThr;
...
Function NamePW(Wind_num:integer):string;
begin
If Wind_num>6 then begin Wind_num:=1; end;
Case Wind_num of
1: NamePW:=edit1.text;{Имена можеш по своему усмотрению написать}
2: NamePW:=edit2.text;
3: NamePW:=edit3.text;{либо сделать выбор окон из :TComboBox}
4: NamePW:=edit4.text;{NamePW:=ComboBox4.text;}
5: NamePW:=edit5.text;{Как то так}
6: NamePW:=edit6.text;
end;
end;
procedure TPersInfoThr.Execute;
const
unfreeze=$B0;
begin{1}
Name_Wind:=NamePW(W_n);
v:=FindWindow(nil,Pchar(Name_Wind{String}));
if v <> 0 then
GetWindowThreadProcessId(v,@ProcessId);
hProcess:=OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId);
ReadProcessMemory(hProcess, ptr($00420204), @unfreeze, 1, BC);
if unfreeze={флаг замороженного окна ?} then
begin {2}
WriteProcessMemory(hProcess, ptr($00420204), @unfreeze, 1, BC);
end;{2}
If (v > 0) then
try
begin{3}
ReadProcessMemory (hProcess, Pointer($A571E0), @BUM, sizeof(BUM), NoB);
ReadProcessMemory (hProcess, Pointer(BUM+$1C), @BUM, sizeof(BUM), NoB);
ReadProcessMemory (hProcess, Pointer(BUM+$34), @BUM, sizeof(BUM), NoB);
ReadProcessMemory (hProcess, Pointer(BUM+$494), @WHP, sizeof(WHP), NoB);
HP := Integer(WHP);
ReadProcessMemory (hProcess, Pointer(BUM+$4DC), @WHPMax, sizeof(WHPMax), NoB);
HPMax := Integer(WHPMax);
ReadProcessMemory (hProcess, Pointer(BUM+$498), @WMP, sizeof(WMP), NoB);
MP := Integer(WMP);
ReadProcessMemory (hProcess, Pointer(BUM+$4E0), @WMPMax, sizeof(WMPMax), NoB);
MPMax := Integer(WMPMax);
ReadProcessMemory (hProcess, Pointer(BUM+$040), @wkz, sizeof(wkz), NoB);
ReadProcessMemory (hProcess, Pointer(BUM+$03C), @wky, sizeof(wky), NoB);
ReadProcessMemory (hProcess, Pointer(BUM+$044), @wkx, sizeof(wkx), NoB);
y := FloatToStr((wky + 4000) / 10); y := Copy(y, 1, Pos(',', y) - 1);
x := FloatToStr((wkx + 5500) / 10); x := Copy(x, 1, Pos(',', x) - 1);
Z := FloatToStr((wkz) / 10); Z := Copy(Z, 1, Pos(',', Z) - 1);
Edit1.text := IntToStr(HP);
Edit2.text := IntToStr(MP);
Gauge1.Progress := round(HP * 100 / HPMax);
Gauge2.Progress := round(MP * 100 / MPMax);
label4.caption := x + ' ' + y + ' ' + z;
PostMessage(v,WM_KEYDOWN,$00000032,$00020001);
PostMessage(v,WM_KEYDOWN,$00000033,$00020001);
if (Gauge1.Progress ) < 60 then
PostMessage (v, WM_KEYDOWN, VK_F3, 0) ;
end;{3}
finally
closehandle(v);
end;
W_n:=W_n+1;
end;{1}
procedure TForm1.Button1Click(Sender: TObject);
begin
if Button1.Caption = 'Stop' then
begin
PersInfoThr.Terminate;
Button1.Caption := 'Start';
Exit;
end;
PersInfoThr := TPersInfoThr.Create(False);
Button1.Caption := 'Stop';
end;
мне кажется как-то б-бб-бб-ббб-быстрее будет
________________
если я не ошибаюсь, а могу и ошибаться ...
too many actual parameters
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 06:01.
|
|