Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.05.06;
Скачать: [xml.tar.bz2];

Вниз

Класс окна   Найти похожие ветки 

 
ATLANTIDO   (2002-04-20 20:55) [0]

Что такое класс окна (чем он определяется) и как его узнать ?
Делаю так :

procedure TForm1.Timer1Timer(Sender: TObject);
var
buffer : PChar;
H : HDC;
begin
H:=GetForegroundWindow;
GetClassName(h, buffer, sizeof(buffer));
Memo1.Lines.Add(buffer);
end;

Получаю, что имя класса любого окна - "Sfѓx:"
В чем ошибка ?


 
Anatoly Podgoretsky   (2002-04-20 21:00) [1]

Память будет Пушкин выделять?


 
ATLANTIDO   (2002-04-20 21:05) [2]

Ок ! Исправил, работает :

procedure TForm1.Timer1Timer(Sender: TObject);
var
buffer : array [0..254] of char;
H : HDC;
begin
H:=GetForegroundWindow;
GetClassName(h, buffer, sizeof(buffer));
Memo1.Lines.Add(buffer);
end;

А как быть с первой половиной вопроса ?



 
Anatoly Podgoretsky   (2002-04-20 21:13) [3]

Класс окна - это текст (тип/имя), которые ты сам задаешь, например для форм это имя класса.


 
ATLANTIDO   (2002-04-20 21:15) [4]

Т.е. класс окна можно считать уникальным для каждого окна ?


 
ION T   (2002-04-20 21:35) [5]

Низзя:(( Например TMainForm скорее всего будет во всех приложниях сделанных на Дельфи.....


 
ATLANTIDO   (2002-04-20 21:39) [6]

А где можно подробнее узнать какой класс к каким окнам относится ?


 
ION T   (2002-04-20 21:48) [7]

Да просто в большинстве проэктов главную форму называют MainForm, вот и получится если два таких приложения одновременно запущены, то FindWindow("TMainForm", nil) выдаст хендл окна первого запушенного из них....

А зачем надо?


 
Anatoly Podgoretsky   (2002-04-20 21:52) [8]

ATLANTIDO © (20.04.02 21:15)
Неверно, окон класса "Edit, Button" весьма много, хочешь уникальность то будь добр позаботить о ней сам.


 
ATLANTIDO   (2002-04-20 21:55) [9]

Пишу программу ограничения действий пользователя. Вот и хотел узнать какие окна какие классы имеют, чтобы убивать опасные.
Я конечно могу и сам єто узнать, но вдруг существуют не опасные окна с точно такиме классом.


 
Anatoly Podgoretsky   (2002-04-20 21:59) [10]

Ты должен шпионом определить классы окон опасных для тебя программ, но опасные программы обычно не используют уникальных классов, что бы их некоторые не ограничивали.


 
ATLANTIDO   (2002-04-20 22:06) [11]

Еще момент : нужно запретить пользователю пользоваться меню "Вид/Панели обозревателя/Папки" IE. Так вот, имеет ли эта панель свой класс или еще какую другую уникальную хернь, по которой ее можно найти ?


 
Anatoly Podgoretsky   (2002-04-20 22:17) [12]

Посмотри шпионом


 
ATLANTIDO   (2002-04-20 22:24) [13]

Эта панель - дочернее окно (Да ?). А как получить ее хэндл ?
(GetForegoundWindow тут уже не при делах)


 
Song   (2002-04-21 09:54) [14]

FindWindow()
GetWindowLong()


 
ATLANTIDO   (2002-04-21 23:06) [15]

Воспользовавшись этой статьей написал следующий код:

unit Unit2;
interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;

type
TForm1 = class(TForm)
Timer1: TTimer;
ListBox1: TListBox;
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
function EnumProc (Wd: HWnd; Param: LongInt): Boolean; stdcall; // Обязательно stdcall !!!
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

function TForm1.EnumProc (Wd: HWnd; Param: LongInt): Boolean; stdcall; // Обязательно stdcall !!!
var
buffer: array [0..255] of char;
Begin
GetClassName(Wd, buffer, SizeOf(Buffer));
if Buffer<>"" then ListBox1.Items.Add(buffer);
EnumProc := TRUE;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
H : HDC;
begin
H:=GetForegroundWindow;
if H<>0 then
begin
EnumChildWindows(h, @TForm1.EnumProc, 0);
ListBox1.items.Add("----------------");
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
ListBox1.Items.Clear;
end;

end.

В ListBox"e выводятся тоько "-----------";
В чем ошибка ?



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.05.06;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.004 c
1-17645
drnet
2002-04-22 16:51
2002.05.06
Форма не стандартной формы. HELP!!!!!


7-17714
андрей Татуков
2002-02-07 15:14
2002.05.06
зависания при вызове GetHostName


1-17640
Vint
2002-04-15 21:35
2002.05.06
Кнопка с многострочной надписью...


6-17653
dimich
2002-02-21 16:25
2002.05.06
Проблема с сообщением клиента-серверу!!!


3-17469
Кирилл2
2002-04-11 18:58
2002.05.06
DBGrid+16 цветов = глюк





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский