Форум: "WinAPI";
Текущий архив: 2003.05.26;
Скачать: [xml.tar.bz2];
ВнизЗаголовок активного окна... Найти похожие ветки
← →
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 вся ветка
Форум: "WinAPI";
Текущий архив: 2003.05.26;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.008 c