Помощь - Поиск - Пользователи - Календарь
Полная версия: WINApi
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Делфи
Client
Привет!
Сходил по ссылке, почитал. Код там для Си, а функции для Delphi работают и остаются такими же?
Хочу начать с самого простого - узнать заголовок окна (любое окно). Как делать не знаю. Надо создавать консольное приложение или не обязательно?
И если можно ссылку для дельфи
volvo
Цитата
Код там для Си, а функции для Delphi работают и остаются такими же?
Да, названия функций не меняются. На то и API, чтобы можно было хоть из С, хоть из Дельфи, хоть из Ассемблера, или из Фортрана вызывать.

Цитата
Хочу начать с самого простого - узнать заголовок окна (любое окно). Как делать не знаю. Надо создавать консольное приложение или не обязательно?
Ни разу не обязательно делать это именно консольным приложением. Хочешь - добавь кнопку в обычное VCL-приложение, и повесь на нее нужный код.

Цитата
И если можно ссылку для дельфи
DRKB устроит?
Client
GetWindowText() функция с 3 параметрами, но какими?

Добавлено через 8 мин.
стоп, сначала же надо найти окно, а потом узнать заголовок?
volvo
Цитата
сначала же надо найти окно, а потом узнать заголовок?
Вот именно. Поэтому ты сначала определись, что тебе вообще известно, и что ты хочешь найти, а потом будем думать, та ли это функция или надо использовать другую.
Client
Открыт блокнот. При нажатии на кнопку в Label должен поместиться заголовок блокнота.
Для этого нужна переменная типа HWND. Она вроде содержит код окна...
volvo
Ага... А рядом с блокнотом открыть еще один блокнот, и Word с тем же заголовком, что первый блокнот. И что будет? КАК твоя программа определит, блокнот это или нет, и какой из блокнотов тебе нужен? Постановку задачи давай, а не то, что ты хочешь видеть...

Как пример можешь посмотреть: "DRKB -> WinAPI и Железо -> Приложения и процессы -> Работа с чужими процессами -> Список окон + определение приложения, создавшего эти окна"

Ты все еще хочешь то, что написал выше? smile.gif
Client
Постановки задачи нету, сам придумал ) открыт 1 блокнот, мне хотя бы это smile.gif
Цитата
Ты все еще хочешь то, что написал выше?
Да
Unconnected
Хм... Хэндл окна, и его заголовок - это ведь разные вещи? Тогда, если искать окно блокнота так:

Код
FindWindow(nil, 'Безымянный - notepad2')
, то его заголовок естесственно и будет равен "Безымянный - notepad2", значит, надо заранее узнать вручную хендл блокнота?..
Client
Wnd := FindWindow('Notepad', nil);
Так ищется окно, а вот как из Wnd вытащить заголовок...
Вроде метод GetWindowText, но не получается у меня
Unconnected
var wnd:THandle;
TmpArray : array[0..MAX - 1] of Char;
begin
Wnd := FindWindow('Notepad2', nil);
GetWindowText(wnd, @TmpArray, MAX);
label1.caption:=tmparray;
end;


У меня блокнот нестандартный, замени Notepad2 на Notepad.smile.gif
Client
Делал так же, только переменная типа HWND и
GetWindowText(wnd, TmpArray, MAX);//а не @TmpArray 
Что значит @ (адресация?)?
Спасиб, работает
Unconnected
Как мне подсказали, в Windows надо работать с указателем на начало массива:)
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.