Просмотр полной версии : Окна в делфи
Доброго времени!
Нужна помощь на 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();
....
}
Спасибо, буду разбираться...
Так, с этим разобрался. А как получить имя процесса, которому принадлежит окно, если нам известен только дескриптор окна?
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, процесса, то придется выкоблучиваться по-разному.... А там все показано и описано. И не только это...
Кстати , могу выложить кучу полезного кода по Win32. Рихтер его автор.
Только вот куда выложить...
потому как если тебе нужно именно название а не ID, процесса, то придется выкоблучиваться по-разному.... А там все показано и описано. И не только это...
Выкладывай Рихтера куда захочешь, мне всёравно:) Заранее спасибо.
Executer
13.05.2007, 16:33
В том то и дело, что выбора у меня не много :). Нужно ткнуть носом - куда скопировать, чтобы у меня права на запись были...
Во внешнюю сеть некуда выкидывать, так что нужно что-то тут - в сети...
В том то и дело, что выбора у меня не много :). Нужно ткнуть носом - куда скопировать, чтобы у меня права на запись были...
Во внешнюю сеть некуда выкидывать, так что нужно что-то тут - в сети...
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
Executer, выношу благодарность. Партия вас не забудет. Тему можно закрыть.
vBulletin® v3.8.12 by vBS, Copyright ©2000-2024, vBulletin Solutions, Inc. Перевод: zCarot