Главная страница
    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.46 MB
Время: 0.013 c
2-1150789331
Gizza
2006-06-20 11:42
2006.07.23
MouseMove


2-1152036071
Geonew
2006-07-04 22:01
2006.07.23
Таблица


1-1149600174
Тфьу
2006-06-06 17:22
2006.07.23
Не нашел, как получить картинку TChart а...


2-1151954148
Tara
2006-07-03 23:15
2006.07.23
Использование программы сделанной в Дельфи без установления Деьфи


3-1147188386
demon81
2006-05-09 19:26
2006.07.23
Переподключение к MS SQL Server при ошибке





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