Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.06;
Скачать: CL | DM;

Вниз

Get Application Title   Найти похожие ветки 

 
d_oleg ©   (2003-11-28 12:23) [0]

Помогите пожалуйста - средствами 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. В чём-же там ошибка?


 
Dimka Maslov ©   (2003-11-28 12:32) [1]

Тебе где надо получать заголовок в DOS программе работающей под Windows? Или всё-таки в Delphi? Во втором случае код 32-битный и адресное пространство линейное. Но всё это тебе не понадобится. А понадобится тебе Application.Title.


 
d_oleg ©   (2003-11-28 12:37) [2]

ну не нужен мне application.title. Ну не хочу я Forms за собой тянуть, ибо программулинка на 2 действия и окно тоже через API делается. В чём в ассемблере-то проблема, кто знает?


 
clickmaker ©   (2003-11-28 12:55) [3]


> d_oleg © (28.11.03 12:37) [2]

Если одно окно, то его заголовок и есть то, что тебе нужно


 
Dimka Maslov ©   (2003-11-28 13:30) [4]

В примере приведён способ получения заголовка окна Windows, в котором работает приложение DOS. И работать это код будет, если его откомпилировать в турбо-паскале. В Delphi создаются 32-битные приложения для Windows с линейным адресным пространством в них не может быть ни сегмента ни смещения. А заголовком приложения будет то, что ты сам задашь при создании окна на апи.


 
Digitman ©   (2003-11-28 16:03) [5]


> ну не нужен мне 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;



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

Текущий архив: 2004.02.06;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.018 c
1-16302
kaginava
2004-01-28 14:39
2004.02.06
Определить изменение файла


4-16833
Awod
2003-11-27 11:45
2004.02.06
Сообщения при переключении между окнами разными способами


1-16415
Checist [root]
2004-01-22 15:21
2004.02.06
Проблема с фокусом


3-16138
Вованчик
2004-01-15 11:03
2004.02.06
и снова SELECT


1-16452
td
2004-01-27 21:12
2004.02.06
как перебрать объекты на форме