Главная страница
    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.008 c
6-83618
div
2003-03-25 06:48
2003.05.26
Связь по USB


7-83779
megadeth
2003-03-25 20:17
2003.05.26
Как отловить чужое обращение к СОМ порту


1-83548
User
2003-05-13 12:01
2003.05.26
Нажатие Ctrl?


14-83651
QUE
2003-05-07 16:01
2003.05.26
Выполнить команду на сервере и получить результат выполнения


14-83674
VEG
2003-05-05 20:46
2003.05.26
PDA





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