Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > LabeledEdit1.Text := бяка


Автор: Pariah 17.5.2006, 11:07
Дарова народ!
Вот код : 
Код

procedure TForm1.Button1Click(Sender: TObject);
var
hn : HWND;
ClassName:PChar ;
begin
         hn := GetClassName(FindWindow('TrayNotifyWnd', nil)
         ,ClassName,255);
         LabeledEdit1.Text:= ClassName ;
end;


Моя прога должна считать все ClassName иконок находящихся в SystemTray и вывести их значения в LabeledEdit1.Text , но вместо этого выводится непонятный текст smile  smile  smile 
Помогите это исправить!!!
А лучше кинте линь где мона слить такую утилиту!
Буду ооч признателен!  
 

Автор: Romikgy 17.5.2006, 12:08
Код

procedure TForm1.Button1Click(Sender: TObject);    

var    
hn : HWND;    
ClassName:string;    
begin    
         hn := GetClassName(FindWindow('TrayNotifyWnd', nil)    
         ,PChar (ClassName),255);    
         LabeledEdit1.Text:= ClassName ;    
end;
  

Автор: Pariah 17.5.2006, 12:41
пасиб Romikgy багов при компилинге нет!
но теперь текста ваще никакого непоявляется smile  

Автор: Romikgy 17.5.2006, 15:25
Код

procedure TForm1.Button1Click(Sender: TObject);    

var    
hn : HWND;    
ClassName:array [0..255] of char;    
begin    
         hn := GetClassName(FindWindow('TrayNotifyWnd', nil)    
         , (ClassName),255);    
         LabeledEdit1.Text:= StrPas(ClassName) ;    
end;

А так ? 

Автор: Damarus 17.5.2006, 22:13
Цитата(Pariah @ 17.5.2006,  11:07)
Дарова народ!
Вот код : 
Код

procedure TForm1.Button1Click(Sender: TObject);
var
hn : HWND;
ClassName:PChar ;
begin
         hn := GetClassName(FindWindow('TrayNotifyWnd', nil)
         ,ClassName,255);
         LabeledEdit1.Text:= ClassName ;
end;


Моя прога должна считать все ClassName иконок находящихся в SystemTray и вывести их значения в LabeledEdit1.Text , но вместо этого выводится непонятный текст smile  smile  smile 
Помогите это исправить!!!
А лучше кинте линь где мона слить такую утилиту!
Буду ооч признателен!

Указанный код (как и его модификации выше) во первых не верен, во вторых является логическим бредом. Разберёмся по порядку. Функция FindWindow возвращает хендл top-level окна, в то время, как окно TrayNotifyWnd является дочерним окном Shell_TrayWnd, т.е. в данном случае правильнее писать так:
Код

hn := GetClassName(FindWindowEx(FindWindow('Shell_TrayWnd', nil), nil, 'TrayNotifyWnd', nil), ClassName, 255);


Но и это бред, т.к. функция GetClassName возвращает имя класса указанного окна, т.е. в данном коде она вернёт 'TrayNotifyWnd'.

Я также не понял, что есть "ClassName иконок". 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)