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

Вниз

надо получить хендел окна   Найти похожие ветки 

 
Pifagor3d   (2003-09-24 18:17) [0]

есть проблема: в некоторой программе на некотором уроне находятся 3 TPanel мне надо получить хендел третьего TPanel через его класс а назв. он TPanel. Или как то по другому, если можно,


 
Ru   (2003-09-25 09:47) [1]

HWND FindWindow(
LPCTSTR lpClassName, // pointer to class name
LPCTSTR lpWindowName // pointer to window name
);

HWND FindWindowEx(
HWND hwndParent, // handle to parent window
HWND hwndChildAfter, // handle to a child window
LPCTSTR lpszClass, // pointer to class name
LPCTSTR lpszWindow // pointer to window name
);


 
Сергей Чурсин   (2003-09-25 10:43) [2]

Класс TWinControl обеспечивает использование в Delphi оконных элементов управления. Главное отличие оконного элемента управления от любых других — наличие дескриптора окна hWnd.

(Panel3 as TWinControl).Hwnd

если нужен поиск именно по имени из стринговой переменной, то
Form1.FindComponent("Panel3");
и преобразование

А так как Ru советует - хорошо окна ток в чужих программах искать... сразу видно прозападного программиста, ориентированного на C. ;)

Pifagor3d , а почему в потрепаться ? В "Система" или Winapi нада :)


 
Pifagor3d   (2003-09-25 20:16) [3]

Вы слегка не поняли задачу а состоит она в следующем:
я хочу брать текст из окна просмотра писем в The Bat!.
Первым делом включил прогу которая шла с делфями ws32.exe,
говорю ей следить за всем происходящим, потом клацаю в окне бата по прожке получаю путь , путь следующий:

TPanel__
|
|_->TPanel__
|
|_->TPanel
|
|_->TPanel__
|
|_->TNoteBook__
|
|__
|
|_->TPage_
|
|_ TTextEditor

Вот так то, так что если кто знает помогите , расскажите как добраться до TTextEditor.


 
Сергей Чурсин   (2003-09-26 10:08) [4]

ну раз в чужой проге так тогда и добирайся, как сказано - HWND FindWindow, HWND FindWindowEx...

для перебора всех окон - EnumWindow или что-то такое (так не помню, а под рукой нет).


 
Ru   (2003-09-26 10:28) [5]

var
PHandle,CHandle,CCHandle:HWND;
begin
PHandle:=FindWindow(nil,"The Bat!");//znahodymo vikno
CHandle:=FindWindowEx(PHandle, nil, "TPanel__",nil);//znahodymo dytayche vikno
...


 
Pifagor3d   (2003-09-26 18:36) [6]

Упс, народ там ошибка, TPanel без подчеркивания, в том то вся и соль что их там два, а ваще их там даже 3 TPanel, и все по названию TPanel (надеюсь вы поняли что TPanel это не название окна а его класс), и в том то и прикол что я не знаю как туда добраться, уже сто раз пробовал через FindWindow(), FindWindowEx(), но он возвращает не тот хендел который мне нужен. Если знаете может есть функция которая пересматривает все окна одно за другим на определенном уровне, и вообще неужели не предусмотреено как можно добраться до окна зная его класс при условии что на уровне поиска существуют окна с такимиже классами.

TPanel
|
|_->TPanel
|
|_->TPanel
|
|_->TPanel
| |
| |_->TNoteBook
| |
| |_->TPage
| |
| |_-> TTextEditor
|
_->TPanel

Вобщем народ я в отчаянии, перерываю дельфийский хелп, но чото пока без результатов, так что кто знает П О М О Г И Т Е ! ! ! !


 
Rem   (2003-09-26 20:11) [7]

А у этих TPanel кроме имени класса, наверное, и имя экземпляра класса есть?


 
Ru   (2003-09-29 10:44) [8]

Pifagor3d © (26.09.03 18:36) [6]

Za tebja tvoju rabotu tochno nikto ne sdelaet.

var
PHandle,CHandle,CCHandle:HWND;
begin
PHandle:=FindWindow(nil,"The Bat!");//znahodymo vikno
CHandle:=FindWindowEx(PHandle, nil, "TPanel",nil);//znahodymo dytayche vikno
CCHandle:=FindWindowEx(CHandle, nil, "TPanel",nil);//znahodymo dytayche vikno dityachogo vikna
CCHandle:=FindWindowEx(CHandle, CCHandle, "TPanel",nil);//znahodymo vtoroe dytayche vikno dityachogo vikna
...


 
Pifagor3d   (2003-09-29 17:47) [9]

Всем привет это опять Я. В общем нашелся человек который мне помог, я б конечно такое не замутил сам. Кому интересно читайте ниже.

---------------ПИСЬМО--------------------------------------------
procedure FillMemo(Handle: THandle);
begin
// процедура получения текста из TTextEditor
// будут проблемы, присылайте код, будем разбираться
end;

function ChildTree(Handle: HWND; Info: Pointer): BOOL; stdcall;
var
ClassName : array [0..256] of Char;
begin
Result := True;
GetClassName(Handle, ClassName, 255); // если класс
совпадает,
if ClassName = "TTextEditor" then // достаем текст
begin
FillMemo(Handle);
Result := False;
end;
end;

procedure TForm1.Button1Click(Sender: TObject); // Button1.OnClick;
var
hndBat : THandle;
begin
hndBat := FindWindow(nil, "The Bat!");
EnumChildWindows(hndBat, @ChildTree, 0);
end;

--
С уважением,
Алексей mailto:stalcom@ua.fm
----

-> http://rabota.alkar.net :: http://mobila.net.ua

---------------------ПИСЬМО--------------------------------------

А мой e-mail Pifagor3d@ukr.net

Всем спасибо и пока ! ! ! ! ! ! ! ! ! !



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

Форум: "Потрепаться";
Текущий архив: 2003.10.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.011 c
1-51255
ghost_by
2003-10-03 13:20
2003.10.16
TStringGrid - как запретить редактирование отдельных ячеек?


3-51096
Filat
2003-09-19 10:33
2003.10.16
SQL выборка и переход на эту запись в DataSet


1-51226
Dimaz-z
2003-10-03 17:48
2003.10.16
Как узнать информацию и билде и дате компиляции?


14-51445
Minog
2003-09-27 17:02
2003.10.16
Спутниковый интернет


1-51326
ss300
2003-10-06 07:23
2003.10.16
Удаление строки в текстовом файле





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский