![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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;