Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

NetMessageBufferSend


Nikolas SHmuS ©   (2002-10-27 12:36:00) 

подскажите плиз... каким образом вызвать апи функцию.. NetMessageBufferSend???


Subfire   (2002-10-28 16:23:00) [1]

по поводу TNetMessageBufferSend просто стормозил =-)
За NET_API_STATUS пасибо!!!


ZZ   (2002-10-28 16:18:00) [2]

NET_API_STATUS = Cardinal;
TNetMessageBufferSend = function (список параметров взятый из MSDN);


Subfire   (2002-10-28 15:08:00) [3]

Marcus
Слушай, а что за NET_API_STATUS и TNetMessageBufferSend, я работаю в D5 и там ее нету :(
(поискал во всех заголовочных файлах - нету =)))
Попробовал в WinApi хелпах, но тож ниче разумного не нашел...
Можешь прислать эти структуры?


Marcus   (2002-10-28 14:27:00) [4]

Вот работающая функция

var
NetLibHandle: THandle;
// Если эти переменные сделать локальными, функция не
// сработает. Подозреваю, что это из-за того, что она
// выполняется в отдельном потоке
wszSrc: array[0..MAX_COMPUTERNAME_LENGTH] of WideChar;
wszDest: array[0..255] of WideChar;
wszMsg: PWideChar;
cbMsg: DWORD;

function SendMsg(const ComputerName, MsgText: string): NET_API_STATUS;
var
NetMessageBufferSend: TNetMessageBufferSend;
szComputerName: array[0..MAX_COMPUTERNAME_LENGTH] of char;
cbComputerName: Cardinal;
begin
cbComputerName := MAX_COMPUTERNAME_LENGTH + 1;
GetComputerName(szComputerName, cbComputerName);

MultiByteToWideChar(CP_ACP, 0, szComputerName, -1, wszSrc, MAX_COMPUTERNAME_LENGTH+1);
StringToWideChar(ComputerName, wszDest, SizeOf(wszDest));

cbMsg := (Length(MsgText) + 1) * 2;
wszMsg := AllocMem(cbMsg);
StringtoWideChar(MsgText, wszMsg, cbMsg);

if (NetLibHandle = 0) then
NetLibHandle := LoadLibrary("NETAPI32.DLL");
@NetMessageBufferSend := GetProcAddress(NetLibHandle, "NetMessageBufferSend");

Result := NetMessageBufferSend("", wszDest, wszSrc, wszMsg, cbMsg);

FreeMem(wszMsg);
end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо