Главная страница
    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.46 MB
Время: 0.008 c
3-83329
eee
2003-05-05 12:23
2003.05.26
DBGrid


3-83398
Шурик Ш
2003-05-06 16:48
2003.05.26
Как узнать имя, под которым пользователь подключился к БД?


3-83402
User_OKA
2003-05-03 11:33
2003.05.26
Locate


1-83570
Ler
2003-05-12 16:34
2003.05.26
Ну Очень простой вопрос !!! (кол-во строк в лейбле )


14-83747
Fiend
2003-05-07 09:45
2003.05.26
Поздравляю с праздником.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский