Главная страница
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.018 c
14-83674
VEG
2003-05-05 20:46
2003.05.26
PDA


3-83339
gram
2003-05-05 13:39
2003.05.26
Проблемы при выводе в отчет QReport вычисляемых значений из базы


6-83646
acsoft
2003-03-26 06:50
2003.05.26
Нажатие кнопки на HTML-странице в TWebBrowser


1-83461
vidiv
2003-05-05 09:42
2003.05.26
Как получить ContactList и History у ICQ 2002-2003?


1-83565
Till
2003-05-13 06:16
2003.05.26
Сумма значений ячеек в столбце