PDA

Просмотр полной версии : Окна в делфи


Kostyan
11.05.2007, 16:36
Доброго времени!
Нужна помощь на Delphi. Необходимо составить список дескрипторов всех окон(в том числе и других приложений) и определить какое окно из этого списка активно в данный момент.

Executer
11.05.2007, 23:20
Окна какого типа нужны?
просто вот код, который выводит в файл дескрипторы всех окон, и вконце выводит дискриптор активного окна (но это на С++, но вин апи - он и в африке вин апи...):


ofstream fo;
BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM lParam)
{
fo << (unsigned)hwnd << "\n";
return true;
}

int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
....
fo.open("txt.txt");
EnumWindows((WNDENUMPROC)EnumWindowsProc, NULL);
fo << "Active = "<< (unsigned)GetForegroundWindow() << "\n";
fo.close();
....
}

Kostyan
12.05.2007, 14:12
Спасибо, буду разбираться...

Kostyan
12.05.2007, 19:17
Так, с этим разобрался. А как получить имя процесса, которому принадлежит окно, если нам известен только дескриптор окна?

Executer
12.05.2007, 20:18
У тебя есть MSDN?
Если нет, обязатеьно найди и установи. Конечно если еще планируешь использовать вин апи. Вот выписка из него:

The GetWindowThreadProcessId function retrieves the identifier of the thread that created the specified window and, optionally, the identifier of the process that created the window.

Syntax

DWORD GetWindowThreadProcessId( HWND hWnd,
LPDWORD lpdwProcessId
);
Parameters

hWnd
[in] Handle to the window.
lpdwProcessId
[out] Pointer to a variable that receives the process identifier. If this parameter is not NULL, GetWindowThreadProcessId copies the identifier of the process to the variable; otherwise, it does not.
Return Value

The return value is the identifier of the thread that created the window.

Executer
12.05.2007, 21:08
Кстати , могу выложить кучу полезного кода по Win32. Рихтер его автор.
Только вот куда выложить...
потому как если тебе нужно именно название а не ID, процесса, то придется выкоблучиваться по-разному.... А там все показано и описано. И не только это...

Kostyan
12.05.2007, 21:15
Кстати , могу выложить кучу полезного кода по Win32. Рихтер его автор.
Только вот куда выложить...
потому как если тебе нужно именно название а не ID, процесса, то придется выкоблучиваться по-разному.... А там все показано и описано. И не только это...

Выкладывай Рихтера куда захочешь, мне всёравно:) Заранее спасибо.

Executer
13.05.2007, 16:33
В том то и дело, что выбора у меня не много :). Нужно ткнуть носом - куда скопировать, чтобы у меня права на запись были...
Во внешнюю сеть некуда выкидывать, так что нужно что-то тут - в сети...

Kostyan
13.05.2007, 16:41
В том то и дело, что выбора у меня не много :). Нужно ткнуть носом - куда скопировать, чтобы у меня права на запись были...
Во внешнюю сеть некуда выкидывать, так что нужно что-то тут - в сети...

ftp://ftp.gatchina.ru:21/Change/Kostyan/

ftp://anime.sz:21/Upload/

Executer
13.05.2007, 20:24
Выложил:
ftp://ftp.gatchina.ru/Change/Kostyan/Win32

Kostyan
13.05.2007, 21:08
Executer, выношу благодарность. Партия вас не забудет. Тему можно закрыть.