Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

как по handle определить, какому приложению принадлежит окно


Dema-X ©   (2004-11-29 16:51:00) 

Задай вопрос типа как по handle определить, какому приложению принадлежит окно и какой тип имеет окно(типа OLE Word.application)


easy   (2004-12-04 17:29:00) [1]

unit Unit1;

interface

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

type
 TForm1 = class(TForm)
   Timer1: TTimer;
   procedure Timer1Timer(Sender: TObject);
   procedure FormCreate(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}
function GetFullExeName(ProcID: DWord): string;
var
 ModEntr: TModuleEntry32;
 ContinueLoop: BOOL;
 FSnapshotHandle: THandle;
begin
 FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, ProcID);
 ModEntr.dwSize := Sizeof(ModEntr);
 ContinueLoop := Module32First(FSnapshotHandle, ModEntr);
 Result := '';
 while (Integer(ContinueLoop) <> 0) and (Result = '') do
 begin
   if ProcID = ModEntr.th32ProcessID then begin
     Result := ModEntr.szExePath;
   end;
   ContinueLoop := Module32Next(FSnapshotHandle, ModEntr);
 end;
end;

function GetWModule(h: HWND): string;
var
 pProcID: ^DWORD;
begin
 GetMem(pProcID, SizeOf(DWORD));
 GetWindowThreadProcessId(h, pProcID);
 result := GetFullExeName(pProcID^);
 FreeMem(pProcID);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
 p:TPoint;
begin
 getcursorpos(p);
 caption:=GetWModule(windowfrompoint(p));
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 Timer1.Interval:=200;
end;

end.


Dema-X   (2004-12-04 12:58:00) [2]

.


Dema-X   (2004-11-30 20:09:00) [3]


> Defunct ©   (30.11.04 07:28) [2]
> GetWindowModuleFileNameA

Ничего не выдает функция,только 51 если над моим окно и 0 над всеми другими!


Dema-X   (2004-11-30 19:58:00) [4]


> GetWindowThreadProcessId. Функцию приведенную в другой ветке
> считать бредом с перепою и переколу.

Вы про это
> Defunct ©   (30.11.04 07:28) [2]

ну а как же
> GetActiveOleObject('Word.Application');
?


TUser   (2004-11-30 09:50:00) [5]


> какому приложению принадлежит окно

GetWindowThreadProcessId. Функцию приведенную в другой ветке считать бредом с перепою и переколу.

> какой тип имеет окно(типа OLE Word.application)

Никакое окноне имеет такого типа. Класс окна можно узнать функцией GetClassName. Узнать, поддерживает ли даное приложение OLE - я думаю, нельзя. Разве, что в реестре покопаться, но без гарантии результата. Да и не нужно это.


Defunct   (2004-11-30 07:28:00) [6]

GetWindowModuleFileNameA


Dema-X   (2004-11-30 05:49:00) [7]

Люди!Что никто не знает?Функции типа GetClassName не дают исчерпывающей информации о приложении а дрыгих функций я не знаю а GETCLASSINFO у меня не раюотают почему то!!! :((


Наверх

Титульная страница Поиск, карта сайта Написать письмо