IPC implementation code (BCB)

xiaoxiao2021-03-06  66

/ / -------------------------------------------------------------------------------------------- ---------------------------

#include #pragma HDRSTOP

#include "ipc.h" // --------------------------------------- ---------------------------------- # Pragma package (smart_init) #pragma resource "* .dfm" #pragma Comment (lib, "mpr.lib") #pragma Comment (lib, "netapi32.lib")

TFORM1 * FORM1; / / -------------------------------------------- -------------------------------__ fastcall tform1 :: tform1 (tComponent * Owner): TFORM (OWNER) {} // -------------------------------------------------- ------------------------- void __fastcall tform1 :: costr_groups (char * server) {DWORD RET, Read, Total, Resume = 0; INT i LPVOID BUFF; STRING TEMPSTR; CHAR Comment [255]; Wchar_t WServer [100]; Ansistring (Server) .widechar (WSERVER, 20); // Strncpy (Wserve, WideString (Server) .c_bstr (), 100);

do {// ret = NetLocalGroupEnum ((wchar_t *) server, 1, (unsigned char **) & buff, MAX_PREFERRED_LENGTH, & read, & total, & resume); ret = NetLocalGroupEnum (wserver, 1, (unsigned char **) & buff, MAX_PREFERRED_LENGTH , & read, & total, & resume; switch (re) {Case Nerr_suCcess: memo1-> lines-> add ("Nerr_suCcess"); Break; Case Error_More_Data: Memo1-> Lines-> Add ("Error_More_Data"); Break; Case Nerr_INValidComputer: Memo1-> Lines-> add ("Nerr_INVALIDComputer"); Break; Case Error_Access_Denied: Memo1-> Lines-> Add ("Error_Access_Denied"); Break;}

PLOCALGROUP_INFO_1 INFO = (PLOCALGROUP_INFO_1) BUFF;

For (i = 0; i Lines-> Add ("Group:" Tempstr); Widechartomultibyte (CP_ACP, 0, INFO [ I] .lgrpi1_comment, -1, comment, 255, null, null; tempstr = string (comment); // memo1-> lines-> add ("Note:" Tempstr);

DWord Ret, Total, Resume = 0; // Ret = NetLocalGroupgetMembers (wchar_t *) Server, INFO [i] .lgrpi1_name, 2, (unsigned char **) & buff, 1024, & read, & total, & resume); RET = NetLocalGroupgetMembers (Wserver, Info [i] .lgrpi1_name, 2, (unsigned char **) & buff, 1024, & read, & total, & resme)

IF (ret! = nerr_success && ret! = error_more_data) {memo1-> lines-> add ("fail / n"); // en break;}

PLOCALGROUP_MEMBERS_INFO_2 INFO = (PLOCALGROUP_MEMBERS_INFO_2) BUFF;

For (unsigned i = 0; i Lines-> add ("Domain User Name: Tempstr); // Tempstr = String INFO [I] .lgrmi2_sidusage); // Memo1-> Lines-> Add ("Sidusage:" Tempstr); // Memo1-> Lines-> Add ("SID:" String (char (INFO [i]. LGRMI2_SID))))));} NetapibufferFree (buff);

Netapibufferfree (BUFF);

} while (RET == Error_More_Data);} // -------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------- void __fastcall tform1 :: extl_disks (char * server) {dword RET, READ, TOTAL, RESUME = 0; INT I; LPVOID BUFF; String Tempstr; CHAR Comment [255]; Wchar_t WServer [100]; Ansistring (Server) .widechar (Wserver, 20); // Strncpy (Wserver, WideString (Server) .C_BSTR (), 100); Do {// Ret = NetLocalgroupenum (wchar_t *) Server, 1, (unsigned char **) & buff, max_preferred_length, & read, & total, & resume; // Ret = netserverdiskenum NULL, 100, (unsigned char **) & buff, MAX_PREFERRED_LENGTH, & read, & total, & resume); ret = NetShareEnum (wserver, 2, (unsigned char **) & buff, 8192, & read, & total, & resume); switch (ret) {CASE NERR_SUCCESS: MEMO1-> LINES-> Add ("Nerr_suCcess"); Break; Case Error_More_Data: Memo1-> Lines-> Add ("Error_More_Data"); Break; C ase NERR_InvalidComputer: Memo1-> Lines-> Add ( "NERR_InvalidComputer"); break; case ERROR_ACCESS_DENIED: Memo1-> Lines-> Add ( "ERROR_ACCESS_DENIED"); break;} // PSERVER_INFO_100 info = (PSERVER_INFO_100) buff; // PSERVER_INFO_100 INFO = (PServer_INFO_100) BUFF; pshare_info_2 info = (pshare_info_2) BUFF;

For (i = 0; i lines-> add ("Disk:" tempstr);} NetapIBufferFree (BUFF);} While RET == Error_More_Data);} void __fastcall tform1 :: button1click (TOBJECT * Sender) {dword ret; char username [100] = "", password [100] = ""; char server [100] = ", IPC [ 100] = ""; NetResource Net;

// Strncpy (Server, "10.1.13.8", Strncpy (server, edit1-> text.c_str (), 100); Memo1-> lines-> add (server); //printf ("Server:% S / N ", Server);

Sprintf (IPC, "% S // IPC $", Server;

Net.lpLocalName = null; net.lpprovider = null; net.dwtype = resourcety_any; net.lpremotename = (char *) & IPC;

// printf (); MEMO1-> LINES-> Add ("setting up session ..."); RET = WNETADDCONNECTION2 (& Net, (const char *) & password, (const char *) & username, 0);

IF (Ret! = Error_Success) {MEMO1-> LINES-> Add (IPC $ Connect Fail./N "); EXIT (1);} else memo1-> lines-> add (" IPC $ Connect Success./n "); Explorer_Groups; Explorer_Disks ((char *) & server);

Memo1-> Lines-> Add ("Disconnect Server ..."); RET = WNETCANCONNECTION2 ((Char *) & IPC, 0, True); if (Ret! = Error_Success) {MEMO1-> Lines-> Add ("Fail ./N "); exit (1);} else memo1-> lines-> add (" success./n "); // exit (0);

}

转载请注明原文地址:https://www.9cbs.com/read-89771.html

New Post(0)