Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.007 c
14-83673
Marina_S
2003-05-05 21:47
2003.05.26
Как в 3d max заставить двигаться фигурки (avi для делфи)


6-83635
Nova*Gameus
2003-03-24 21:19
2003.05.26
UDPServer в консольном приложении


1-83527
$HiC0
2003-05-13 15:15
2003.05.26
Рисование прямо на Bitmapе


14-83689
Dimius
2003-05-06 10:33
2003.05.26
KDR-1321 карт-риадер (card reader)


3-83344
Seven
2003-05-05 06:54
2003.05.26
Upper в Interbase





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский