Avatar billede mulbo Nybegynder
26. februar 2004 - 17:09 Der er 20 kommentarer og
1 løsning

Net Send

Jeg vil lige høre om man kan sætte hvem beskeden er fra i cmd commando'en til net send?.... da det er den jeg bruger i delphi... eller kan jeg gøre noget så man kan vælge navn...
Her er min delphi kode... den virker fint.. men man kan ikke sætte From Name....
Er der en mulighed for at jeg kan få den funktion (From Name)
Eller findes det kun i .net c++ vb?
Har søgt meget på nettede!

Her er min Source: ( i kan lige gætte jer til formen... eller downloade den på http://mulbo.com under delphi og så download ;)

procedure TForm1.Button1Click(Sender: TObject);
var
  antal : integer;
  computernavn : STRING;
  besked : STRING;
  X : integer;
  MyINI : TINIFile;
  PathToINIFile : STRING;
begin
antal := StrToINT(edit3.text);
computernavn := edit1.Text;
besked := edit2.Text;
for X := 1 to antal do
  begin
    WinExec(Pchar('Net send '+Edit1.text+' '+Edit2.text),SW_HIDE);
  end;
  PathToINIFile := IncludeTrailingBackslash(ExtractFilePath(ParamStr(0)))+'MNS.ini';
  MyINI := TINIFILE.Create(PathToINIFile);
  MyINI.WriteString('MNS', 'Computernavn', computernavn);
  MyINI.WriteString('MNS', 'Besked', besked);
  MyINI.WriteInteger('MNS', 'Antal', antal);
  MyINI.Free;
  end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
showmessage('Tak fordi du bruger mit program.. MvH MulBo');
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  MyINI : TINIFile;
  PathToINIFile : STRING;
begin
  PathToINIFile := IncludeTrailingBackslash(ExtractFilePath(ParamStr(0)))+'MNS.ini';
  MyINI := TINIFILE.Create(PathToINIFile);
  edit1.Text := MyINI.ReadString('MNS', 'Computernavn', '');
  edit2.Text := MyINI.ReadString('MNS', 'Besked', '');
  edit3.Text := IntToStr(MyINI.ReadInteger('MNS', 'Antal', 1));
  MyINI.Free;
end;
Avatar billede mulbo Nybegynder
26. februar 2004 - 17:11 #1
Det er bare kommando'en til
WinExec(Pchar('Net send '+Edit1.text+' '+Edit2.text),SW_HIDE);
jeg mangler...
Har leget meget men net send og net send help.. men kan sgu ikke finde ud af det...
Jeg har fundet ud af i VB kan man bruge: NetSendMessage();
Men kan sgu ikke finde noget til selve kommando'en eller delphi!
Avatar billede mulbo Nybegynder
26. februar 2004 - 17:28 #2
Forresten...
Hvordan kan jeg locke et edit felt til kun at modtage input som tal... at man kun kan skrive integer i det edit felt?
Avatar billede r.hegaard Nybegynder
26. februar 2004 - 17:47 #3
Prøv noget i retning af følgende, til at fjerne muligheden for at indtaste bogstaver m.m.:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
const
  nummer=['1','2','3','4','5','6','7','8','9','0',Chr(VK_BACK),'-'];
begin
  if not (key in nummer) then key:=#0;
end;
Avatar billede mulbo Nybegynder
26. februar 2004 - 17:49 #4
Thx... kan du også svare på den øverste opgave? eller den for dårligt forklaret eller hvad`? :P
Avatar billede r.hegaard Nybegynder
26. februar 2004 - 17:57 #5
Jeg kan ikke umiddelbart svare på det. Og jeg har ikke lige et program til at udpakke rar-filer....
Kunne du bruge det andet ??
Avatar billede mulbo Nybegynder
26. februar 2004 - 17:59 #6
Yes det virker 10-4
Nåår håber du kan pakke zip filer ud....
http://mulbo.com/MNS.zip ;)

(Hvorfor failer den når jeg laver en Float
alså:
var
  tal1 : Float;

Det burde den da ikke faile på eller hvad? )
Avatar billede borrisholt Novice
26. februar 2004 - 19:45 #7
mulbo>> Har du noget VB kode der viser hvordan man sætter afsendernavn (så fixr jeg den i Delphi) ?
r.hegaard>>
Prøv med den her den er simplere

const
  nummer=['1','2','3','4','5','6','7','8','9','0',Chr(VK_BACK),'-'];
begin
  if not (key in ['0' .. '9', Chr(VK_BACK),'-']) then
    key:=#0;
end;

Jens B
Avatar billede mulbo Nybegynder
26. februar 2004 - 19:57 #8
ex fra en stor kode...
NetSendMessage(lstTarget.List(D), txtMessage, vbNullString, FromName)

og så det her link...
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/netmgmt/netmgmt/netmessagebuffersend.asp
Avatar billede mulbo Nybegynder
26. februar 2004 - 19:58 #9
men det link til microsoft... der skal man hvis have en server til at køre... men jeg har et program der er skrevet i vb... som kan det... og det virker lige som jeg gerne vil have mit delphi program til... sådan ca. ;)
Kan godt sende det til dig eller uploade det på min hp
Avatar billede mulbo Nybegynder
26. februar 2004 - 20:03 #10
Hvis nogle kan sige hvad jeg skal gøre iaften... så for i 200 points.....! Ekstre!
Avatar billede borrisholt Novice
26. februar 2004 - 20:52 #11
Det her kode kan sende en besked fra dig selv

function NetMessageBufferSend(ServerName, msgName, FromName: PWideChar; Buf: PWideChar; BufLen: Cardinal): Longint; stdcall; far; external 'NETAPI32.DLL';

procedure TForm1.Button2Click(Sender: TObject);
  //convert ASCII->UNICODE
  function JBStringToWideChar(var aPtr : pWideChar; const aValue : String) : Integer;
  begin
    Result := Length(aValue) * SizeOf(WideChar) + 1;
    GetMem(aPtr, Result);
    StringToWideChar(aValue, aPtr, Result);
  end;
var
  DestinationWideChar, SenderWideChar, MessageTextWideChar: pWideChar;
  DestinationStr, SenderStr, MessageStr: string;
  WideCharLength: Integer;
begin
  DestinationStr := 'Jens';
  SenderStr := 'Jens';
  MessageStr := 'Hest & Ulv';

  JBStringToWideChar(DestinationWideChar, DestinationStr);
  JBStringToWideChar(SenderWideChar, SenderStr);
  WideCharLength := JBStringToWideChar(MessageTextWideChar, MessageStr);
  NetMessageBufferSend(nil, DestinationWideChar, SenderWideChar, MessageTextWideChar, WideCharLength);

  WideCharLength := Length(DestinationWideChar);
  FreeMem(DestinationWideChar, WideCharLength);

  WideCharLength := Length(SenderWideChar);
  FreeMem(SenderWideChar, WideCharLength);

  WideCharLength := Length(MessageTextWideChar);
  FreeMem(MessageTextWideChar, WideCharLength);
end;


Sætter jeg et andet from name kommer den en fejl !

Prøv dig frem måske det blot er min maskine der er dum ?

Jens B
Avatar billede hrc Mester
26. februar 2004 - 22:15 #12
Du kan også dl. et kørende Delphi-eksempel herfra:

http://www.daestroke.com/cierhart/download/netsendsrc.zip
Avatar billede mulbo Nybegynder
27. februar 2004 - 15:52 #13
hrc...
Det kan mit program også...
Det skal bare være sådan at man kan ændre From Name
Avatar billede mulbo Nybegynder
27. februar 2004 - 20:09 #14
Det er famede iorden borrisholt
Det virker 10-4 i kan downloade programmet på MulBo.CoM ;)
Lav lige et Svar
Avatar billede athlon-pascal Juniormester
28. februar 2004 - 00:31 #15
Et par tips:

# Understøttelse af Windows 9x kan fås, ved at bruge en WinPopup-MailSlot-løsning.
Jeg vil anbefale http://djernaes.dk/martin/vcl.html - mdMailSlot. Faktisk behøver man ikke en gang at indsætte nogle komponenter på sin form, når man bare vil sende, man kan bare sørge for at uniten er med i ens uses, og så bruge:
SendToWinPopup('.', 'Modtager', 'Afsender', 'Besked');

Jeg vil anbefale, at du bruger Jens Borrisholts NetSend-kode når det er muligt, se næste til :o)

# Tjek om tjenesten Messenger kører (og om det overhovedet er Windows NT), hvis tjenesten kører (og det er Windows NT), bruges NetSend-metoden, hvis ikke bruges MailSlot-løsningen.
Brug evt. følgende kode til at tjekke om tjenesten Messenger kører:

uses WinSvc;

function MessengerServiceIsRunning: Boolean;
var
  OSVerInf: TOSVersionInfo;
  hService, hSCManager: SC_Handle;
  ServiceStat: TServiceStatus;
begin
  OSVerInf.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
  Result := GetVersionEx(OSVerInf);
  if Result then
    Result := OSVerInf.dwPlatformId = VER_PLATFORM_WIN32_NT;

  if not Result then
    Exit;

  Result := false;

  hSCManager := OpenSCManager(nil, nil, SC_MANAGER_CONNECT);
  if hSCManager <> 0 then
  try
    hService := OpenService(hSCManager, 'Messenger', SERVICE_QUERY_STATUS);
    if hService <> 0 then
    try
      if Boolean(QueryServiceStatus(hService, ServiceStat)) then
      begin
        Result := not (ServiceStat.dwCurrentState in [SERVICE_STOPPED, SERVICE_PAUSED]);
// Brug alternativt:
//        Result := ServiceStat.dwCurrentState = SERVICE_RUNNING;
      end;
    finally
      CloseServiceHandle(hService);
    end;
  finally
    CloseServiceHandle(hSCManager);
  end;
end;
Avatar billede borrisholt Novice
28. februar 2004 - 12:33 #16
Svar :-)
Avatar billede borrisholt Novice
28. februar 2004 - 13:39 #17
mulbo>> Som en sidebemærkning skal det lige nævnes at ekspertens regler siger max 200 points for samme spørgsmål :o)
Avatar billede mulbo Nybegynder
28. februar 2004 - 21:00 #18
yes hvordan kan jeg give dig dem?
Avatar billede r.hegaard Nybegynder
28. februar 2004 - 21:08 #19
mulbo> Kunne du ikke bruge mit svar til det med integers i editfelter ??
Avatar billede borrisholt Novice
29. februar 2004 - 09:17 #20
mulbo>> Bare glem det.. Jeg mangler dem ikke lige ... I stedet for synes jeg du skulle oprette et side spm til r.hegaard så han får lidt for sin validering af edit felt.

Jeg kan i øvrigt bedere lide denne implemtering af problemet :

type
  TCharSet = set of Char;

procedure ValidateEdit(Edit: TEdit; ValidChars: TCharSet = ['0'..'9']);
var
  s: string;
  i: Integer;
begin
  s := Edit.Text;
  for i := 1 to Length(s) do
    if not (s[i] in ValidChars) then
      Delete(s, i, 1);
  Edit.text := s;
  Edit.SelStart := Length(s);
end;


Jens B
Avatar billede mulbo Nybegynder
29. februar 2004 - 12:57 #21
yes yes... thx... r.hegaard
http://www.eksperten.dk/spm/471281
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester