Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi NET SEND für Windows 98? REPLACEMENT (https://www.delphipraxis.net/20545-net-send-fuer-windows-98-replacement.html)

alcaeus 20. Apr 2004 15:09

Re: NET SEND für Windows 98? REPLACEMENT
 
Zitat:

Zitat von FlorianK
Hallo,

Noch mal zum
Zitat:

Außerdem möchte ich einen Nachrichtendienst programmieren der wenn eine Nachricht reinkommt, diese dann in einer MessageBox ausgibt.
Weiß jemand wie das hinbekommen kann? Oder hat zumindest eine Idee? :gruebel:


Sieh dir mal die Hilfe zu MessageDlg oder MessageDlgPos an, das wirkt wunder.
Falls du es direkt mit der WinAPI lösen willst, dort heißt die Funktion MessageBox oder MessageBoxEx. Die Hilfe enthält genug Informationen zu diesen beiden Befehlen.

FlorianK 20. Apr 2004 15:15

Re: NET SEND für Windows 98? REPLACEMENT
 
Zitat:

Zitat von alcaeus
Zitat:

Zitat von FlorianK
Hallo,

Noch mal zum
Zitat:

Außerdem möchte ich einen Nachrichtendienst programmieren der wenn eine Nachricht reinkommt, diese dann in einer MessageBox ausgibt.
Weiß jemand wie das hinbekommen kann? Oder hat zumindest eine Idee? :gruebel:


Sieh dir mal die Hilfe zu MessageDlg oder MessageDlgPos an, das wirkt wunder.
Falls du es direkt mit der WinAPI lösen willst, dort heißt die Funktion MessageBox oder MessageBoxEx. Die Hilfe enthält genug Informationen zu diesen beiden Befehlen.

Ich mein den
Nachrichtendienst
und nicht die MessageBox!

Florian K.

alcaeus 20. Apr 2004 15:17

Re: NET SEND für Windows 98? REPLACEMENT
 
:oops:
Sorry, ich dachte an die MessageBox, da das Wort kursiv war, kommt nicht wieder vor.
Ich habs zwar noch nie gemacht, aber wenigstens bei meinem D7Ent kann man einen Dienst erstellen (Datei->Neu->Andere, dann Dienst). Ich kenne mich damit aber überhaupt nicht aus, und gebe den Ball an erfahrene Leute ab...

MathiasSimmack 20. Apr 2004 15:38

Re: NET SEND für Windows 98? REPLACEMENT
 
1. Ein Programm zum Senden gibt es unter Win9x. Nennt sich WinPopup und kann auch Kontakt zu NT/2000/XP-Rechern aufnehmen.

2. Mailslots funktionieren zwar, allerdings können Nachrichten dann nur an PC-Namen geschickt werden. WinPopup dagegen empfängt auch Nachrichten für den Benutzernamen. Aber wer mit Mailslots arbeiten will: eine Dialogbox im Stil des Nachrichtenempfangs von NT/2000/XP schlägt nonVCL mit knapp 30k zu Buche. Ich glaube so groß war mein Empfänger. Muss ich mal gucken ...

alcaeus 20. Apr 2004 15:46

Re: NET SEND für Windows 98? REPLACEMENT
 
Zitat:

Zitat von MathiasSimmack
Mailslots funktionieren zwar, allerdings können Nachrichten dann nur an PC-Namen geschickt werden.

Das letzte Programm das ich mit Mailslots gesehen habe konnte an IP-Ranges schicken, also müsste es möglich sein. Vielleicht wurde aber nur ein Lookup-durchgeführt, ich weiß aber nicht ob das möglich ist.

MathiasSimmack 20. Apr 2004 16:20

Re: NET SEND für Windows 98? REPLACEMENT
 
Zitat:

Zitat von alcaeus
Das letzte Programm das ich mit Mailslots gesehen habe konnte an IP-Ranges schicken, also müsste es möglich sein. Vielleicht wurde aber nur ein Lookup-durchgeführt, ich weiß aber nicht ob das möglich ist.

Hä? Ich sprach von Benutzernamen (= Benutzerkonten!), du redest von IP-Adressbereichen, die üblicherweise nicht Benutzern sondern Computern zugeordnet sind.

FlorianK 20. Apr 2004 20:40

Re: NET SEND für Windows 98? REPLACEMENT
 
Hallo,
irgendwo habe ich mal den Code fürs herausfinden von Usern übers Netzwerk gefunden, ich weiß nicht ob er funktioniert:
Delphi-Quellcode:
unit NetworkUser;

interface

uses Windows;

type
   ATStrings = array of string;
   function GetUser(const ServerName: string): string;

implementation

function GetUser(const ServerName: string): string;
const MAX_NAME_STRING = 1024;
var userName,
  domainName: array [0..MAX_NAME_STRING] of Char;
  subKeyName: array [0..MAX_PATH] of Char;
  ArryList: ATStrings;
  subKeyNameSize: DWORD;
  index: DWORD;
  userNameSize: DWORD;
  domainNameSize: DWORD;
  lastWriteTime: FILETIME;
  usersKey: HKEY;
  sid: PSID;
  sidType: SID_NAME_USE;
  authority: SID_IDENTIFIER_AUTHORITY;
  subAuthorityCount: BYTE;
  authorityVal: DWORD;
  revision: DWORD;
  subAuthorityVal: ARRAY[0..7] OF DWORD;

  function getvals(s: string): integer;
  var i, j, k, l: integer;
    tmp: string;
  begin
    delete(s, 1, 2);
    j := pos('-', s);
    tmp := copy(s, 1, j - 1);
    val(tmp, revision, k);
    delete(s, 1, j);
    j := pos('-', s);
    tmp := copy(s, 1, j - 1);
    val('$' + tmp, authorityVal, k);
    delete(s, 1, j);
    i := 2;
    s := s + '-';
    for l := 0 to 7 do begin
      j := pos('-', s);
      if j > 0 then begin
        tmp := copy(s, 1, j - 1);
        val(tmp, subAuthorityVal[l], k);
        delete(s, 1, j);
        inc(i);
      end
      else break;
    end;
    result := i;
  end;

begin
  setlength(ArryList, 0);
  revision := 0;
  authorityVal := 0;
  FillChar(subAuthorityVal, SizeOf(subAuthorityVal), #0);
  FillChar(userName, SizeOf(userName), #0);
  FillChar(domainName, SizeOf(domainName), #0);
  FillChar(subKeyName, SizeOf(subKeyName), #0);
  if ServerName <> '' then begin
    usersKey := 0;
    if (RegConnectRegistry(pchar(ServerName), HKEY_USERS, usersKey) <> 0) then
      Exit;
  end
  else begin
    if (RegOpenKey(HKEY_USERS, NIL, usersKey) <> ERROR_SUCCESS) then
      Exit;
  end;
  index := 0;
  subKeyNameSize := SizeOf(subKeyName);
  while (RegEnumKeyEx(usersKey, index, subKeyName, subKeyNameSize, NIL, NIL, NIL,
  @lastWriteTime) = ERROR_SUCCESS) do begin
    if (lstrcmpi(subKeyName, '.default') <> 0) and (Pos('Classes', STRING(subKeyName)) = 0)
    then begin
      subAuthorityCount := getvals(subKeyName);
      if (subAuthorityCount >= 3) then begin
        subAuthorityCount := subAuthorityCount - 2;
        if (subAuthorityCount < 2) then subAuthorityCount := 2;
        authority.Value[5] := PByte(@authorityVal)^;
        authority.Value[4] := PByte(DWORD(@authorityVal) + 1)^;
        authority.Value[3] := PByte(DWORD(@authorityVal) + 2)^;
        authority.Value[2] := PByte(DWORD(@authorityVal) + 3)^;
        authority.Value[1] := 0;
        authority.Value[0] := 0;
        sid := NIL;
        userNameSize := MAX_NAME_STRING;
        domainNameSize := MAX_NAME_STRING;
        if AllocateAndInitializeSid(authority, subAuthorityCount, subAuthorityVal[0],
        subAuthorityVal[1], subAuthorityVal[2], subAuthorityVal[3], subAuthorityVal[4],
        subAuthorityVal[5], subAuthorityVal[6], subAuthorityVal[7], sid) then begin
          if LookupAccountSid(Pchar(ServerName), sid, userName, userNameSize, domainName,
          domainNameSize, sidType) then begin
            setlength(ArryList, length(ArryList) + 1);
            ArryList[length(ArryList) - 1] := string(domainName) + '\' + string(userName);
            result := string(userName);
          end;
        end;
        if Assigned(sid) then FreeSid(sid);
      end;
    end;
    subKeyNameSize := SizeOf(subKeyName);
    Inc(index);
  end;
  RegCloseKey(usersKey);
end;

end.
Vielleicht kann jemand der ein Netzwerk besitzt diesen Code testen?

Danke schon im voraus

Florian K.

FlorianK 26. Apr 2004 19:09

Re: NET SEND für Windows 98? REPLACEMENT
 
Hi,
habe jetzt eine Version ohne Benutzer compeliert. :hello:

Bitte Anregungen und Kritiken!!!!! :!:

Weitere Ziele:

Wie orginal "NET SEND" Nachrichten an User verschicken. :idea:




Florian K.


INFO: Die Datei NetSend.exe ist mit UPX verkleinert worden. 8)


[edit=FlorianK] Datei entfernt, BUGS!!!!! [/edit]

alcaeus 26. Apr 2004 19:19

Re: NET SEND für Windows 98? REPLACEMENT
 
Hi, konnte das Programm leider noch nicht testen, habe zur Zeit kein Netz...
Zitat:

Zitat von Haftung.txt
Für Schäden an der Gesundheit, dem Körper oder dem Leben des Nutzers haftet
der Autor uneingeschränkt. Ebenso haftet er für die Verletzung von Pflichten,
die zur Erreichung des Vertragszwecks von besonderer Bedeutung sind
(Kardinalspflichten).

:lol: Schäden an Gesundheit...das heißt, wenn jemand psychiatrisch behandelt werden muss, weil ich ihn mit Nachrichten bombardiere haftest du? *malschnellnetzeinrichten*

FlorianK 26. Apr 2004 19:28

Re: NET SEND für Windows 98? REPLACEMENT
 
Zitat:

Zitat von alcaeus
Hi, konnte das Programm leider noch nicht testen, habe zur Zeit kein Netz...
Zitat:

Zitat von Haftung.txt
Für Schäden an der Gesundheit, dem Körper oder dem Leben des Nutzers haftet
der Autor uneingeschränkt. Ebenso haftet er für die Verletzung von Pflichten,
die zur Erreichung des Vertragszwecks von besonderer Bedeutung sind
(Kardinalspflichten).

:lol: Schäden an Gesundheit...das heißt, wenn jemand psychiatrisch behandelt werden muss, weil ich ihn mit Nachrichten bombardiere haftest du? *malschnellnetzeinrichten*

Hahahahahahaahah :evil:

wenn DU ihn bombadierst hafte ich nicht!!!

Ich hafte nur wenn mein Programm ohne eingreifen Fremder die Gesundheit anderer beschädigt! :!: :!: :!:

Ach noch'n kleiner Hinweis: Den Server startet man mit "NetSend.exe -ss"


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:14 Uhr.
Seite 2 von 4     12 34      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz