Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   WinApi (http://forum.oszone.net/showthread.php?t=30701)

fLANkeR 23-01-2003 21:22 209761

функция getclassname не работает :((, но не понятно почему ?)))

пробовал даже так

for i:=1 to 99999999 do
if getclassname(i,namecl,999)<>0 then
*memo1.lines.add(string(namecl));

все равно не работает!!! почему?!!!

[s]Исправлено: fLANkeR, 21:24 23-01-2003[/s]

shurikan 25-01-2003 04:01 209762

fLANkeR
Функция GetClassName предназначена для получения имени класса, к которому принадлежит окно. Первый параметр этой функции имеет тип HWND, т.е. handle (или дескриптор по русски) этого окна, а не произвольное число, которое ты пытаешься передать в функцию. Десятичное 99999999 это всего лишь шестнадцатеричное 5F5E0FF, что гораздо меньше по значению, чем типичный HWND. Если ты пытаешься узнать имя класса твоей формы (например), то функцию надо вызывать примерно так:
Код:

GetClassName(Form1.Handle, namecl, 999);
Если namecl - строка в стиле С и 999 - её длина.

fLANkeR 25-01-2003 06:15 209763

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 209764

fLANkeR
FindWindow принимает два параметра. Первый - строка с именем класса!!! А ты его обнулил. Второй - имя окна. Но если ты применяешь её, то уже должен знать имя класса. А следовательно GetClassName тебе ни к чему. *А этот hd, который ты пытаешься определить, уже есть в форме, как я уже писал раньше, он равен Form1.Handle. Если что-то не понял, пиши... :)

Кстати form1 вовсе не имя окна. Это - имя экземпляра класса TForm


[s]Исправлено: shurikan, 8:20 25-01-2003[/s]


Время: 22:40.

Время: 22:40.
© OSzone.net 2001-