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

Вниз

Заголовок активного окна...   Найти похожие ветки 

 
kpv-10k ©   (2003-03-19 21:05) [0]

Господа! Столкнулся с такой проблемой : моя ф-ция если запускается из DLL, то выдает всякий хлам типа квадратиков вместо букв, хотя если ее запустить из EXE, то всё нормально!
Вот пример ф-ции:

function ActiveApplicationTitle(): String;
Var
PAC : array[0..$FFF] of Char;
begin
FillChar(PAC, $FFF+1, 0);
GetWindowText(GetForegroundWindow, PAC, GetWindowTextLength(GetForegroundWindow)+1);
Result:=PAC;
end;


 
Guerrillero ©   (2003-03-20 00:00) [1]

Читал большой комментарий вначале кода ?


 
KPV-10k ©   (2003-03-31 21:21) [2]

> Guerrillero

Что значит "Читал большой комментарий вначале кода ?" (какой комментарий)



 
Morfein ©   (2003-03-31 21:44) [3]

Комментарий, который сообщает, что лучше не использовать при возвращении значений из функций бтблиотеки тип STRING... а если используете, то принимайте специальные меры!

А если проще, то передавай лучше текст через указатель... STIRNG - тип "антисистемный" :)


 
Songoku ©   (2003-03-31 21:56) [4]

function GetWText():String;
var r:LPSTR;
i:Integer;
begin
i:=GetWindowTextLength(GetForegroundWindow)+1;
r:=VirtualAlloc(nil, DWORD(i), MEM_COMMIT, PAGE_READWRITE);
GetWindowText(GetForegroundWindow,pchar(r),i);
Result:=r;
end;

попробуй вот это .... Напиши если получилось!!!



 
Morfein ©   (2003-03-31 22:05) [5]

>>Songoku
твой случай тяжёлый... а чем написанное тобой отличается от написанного kpv-10k ? Выделением памяти? при таком коде выделяется память, в неё копируется заголовок окна, а потом выделяется память под Result:String и в него(Result) КОПИРУЕТСЯ содерж. переменной R!


procedure GetWText(lpStr : pchar);
begin
if lpStr = nil then
exit;

GetWindowText(GetForegroundWindow, lpStr, lstrlen(lpStr));
end;


только теперь непонятно, а зачем такую простую процедуру засовывать в DLL?


 
Zazoo   (2003-03-31 23:54) [6]

Если всё-же нужен string:
uses ShareMem;
Обязательно первый модуль в списке в проге и библиотеке + BORLNDMM.DLL в <windir>\system32


 
Diamond Cat ©   (2003-04-01 02:06) [7]

function ActiveApplicationTitle(): String;
Var
PAC : array[0..max_path] of Char;
begin
zeromemory(@pac,sizeof(pac));
GetWindowText(GetForegroundWindow, PAC, sizeof(pac));
Result:=string(PAC);
end;



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

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

Наверх




Память: 0.48 MB
Время: 0.024 c
1-83573
xman
2003-05-13 11:48
2003.05.26
16 бит в трее


14-83719
sapr
2003-05-07 07:27
2003.05.26
Нестандартный DBGrid


3-83334
igor
2003-05-05 13:32
2003.05.26
Глюки ADO


1-83508
Ш-К
2003-05-15 23:36
2003.05.26
Проверка на приведение типов.


8-83614
imbicil
2003-02-11 12:59
2003.05.26
Линия связывающия два объекта