Показать полную графическую версию : WinApi
функция getclassname не работает :((, но не понятно почему ?)))
пробовал даже так
for i:=1 to 99999999 do
if getclassname(i,namecl,999)<>0 then
*memo1.lines.add(string(namecl));
все равно не работает!!! почему?!!!
Исправлено: fLANkeR, 21:24 23-01-2003
shurikan
25-01-2003, 04:01
fLANkeR
Функция GetClassName предназначена для получения имени класса, к которому принадлежит окно. Первый параметр этой функции имеет тип HWND, т.е. handle (или дескриптор по русски) этого окна, а не произвольное число, которое ты пытаешься передать в функцию. Десятичное 99999999 это всего лишь шестнадцатеричное 5F5E0FF, что гораздо меньше по значению, чем типичный HWND. Если ты пытаешься узнать имя класса твоей формы (например), то функцию надо вызывать примерно так:
GetClassName(Form1.Handle, namecl, 999);
Если namecl - строка в стиле С и 999 - её длина.
shurikan
спасибо, но как использорвать эту функцию я знаю, дело не в этом.
посмотри этот код
hd:=findfindows(nil,pchar('form1'));
if hd<>0 then
begin
if getclassname(hd,st,999)<>0 then
form1.memo1.lines.add(string(st));
end;
здесь тоже не работет :( и почему?
shurikan
25-01-2003, 08:15
fLANkeR
FindWindow принимает два параметра. Первый - строка с именем класса!!! А ты его обнулил. Второй - имя окна. Но если ты применяешь её, то уже должен знать имя класса. А следовательно GetClassName тебе ни к чему. *А этот hd, который ты пытаешься определить, уже есть в форме, как я уже писал раньше, он равен Form1.Handle. Если что-то не понял, пиши... :)
Кстати form1 вовсе не имя окна. Это - имя экземпляра класса TForm
Исправлено: shurikan, 8:20 25-01-2003
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.