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

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

Опять NET SEND [D7, Win2k]


Страницы:   1 2

AlexeyITN ©   (2004-03-10 18:25:00) 

Изужажлась эта тема на всех форумах. Вся ясно и понятно!
Не понятно одно как реализовать перехват winpopup, кажется, окна...то бишь, если приходит NET SEND, то его самому показывать\не показывать....
Слышал, мол, какую-то почтовую службу у Винды отключать...
но КАК? Помогите, пожайлуста...с примерчиком желательно :)
Заранее благодарен!


Rouse_   (2004-04-02 21:49:00) [21]

Видимо что-то не так сделал...


MetalFan   (2004-04-02 17:56:00) [22]

не работает((( сообщения не ловит(((
а надо!


Rouse_   (2004-03-11 11:29:00) [23]

отключить службу сообщений

uses ..., WinSvc;

procedure TForm1.Button1Click(Sender: TObject);
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);
end;


Потом запустить данный код:
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.


когда уже данная возможность не нужна - запустить службу сообщений
procedure TForm1.Button2Click(Sender: TObject);
var
 hSCM, hSrv: THandle;
 SS:SERVICE_STATUS;
 Par: PChar;
begin
 Par := nil;
 hSCM:=OpenSCManager(nil,nil,SC_MANAGER_ALL_ACCESS);
 hSrv:=OpenService(hSCM,'Messenger',SERVICE_ALL_ACCESS);
 StartService(hSrv, 0, Par);
 CloseServiceHandle(hSrv);
 CloseServiceHandle(hSCM);
end;


Страницы:   1 2

Наверх

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