![]() |
Re: NET SEND für Windows 98? REPLACEMENT
Zitat:
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. |
Re: NET SEND für Windows 98? REPLACEMENT
Zitat:
Ich mein den Nachrichtendienst und nicht die MessageBox! Florian K. |
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... |
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 ... |
Re: NET SEND für Windows 98? REPLACEMENT
Zitat:
|
Re: NET SEND für Windows 98? REPLACEMENT
Zitat:
|
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:
Vielleicht kann jemand der ein Netzwerk besitzt diesen Code testen?
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. Danke schon im voraus Florian K. |
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] |
Re: NET SEND für Windows 98? REPLACEMENT
Hi, konnte das Programm leider noch nicht testen, habe zur Zeit kein Netz...
Zitat:
|
Re: NET SEND für Windows 98? REPLACEMENT
Zitat:
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. |
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