Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2002.03.11;
Скачать: [xml.tar.bz2];

Вниз

Как получить 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 вся ветка

Форум: "WinAPI";
Текущий архив: 2002.03.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.004 c
3-32398
torero
2002-02-09 16:59
2002.03.11
При вставке в таблицу foxpro *.dbf строки через BDE (sql запрос из TQuery)вместо русских букв одни ######.


4-32609
ЛамерОК
2002-01-10 23:29
2002.03.11
Раскладка клавиатуры!


3-32404
Paxer
2002-02-11 19:33
2002.03.11
Подскажите! ADOQuery, UPDATE - ошибка Operation must use updateble query


4-32612
Landgraph
2002-01-11 11:57
2002.03.11
С OpenGL никто не обсчался чтоли?!


14-32577
33
2002-01-23 09:09
2002.03.11
Русская фантастика.Что нового?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский