![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Get Application Title
d_oleg © (2003-11-28 12:23:00)
Помогите пожалуйста - средствами API нужно получть заголовок приложения. В MSDN описана ассемблерная вставка:
mov ah, 16h ; Windows multiplex function
mov al, 8Eh ; VM Title
mov di, seg AppTitle ; see below
mov es, di
mov di, offset AppTitle
mov cx, Size ; see below
mov dx, 2 ; Get Application Title
int 2Fh
cmp ax, 1
je success
но когда я её вставляю в делфи в виде:
function GetApplicationTitle: String;
var
ResultBuffer: pChar;
resultBufPtr: Pointer;
buflen: Word;
begin
resultBufPtr := @ResultBuffer;
buflen := MaxWord;
asm
mov ah, 16h // Windows multiplex function
mov al, 8Eh // VM Title
mov di, seg resultBufPtr
mov es, di
mov di, offset resultBufPtr
mov cx, buflen
mov dx, 2 // Get Application Title
int 2Fh
cmp ax, 1
end;
компилятор ругается на 3ю строчку ассемблерного кода (mov di, seg resultBufPtr), говорит Inline assembler syntax error. В чём-же там ошибка?
Digitman (2003-11-28 16:03:00) [1]
> ну не нужен мне application.title. Ну не хочу я Forms за
> собой тянуть
ну и не тяни ! можно подумать - заставляет тебя кто-то)
но и головой чуть-чуть работать надо тоже !
открываешь этот модуль , ищешь соотв.метод и берешь его алгоритм за основу ! делов-то)
function TApplication.GetTitle: string;
var
Buffer: array[0..255] of Char;
begin
if FHandleCreated then
SetString(Result, Buffer, GetWindowText(FHandle, Buffer,
SizeOf(Buffer)))
else
Result := FTitle;
end;
Dimka Maslov (2003-11-28 13:30:00) [2]
В примере приведён способ получения заголовка окна Windows, в котором работает приложение DOS. И работать это код будет, если его откомпилировать в турбо-паскале. В Delphi создаются 32-битные приложения для Windows с линейным адресным пространством в них не может быть ни сегмента ни смещения. А заголовком приложения будет то, что ты сам задашь при создании окна на апи.
clickmaker (2003-11-28 12:55:00) [3]
> d_oleg © (28.11.03 12:37) [2]
Если одно окно, то его заголовок и есть то, что тебе нужно
d_oleg (2003-11-28 12:37:00) [4]
ну не нужен мне application.title. Ну не хочу я Forms за собой тянуть, ибо программулинка на 2 действия и окно тоже через API делается. В чём в ассемблере-то проблема, кто знает?
Dimka Maslov (2003-11-28 12:32:00) [5]
Тебе где надо получать заголовок в DOS программе работающей под Windows? Или всё-таки в Delphi? Во втором случае код 32-битный и адресное пространство линейное. Но всё это тебе не понадобится. А понадобится тебе Application.Title.