Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2006.07.23;
Скачать: [xml.tar.bz2];

Вниз

Посылка сообщения (типа net send от другого имени..   Найти похожие ветки 

 
Ifrit ©   (2006-03-16 12:17) [0]

Помогите! Весь инет облазил - не нашел!
1 способ:

   GetMem(PWCMsgName, 2 * Length(nm) + 2);
   GetMem(PWCMsgFrom, 2 * Length(psvd) + 2);
   GetMem(PWCSendMsg, 2 * Length(s) + 2);
   StringToWideChar(nm, PWCMsgName, Length(nm) + 2);
   StringToWideChar(psvd, PWCMsgFrom, Length(psvd) + 2);
   StringToWideChar(s, PWCSendMsg, Length(s) + 2);
   Error := NetMessageBufferSend(nil, PWCMsgName,
                       PWCMsgFrom, PWCSendMsg, Length(s) * 2 + 2);


Если PWCMsgFrom := nil или := PWCMsgName, то все проходит нормально.. Но я-то хочу отправлять от другого имени, а тогда:
"NERR_NameNotFound - The message alias could not be found on the network."

2 способ:


 SetLength(dps, Length(sTo));
 CharToOEM(PChar(sTo), @dps[1]); sTo := dps;
 SetLength(dps, Length(from));
 CharToOEM(PChar(from), @dps[1]); from := dps;
 SetLength(dps, Length(s));
 CharToOEM(PChar(s), @dps[1]); s := dps;

 ZeroMemory(@Buf, SizeOf(Buf));
 For Len := 0 to Length(From) - 1 do Buf[Len] := From[Len + 1];
 For Len := 0 to Length(sTo) - 1 do
                           Buf[Length(From) + Len + 1] := sTo[Len + 1];
 For Len := 0 to Length(s) - 1 do
          Buf[Length(From) + Length(sTo) + Len + 2] := s[Len + 1];
 Len := Length(from) + Length(sto) + Length(s) + 3;
 MSopen := CreateFile(PChar("\\" + nm + "\mailslot\messngr"),
               GENERIC_ALL, FILE_SHARE_READ, nil, OPEN_EXISTING,
                                                FILE_ATTRIBUTE_NORMAL, 0);

 WriteFile(MSopen, Buf, Len, Len, nil);
 

 Но в этом случае сообщение обрезается до 128 символов... Притом возвращает в Len полную длину, как будто отправил все...


 
GanibalLector ©   (2006-03-17 01:12) [1]

Через Raw делай! И примеры найдешь в сети ;)
З.Ы. Делал,работает,НЕ дам исходники. Могу только проконсультировать ;)


 
Ifrit ©   (2006-03-17 08:57) [2]


> Через Raw делай! И примеры найдешь в сети ;)
> З.Ы. Делал,работает,НЕ дам исходники. Могу только проконсультировать
> ;)

Как послать через Raw? Можешь кинуть ссылку?


 
Ifrit ©   (2006-03-17 08:58) [3]

Один способ заработал..
Я просто запутался с преобразованием типов..

function NSend(nm, s, psvd: WideString): Boolean;
const WideSize = SizeOf(WideChar);
Var FromName: String;
   n: Cardinal;
Begin
Result := False;
FromName := "1";
psvd := FromName;
n := NetMessageNameAdd(nil, PWideChar(FromName));
If (n = 0) or (n = 2276) then begin
 try
  n := NetMessageBufferSend(nil, PWideChar(nm), PWideChar(psvd),
      PBYTE(s), Length(s) * WideSize + 1);
  if n = ERROR_SUCCESS then Result := True;
 finally
  NetMessageNameDel(nil, PWideChar(FromName));
 end;
end;
End;


 
Ifrit ©   (2006-03-17 10:44) [4]

Звиняюсь, опять ошибка, в функциях NetMessageNameAdd,
NetMessageNameDel нужно вставлять строки в формате Unicode:

Var Data: PAnsiChar;
   er: DWord;
   Unicode: PWideChar;
...  
 Data := StrAlloc(SizeOf(sFrom) * WideSize + 1);
 Unicode := StringToWideChar(sFrom, Pointer(Data), SizeOf(sFrom) *                                                                   WideSize + 1);
 er := NetMessageNameAdd(nil, Unicode);
...
 NetMessageNameDel(nil, Unicode);
 StrDispose(Data);



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2006.07.23;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.011 c
15-1150505780
ВиндосМЕ
2006-06-17 04:56
2006.07.23
Майкрософт прекращает поддержку Windows XP Service Pack 1


1-1149781802
pound
2006-06-08 19:50
2006.07.23
Как копировать в буфер обмена из Edit


2-1151866361
flaxe
2006-07-02 22:52
2006.07.23
Многомерный массив в файл


3-1148103907
VG
2006-05-20 09:45
2006.07.23
Где лежат роли в MS SQL


9-1132266433
Кефир87
2005-11-18 01:27
2006.07.23
Рендер в текстуру получается кривой!





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