![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Заголовок активного окна... [D7, Win95/98, Win2k]
kpv-10k © (2003-03-19 21:05:00)Господа! Столкнулся с такой проблемой : моя ф-ция если запускается из 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;
Diamond Cat (2003-04-01 02:06:00) [1]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;
Zazoo (2003-03-31 23:54:00) [2]Если всё-же нужен string:
uses ShareMem;
Обязательно первый модуль в списке в проге и библиотеке + BORLNDMM.DLL в <windir>\system32
Morfein (2003-03-31 22:05:00) [3]>>Songoku
твой случай тяжёлый... а чем написанное тобой отличается от написанного kpv-10k ? Выделением памяти? при таком коде выделяется память, в неё копируется заголовок окна, а потом выделяется память под Result:String и в него(Result) КОПИРУЕТСЯ содерж. переменной R!
procedure GetWText(lpStr : pchar);
begin
if lpStr = nil then
exit;
GetWindowText(GetForegroundWindow, lpStr, lstrlen(lpStr));
end;
только теперь непонятно, а зачем такую простую процедуру засовывать в DLL?
Songoku (2003-03-31 21:56:00) [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 21:44:00) [5]Комментарий, который сообщает, что лучше не использовать при возвращении значений из функций бтблиотеки тип STRING... а если используете, то принимайте специальные меры!
А если проще, то передавай лучше текст через указатель... STIRNG - тип "антисистемный" :)
KPV-10k (2003-03-31 21:21:00) [6]> Guerrillero
Что значит "Читал большой комментарий вначале кода ?" (какой комментарий)
Guerrillero (2003-03-20 00:00:00) [7]Читал большой комментарий вначале кода ?