Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.03.11;
Скачать: CL | DM;

Вниз

Как получить HWND задачи?   Найти похожие ветки 

 
DarkReign   (2001-11-29 17:50) [0]

Господа, помогите пожалста.
В маздае запущено куча приложений, в том числе и мой Application. Мне надо получить HWND главной формы одной из запущенных задач. Как это сделать, подскажите (всегда приходится сталкиваться с чем-то в первый раз). Я знаю, что это вроде бы делается как-то через WinApi.
Заранее благодарен за любой ответ.


 
Иван Шихалев ©   (2001-11-29 17:56) [1]

Скорее всего FindWindow.


 
Керик   (2001-12-02 05:17) [2]

Form1.handle - это и есть hwnd формы.


 
DarkReign   (2001-12-03 11:11) [3]

Керик,
Да, я с тобой согласен если речь идет о МОЕЙ форме, а мне надо получить указатель на главную форму ОДНОЙ ИЗ ЗАДАЧ, запущенных в Windows. Т. е, есть несколько программ, выполняющихся одновременно с моей, и моя программа должна получить HWND нужной ей задачи из работающих в системе.


 
Виктор Щербаков ©   (2001-12-03 11:38) [4]

Чтобы получить то, о чем ты говоришь, нужно располагать какой-то информацией о "нужной" задаче.
Например знать заголовок и/или имя класса главного окна.
В этом случае - Иван Шихалев © (29.11.01 17:56)

Если у тебя какая-то другая информация - уточни.


 
Мороз Александр   (2001-12-03 17:34) [5]

Параллельный вопрос: Как получить дескриптор активного элемента активного окна.
Верно ли что GetTopWindow(GetTopWindow(GetDesktopWindow)) вернет дискриптор активного окна, если таковое вообще есть?
А вообще нужно достучаться до свойств элемента. Если это TEdit, то проверить свойство PasswordChar. Реально ли это?


 
Виктор Щербаков ©   (2001-12-03 17:57) [6]

>Если это TEdit, то проверить свойство PasswordChar. Реально ли это?

EM_GETPASSWORDCHAR


 
Мороз Александр   (2001-12-03 18:05) [7]

А можно поподробнее, я в этом не силен.
Обещаю, после этого отстану ;)


 
drAKon   (2001-12-03 20:33) [8]

Подробнее:
Посылаешь этому окну (hwnd которого ты уже знаешь) сообщение EM_GETPASSWORDCHAR
SendMessage(
(HWND) hWnd, // handle to destination window
EM_GETPASSWORDCHAR, // message to send
(WPARAM) wParam, // not used; must be zero
(LPARAM) lParam // not used; must be zero
);


Если результат равен 0, то PasswordChar не используется, иначе получаешь символ, которым заменяется текст в окне.


 
DarkReign   (2001-12-05 11:01) [9]

2 Виктор Щербаков:
Я знаю только имя задачи в системе.


 
Керик   (2002-01-11 05:24) [10]

Ну если знаешь заголовок её то FindWindow(nil, "Заголовок");
Вместо "Заголовок" впиши ззаголовок окна и всё будет о`кей!


 
Milz ©   (2002-01-11 10:27) [11]

Вот пример получения списка всех окон в системе с сопутствующей информацией, выдели нужное по имеющейся информации (+ см. TProcessEntry32).


uses tlhelp32;

procedure TAppMainForm.UpdProcList;
label lbCont;
var
FindWnd : hWnd;
buff: ARRAY [0..127] OF Char;
str:string;
hSn: THandle;
FindWProcID:DWORD;
lppe: TProcessEntry32;
begin
Proclist.Clear;
//Делаем снимок процессов
hSn := CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS ,0);
// перебираем список окон
FindWnd := GetWindow(Handle, gw_HWndFirst);
while FindWnd <> 0 do begin
// ID окна
str := IntToHex(FindWnd,8);
// Заголовок окна
GetWindowText(FindWnd, buff, sizeof(buff));
str:= str + " " + StrPas(buff);
// ID процесса, открывшего данное окно
GetWindowThreadProcessId(FindWnd,@FindWProcID);
str:= str + " [" + IntToHex(FindWProcID,8);
// Имя файла процесса, открывшено данное окно
//Перебираем список всех процессов и находим относящийся к данному окну
if Process32First(hSn, lppe) then
repeat
//Сравниваем ID и получаем имя ехе и путь
if lppe.th32ProcessID = FindWProcID then begin
str:= str + " " + ExtractFileName(lppe.szExeFile) + "]";
goto lbCont;
end;
until not Process32Next(hSn, lppe);
lbCont:
Proclist.Items.AddObject(str,tObject(FindWnd));
FindWnd := GetWindow(FindWnd, gw_hWndNext);
end;
CloseHandle(hSn);
Proclist.ItemIndex := 0;
end;



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

Текущий архив: 2002.03.11;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.012 c
14-32561
Knight
2002-01-23 16:04
2002.03.11
СРОЧНО!! ПОМОГИТЕ!!! ПОЖАЛУЙСТА!!!!!!!!!


3-32413
Vadim
2002-02-11 12:03
2002.03.11
Обновление поля PATH в иерархической таблице


14-32538
kaif
2002-01-21 19:37
2002.03.11
Как приобрести компоненты?


3-32393
Biocron
2002-01-11 00:23
2002.03.11
База MDB на Delphi


7-32587
wHammer
2001-11-30 13:05
2002.03.11
Speaker