Форум: "WinAPI";
Текущий архив: 2006.05.21;
Скачать: [xml.tar.bz2];
ВнизКак получить строку SendMessage Найти похожие ветки
← →
delphi-oracle © (2006-02-23 08:41) [0]Я думал, что по
Если сделать, как Рихтер, то ето должно было бы выглядеть так:sendmessage(form1.Handle,wm_gettext,sizeof(s),lparam(s)); S:Pchar //строка C
К сожалению, при исполнении кода выскакивает ошыбка в Controls / TControl.WndProc. Когда начал менять исходник, смог избавиться от ошыбки, но никакого результата все равно не получил. Видел все ошыбки начиная от Access Violation до ошыбки в ntdll. Здаюсь. Если кто-то может объяснить мне хоть что-то, очень спасибо.
← →
delphi-oracle © (2006-02-23 09:08) [1]Защита от приколов
Ну не хоть что-то, а как решыть проблему. Спасибо.
← →
begin...end © (2006-02-23 09:08) [2]Перед получением текста нужно узнать его длину и выделить необходимый объём памяти для буфера, в который текст будет помещён. И, посылая WM_GETTEXT, нужно указывать размер буфера, а не размер указателя на него. Вот так:
var
P: PChar;
L: Integer;
begin
L := SendMessage(Handle, WM_GETTEXTLENGTH, 0, 0) + 1;
GetMem(P, L);
try
SendMessage(Handle, WM_GETTEXT, L, Integer(P));
MessageBox(0, P, "Text", MB_OK)
finally
FreeMem(P)
end
end
PChar и GetMem/FreeMem можно заменить на String и SetString.
← →
Nick Denry © (2006-02-23 17:27) [3]delphi-oracle © (23.02.06 08:41)
ВМРЯ жи ши
← →
Kolan © (2006-02-24 10:38) [4]Еще одно решение. Передовать не строку а число, а при получении сообщения вызывать функцию, которая и вернет строку..
StatusBar.Panels[2].Text
:= DefineFFTError(TFFTErrorType(Msg.LParam));
function DefineFFTError(Error: TFFTErrorType): string;
begin
case Error of
ffteDeviceReplyError:
Result := "Íå äîæäàëñÿ îòâåòà óñòðîéñòâà.";
end;
end;
Смысл ясен я надеюсь...
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2006.05.21;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.013 c