Форум: "Начинающим";
Текущий архив: 2008.08.10;
Скачать: [xml.tar.bz2];
ВнизПроблема с функциями EnumWindows и GetWindowText Найти похожие ветки
← →
GrieVeR-13 © (2008-07-08 21:59) [0]function cb(h:hwnd;l:longint):boolean;stdcall;
var s:PCHAR;
begin
result:=true;
GetWindowText(h,s,8);
if s = "[ #] Lin" then begin
h2:=h;
inc(c);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
EnumWindows(@cb,0);
<...>
end;
Задача: нужно найти все окна с именем "[ #] Lienage [ #]", и запомнить дескрипторы, чтобы в последствии им можно было посылать сообщения через PostMessage(...).
Проблема: без строчки h2[c]:=h; работает, но считает количество окон очень криво, иногда находит больше чем есть. А с ней вообще вылетает.. Почему?.. Целый день бьюсь над этой проблемой, заранее спасибо...
← →
palva © (2008-07-09 00:04) [1]У вас очень плохой текст. Если вы и мыслите в том же стиле, то вам лучше не заниматься программированием.
У вас не присвоено значение переменной s. Поскольку там мусор, то функция GetWindowText вообще должна вылететь или испортить где-нибудь память. Где у вас строчка h2[c]:=h; Приведите нормальный и полный текст.
← →
SergeyIT © (2008-07-09 00:18) [2]
> f s = "[ #] Lin" then
И это непонятно что проверяет...
← →
GrieVeR-13 © (2008-07-09 02:01) [3]palva спасибо, я сам разобрался в чем дело.
S надо было задать как var s:array [0..256] of char; И всё сразу стало работать.
И попытки опустить меня намеками о моей не способности к программированию вовсе не желательны...Особенно, если сами не понимаете в чем причина ошибки.
← →
Германн © (2008-07-09 02:09) [4]
> И попытки опустить меня намеками о моей не способности к
> программированию вовсе не желательны...Особенно, если сами
> не понимаете в чем причина ошибки.
>
В игнор!
← →
GrieVeR-13 © (2008-07-09 03:24) [5]Закройте, пожалуйста, тему, чтобы "некоторые" личности, которые и слова не сказали по теме, не разводили флуд...
А palva всё равно спасибо, из-за него я ошибку и нашел.
← →
Германн © (2008-07-09 03:38) [6]
> GrieVeR-13 © (09.07.08 03:24) [5]
>
> Закройте, пожалуйста, тему, чтобы "некоторые" личности,
> которые и слова не сказали по теме, не разводили флуд...
>
> А palva всё равно спасибо, из-за него я ошибку и нашел.
>
Пойди с ним в поход. Туристический. Там он тебе и объяснит всё на практике!
:)
← →
{RASkov} © (2008-07-09 10:41) [7]> [5] GrieVeR-13 © (09.07.08 03:24)
> Закройте, пожалуйста, тему, чтобы "некоторые" личности,
> которые и слова не сказали по теме, не разводили флуд...
Кусок "кода" приведенного тобой - "не читабельный". Отсюда и флуд.... А что ты хотел?
Или ты хочешь стукнуть кулаком по столу и тебе все кинулись решать твои проблемы?
← →
GrayFace © (2008-07-09 10:44) [8]А почему именно 8? И почему "некоторые" в ковычках?
← →
GrieVeR-13 © (2008-07-09 12:22) [9]Я никого не заставлял принудительно, я просто попросил - может кто нашел бы ошибку, и свою проблему я уже решил.
"8" потому что мне так понравилось, потом вообще 255 поставил.
"[ #] Lin" это имя окна. А "некоторые", потому что не все. Но их число стремительно увеличивается.
И пора бы уже прекратить решать "вопросы личного характера".
Закройте тему. Или на сайте эта функция отсутствует?
← →
Leonid Troyanovsky © (2008-07-09 13:01) [10]
> GrieVeR-13 © (09.07.08 12:22) [9]
> Закройте тему. Или на сайте эта функция отсутствует?
Зачем? Лучше учиться на чужих ошибках.
> "8" потому что мне так понравилось
Boolean тоже понравилось?
> свою проблему я уже решил.
Вот и доложи решение и тема, считай, будет закрыта.
Хотя, сомнительно, что удасться сделать это без иных ошибок.
--
Regards, LVT.
← →
GrieVeR-13 © (2008-07-09 13:31) [11]
> S надо было задать как var s:array [0..256] of char; И
> всё сразу стало работать.
И без иных ошибок.
Это и есть решение.
Чем Вам мой boolean не понравился? Он тут по делу стоит.
← →
Leonid Troyanovsky © (2008-07-09 13:41) [12]
> GrieVeR-13 © (09.07.08 13:31) [11]
> Чем Вам мой boolean не понравился? Он тут по делу стоит.
http://msdn.microsoft.com/en-us/library/ms633498(VS.85).aspx
> И без иных ошибок.
if s = "[ #] Lin" then begin
h2:=h;
inc(c);
end;
- Сплошная ошибка.
Я ж просил не флудить, а привести решение.
--
Regards, LVT.
← →
MBo © (2008-07-09 13:44) [13]>Чем Вам мой boolean не понравился?
BOOL будет аккуратнее
← →
GrieVeR-13 © (2008-07-09 15:04) [14]Как писать, бул или булеан, решаю я. На мой взгляд аккуратнее булеан.
← →
{RASkov} © (2008-07-09 15:33) [15]> [14] GrieVeR-13 © (09.07.08 15:04)
> Как писать, бул или булеан, решаю я.
Вот скажи честно, зачем ты тогда вообще на форуме вопросы задаешь? ...если сам все решаешь.
← →
GrieVeR-13 © (2008-07-09 15:42) [16]function cb(h:hwnd;l:longint):boolean;stdcall;
var s:array [0..256] of char;
begin
result:=true;
GetWindowText(h,s,255);
if strpas(s) = "[ #] Lineage II [ #]" then begin
PostMessage(h,WM_CHAR,ord("a"),0);
end;
end;
Рабочий вариант. И вуаля. Во всех заданных окнах магическим образом появляется "а".
Весь код я писал без Delphi под рукой, с телефона и по памяти. За опечатки не пинайте.
← →
Anatoly Podgoretsky © (2008-07-09 15:54) [17]
> Как писать, бул или булеан, решаю я. На мой взгляд аккуратнее
> булеан.
Не аккуратно и главное большая ошибка, они даже по размеру не равны, со всеми вытекающими из этого последствиями. Грозит непридвиденными последствиями. Поскольку для BOOLEAN определен байт с двумя значениями, а для BOOL (то чего ожидает виндоус), который 4 байта и весь диапазон значений.
← →
GrieVeR-13 © (2008-07-09 16:14) [18]Если так, то тогда в этом моЯ ошибка - в исходнике, что я скачал из инета был булеан.
Но день активных тестов, показал что никаких неожиданностей не возникло. И боты работали исправно.
← →
Anatoly Podgoretsky © (2008-07-09 16:20) [19]> GrieVeR-13 (09.07.2008 16:14:18) [18]
Про законы Паркинсона слышал. Не рушимы. Надо не только качать, но и смотреть справку и для АПИ еще и определения в Windows.pas, а то Интернет это такая помойка, всем помойкам помойка. А генофонд не рушим.
← →
GrieVeR-13 © (2008-07-09 16:33) [20]Слышал. Что верно то верно..
приду домой исправлю.
Кто-то спрашивал, зачем я задаю вопросы на форуме? Так вот ради таких ответов и задаю.
Всем, кто мне помог, спасибо. До свидания.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.08.10;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.007 c