Форум "Delphi"
Паскаль, Делфи
#0 Карлсон © 06.05.08 22:12:20 - 07.05.08 14:49:26 GetWindowTextКак работает эта функция?) Вообще не въехал.. Или как по другому можно узнать заголовок окна?) Заранее Спасибо..
|
|
> #0 Карлсон © а с какими параметрами ты вызываешь функцию? Если например тебе нужно узнать заголовок активного окна, то сначала получить handle на активное окно с помощью GetActiveWindow функции, а потом получить его заголовок с помощью GetWindowText функции. |
|
#2 Карлсон © 07.05.08 06:55:00
GetWindowText(hwnd, PChar,255) С handlом там всё понятно.. Когда вызываеться эта процедура в pchar мусор образуеться... Вместо символов... |
|
Нужно примерно вот так: |
|
Получить строку от функции Win API несколько сложнее, чем передать её. Обычно это делается в несколько этапов. Сначала с помощью функций Win API выясняется, какова длина строки. Затем резервируется место для неё. А только затем вызывается та функция, которая копирует строку в приготовленный буфер. Например, для получения заголовка окна нужно использовать функции GetWindowTextLength и GetWindowText. В некоторых случаях можно облегчить себе жизнь, если существует ограничение на максимальную длину строки. Например, атом не может быть длиннее 255-ти символов. Поэтому можно выделить буфер размером 256 символов (один - для завершающего нуля), и сразу копировать туда атом. В любом случае полученная строка будет нуль-терминированной. Чтобы преобразовать её к обычной, используйте функцию StrPas. Или же можно просто выполнить присвоение S := P, где S - типа string, P - PChar. Другой тип кодировки, поддерживаемый в Windows, называется Wide. В отличие от ANSI в нём для представления одного символа используется не один, а два байта. Все функции, работающие со строками, написаны в двух модификациях - для ANSI и для Wide. Например, если посмотреть модуль user32, в котором, как утверждает справка, описана функция GetWindowText, то видно, что там нет такой функции. Там есть две другие функции - GetWindowTextA и GetWindowTextW, работающие каждая с соответствующей кодировкой. И это относится ко всем функциям, работающим со строками. К тому имени функции, которое указано в справке, необходимо добавить 'A' или 'W', в зависимости от используемой кодировки. |
|
#5 Карлсон © 07.05.08 14:49:26
Во) То что надо) спасибо=) |
Написать ответ |
|
