![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#4
|
|||
|
|||
|
Sí cadetill, tienes razón. Parece que estaba en las nubes. Bueno, vamos a corregir el asunto.
Para leer la información referente al nombre del equipo y grupo de trabajo al que está conectado, utilizo la instrucción “NetWkstaGetInfo”, incluida en “NetApi32.dll”. Viene documentada en las ayudas de Microsoft incluidas en Delphi. Como podrás comprobar, dependiendo de la estructura de datos que utilices, obtendrás más o menos información. En mi caso, con WKSTA_INFO_100, voy servido, porque me suministra los dos valores que necesito. Así, me creé una estructura tal que TWksta_Info_100 = record Wki100_Plattform_Id: DWord; Wki100_ComputerName: PWideChar; Wki100_LanGroup: PWideChar; Wki100_Ver_Major: DWord; Wki100_Ver_Minor: DWord; end; y un tipo puntero PWksta_Info_100 = ^TWksta_Info_100; El procedure sería procedure TPPrincipal.LeeDatosEquipo; var Buffer: PWksta_Info_100; Res: DWord; begin Memo1.Lines.Clear; Res:= NetWkstaGetInfo('', 100, @Buffer); Memo1.Lines.Add(IntToStr(Buffer^.Wki100_Plattform_Id)); Memo1.Lines.Add(Buffer^.Wki100_ComputerName); Memo1.Lines.Add(Buffer^.Wki100_LanGroup); Memo1.Lines.Add(IntToStr(Buffer^.Wki100_Ver_Major) + '.' + IntToStr(Buffer^.Wki100_Ver_Minor)); NetApiBufferFree(Buffer); end; De esta manera, muestro los valores en un campo memo. Una vez resuelto el problema, me encuentro con que necesito poder modificar el famoso grupo de trabajo, así que, ni corto ni perezoso, hago una llamadita a NetWkstaSetInfo, pero resulta que no va ni de coña. Así que recurro a la inestimable ayuda de Microsoft, pero en su página web http://msdn.microsoft.com/support/. Busco referencias a la instrucción, y me encuentro con que, según ellos, “NetWkstaSetInfo” está un poco pasada, y que, bajo Windows NT (en mi caso XP Profesional), mejor que utilice SetComputerName, y NetJoinDomain (también incluida en la misma dll) Quedaría así Res:= NetJoinDomain('', 'CASA', '', '', '', 0); Donde CASA es el nombre que quiero asignarle al grupo de trabajo. Esta instrucción tarda un par de segundos en ejecutarse, y una vez finalizada puede comprobarse el resultado en la configuración de Windows, no siendo necesario reiniciar el equipo. Bueno, creo que no me dejo nada. Un saludo |
|
|
|