Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.04;
Скачать: CL | DM;

Вниз

Как отловить сообщение приходящее от net send?   Найти похожие ветки 

 
LexaTyukha   (2004-01-20 16:52) [0]

Как отловить сообщение приходящее от net send?
Схема такая: отловить, обработать текст как мне нужно (отобразить в своей программе), блокировать Application Popup.


 
LexaTyukha   (2004-01-29 13:49) [1]

Удалено модератором
Примечание: Создание пустых сообщений ...


 
Rouse_ ©   (2004-01-29 17:17) [2]

В 98 вот так...

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, ExtCtrls;

type
 TForm1 = class(TForm)
   Timer1: TTimer;
   Memo1: TMemo;
   procedure Timer1Timer(Sender: TObject);
   procedure FormCreate(Sender: TObject);
 private
   { Private declarations }
 public
   MailSlot: THandle;
   ErrStr: array [0..MAX_PATH] of Char;
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
var
 CurrentSize, Size, Count: DWORD;
 Msg: String;
 Err: LongBool;
 I: Integer;
 From, sTo: String;
begin
 Count := 0;
 Err := GetMailSlotInfo(MailSlot, nil, Size, @Count, nil);
 if not Err then
 begin
   FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM,

                   nil,
                   GetLastError,
                   0,
                   @ErrStr[0],
                   MAX_PATH,
                   nil);
   Memo1.Lines.Add("Can not GetMailSlotInfo: " + String(ErrStr));
   Exit;
 end;
 if Count > 0 then
 begin
   SetLength(Msg, Size);
   ReadFile(MailSlot, Msg[1], Size, CurrentSize, nil);
   I := 1;
   while (Msg[I] <> #0) do Inc(I);
   From := Copy(Msg, 1, I - 1);
   Delete(Msg, 1, I);
   I := 1;
   while (Msg[I] <> #0) do Inc(I);
   sTo := Copy(Msg, 1, I - 1);
   Delete(Msg, 1, I);
   OemToChar(PChar(From), PChar(From));
   OemToChar(PChar(sTo), PChar(sTo));
   OemToChar(PChar(Msg), PChar(Msg));
   Memo1.Lines.Add("Получено сообщение от: " + From +
   " для " + sTo + #13#10 + Msg);
 end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 MailSlot := CreateMailslot("\\.\mailslot\messngr", 0, MAILSLOT_WAIT_FOREVER, nil);
 if MailSlot = INVALID_HANDLE_VALUE then
 begin
   FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM,
                   nil,
                   GetLastError,
                   0,
                   @ErrStr[0],
                   MAX_PATH,
                   nil);
   Memo1.Lines.Add("Can not create mailslot: " + String(ErrStr));
   Exit;
 end;
end;

end.


А в NT этот же код, но предварительно сделав вот так:

uses ...WinSvc;

...

var
 hSCM, hSrv: THandle;
 SS:SERVICE_STATUS;
begin
 hSCM:=OpenSCManager(nil,nil,SC_MANAGER_ALL_ACCESS);
 hSrv:=OpenService(hSCM,"Messenger",SERVICE_ALL_ACCESS);
 ControlService(hSrv,SERVICE_CONTROL_STOP,SS);
 CloseServiceHandle(hSrv);
 CloseServiceHandle(hSCM);


Желаю успехов


 
LexaTyukha   (2004-01-29 17:59) [3]

Спасибо! Буду пробовать!



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

Текущий архив: 2004.04.04;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.021 c
14-1078439802
Talla2k
2004-03-05 01:36
2004.04.04
ICQ


4-1075291202
Guest_2004
2004-01-28 15:00
2004.04.04
ShowWindow(Application.Handle,SW_HIDE)


1-1079640831
Serzh ML
2004-03-18 23:13
2004.04.04
Чтение из потока,.


4-1074912216
Reals
2004-01-24 05:43
2004.04.04
Узнать выделенный текст в чужом окне.


1-1079270328
A JI E LLI A
2004-03-14 16:18
2004.04.04
Использование функции FloatToStr