Форум: "Основная";
Текущий архив: 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