Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-09-2008
Ziara Ziara is offline
Miembro
 
Registrado: dic 2007
Posts: 43
Poder: 0
Ziara Va por buen camino
Cómo saber qué tipo de SO es.

Hola!

Tengo una duda, se puede saber por código qué sistema operativo se está ejecutando?

Mas o menos que cuadno pinche en un botón de mi aplicación, me diga qué tipo de SO es, si es windows, linux...

Existe algún componente, API ... para ello?

Trabajo sobre Builder6.

Gracias
Responder Con Cita
  #2  
Antiguo 11-09-2008
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Creo que POSIX define una función para ello, pero únicamente te serviría para sistemas POSIX o cercanos a él (UNIX, GNU/Linux, AIX, QNX, MacOS, BeOS...).

Una alternativa que sí tienen todos los compiladores de C/C++ son las directivas de identificación. Por ejemplo:
Código:
char* NombreSO (void)
{
#ifdef DOS
  return "DOS"
#endif
#ifdef OS2
  return "OS/2 (o eCom Station)";
#endif
#ifdef WIN16
  return "DOS + Windows 3.x";
#endif
#ifdef WIN32
  #ifdef WINXP
    return "Windows XP";
  #endif
  #ifdef WINNT
    return "Windows NT";
  #endif
  return "Windows 95/98";
#endif
#if defined(COCOA) || defined(DARWIN)
  return "MacOS X";
#endif
#ifdef BSD
  #ifdef FREE_BSD
    return "freeBSD";
  #endif
  return "BSD";
#endif
#ifdef LINUX
  return "GNU/Linux";
#endif
}
Bueno, más o menos porque los nombres de las macros las he puesto de memoria y no sé si son los correctos. En los manuales de los compiladores incluyen una lista de las directivas definidas.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #3  
Antiguo 18-09-2008
Ziara Ziara is offline
Miembro
 
Registrado: dic 2007
Posts: 43
Poder: 0
Ziara Va por buen camino
Buenas tardes,

Estoy haciendo un función que detecta los equipos conectados en la misma red y ya puestos, me gustaría saber qué SO tiene dichos equipos que están online.

Te agradecería que me pudieras poner un ejemplo de cómo puedo saber a qué SO pertenece, no entiendo muy bien cómo tengo que aplicar las directivas.

Gracias y un saludo.
Responder Con Cita
  #4  
Antiguo 18-09-2008
Avatar de sisgeorge
sisgeorge sisgeorge is offline
Miembro
 
Registrado: feb 2008
Ubicación: Bogota-Colombia
Posts: 16
Poder: 0
sisgeorge Va por buen camino
MIRE PRUEBE CON ESTE CODIGO..

SIRVE PARA WINDOWS LE DICE LA VERSION Y HASTA QUE SP ES...

void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString version;
SistOpe.dwOSVersionInfoSize=sizeof(OSVERSIONINFO);
i=GetVersionEx(&SistOpe);
if(i)
switch (SistOpe.dwMajorVersion)
{
case 4:
switch (SistOpe.dwMinorVersion)
{
case 0://W95 o WNT
if (SistOpe.dwPlatformId ==VER_PLATFORM_WIN32_WINDOWS)
{//W95
version=AnsiString("Windows 95 ");
}else
{//WNT;
version=AnsiString("Windows NT 4.0 ");
}
break;
case 10://W98
version=AnsiString("Windows 98 ");
break;
case 90://WMe
version=AnsiString("Windows Me ");
break;
default://Desconocido
version=AnsiString("Desconocido ");
}
break;
case 3:
version=AnsiString("Windows NT 3.51 ");
break;
case 5:
switch (SistOpe.dwMinorVersion)
{
case 0://W2k
version=AnsiString("Windows 2000 ");
break;
case 1://WXP
version=AnsiString("Windows XP ");
break;
case 2://W2003
version=AnsiString("Windows 2003 ");
break;
default:
version=AnsiString("Desconocido ");
}
break;
case 6:
switch(SistOpe.dwMinorVersion)
{
case 0:
version=AnsiString("Windows Vista ");
break;
default:
version=AnsiString("Desconocido ");
}
break;
default:
version=AnsiString("Desconocido ");//MessageBox(NULL,"Desconocido","Sistema Operativo",NULL);
}

Label1->Caption=version+SistOpe.szCSDVersion;
}

LA VERDAD YO EN LINUX NO TRABAJO Y NO SABRIA DECIRLE SY HAY TAMBIEN FUNCIONA PERO ME PARECE QUE SI..

BUENO ESPERO QUE SEA DE UTILIDAD

SALUTE....
Responder Con Cita
  #5  
Antiguo 22-09-2008
Ziara Ziara is offline
Miembro
 
Registrado: dic 2007
Posts: 43
Poder: 0
Ziara Va por buen camino
Hola.

Ante todo gracias por la ayuda.

He estado viendo el código y aparentemente cuando pinchas sobre un botón ¿te dice la versión del pc en que está ejecutando la aplicación que contiene este código?

Hay alguna forma de saber aparte del host de mi pc, ¿los host que están conectado a la misma red a partir de sus ips?

Gracias.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como saber tipo de datos de query en builder c++ vivamotos C++ Builder 1 24-08-2006 10:35:17
como saber el tipo de datos de un campo miguelml Varios 4 17-11-2005 08:36:17
Como saber el tipo de datos de un campo de una tabla Javi2 SQL 1 27-06-2005 14:18:28
Como saber el tipo de acceso a una carpeta Javi2 Varios 3 22-07-2004 11:56:44
Como saber el tipo de componentes a partir de un string? Roger OOP 2 02-04-2004 13:21:48


La franja horaria es GMT +2. Ahora son las 01:59:19.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi