Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - OmarHack

#601
Es bastante grande, si os sirve el código para vuestros programas usarlo sin problema, es licencia gpl. Es para el concurso de esta web. Aún le falta mucho que mejorar y añadir, sobre todo comandos propiamente echos en C++ sin ser funciones al sistema.  Lo que quiero hacer es que mediante la función color se va a cambiar el color de las letras y el fondo de consola. Y con la función que me falta por hacer que se llamara void GuardarColores(); Crear un archivo bat que si existe se ejecutará nada más abrir el programa, así si alguien quiere la consola en el típico matrix (letras verdes en fondo negro) aplique la configuración llamando a color y después eligiendo el numero 3 (creo que era) se ponga la consola a lo matrix, después llamando a la función GuardarConfiguración, se creará un bat con "color 0f" dentro o el color que sea, y por último, si existe el archivo color.bat en el cual se guardará el color elegido, se ejecute al abrir el programa. Aún que ahora que lo pienso abriría una nueva consola de comandos con ese color, pero se puede solucionar fácilmente poniendo que si existe el archivo, aun que esté vacío, haga una llamada a "color ef" o cual sea el elegido.

Ahora supongo que ya entendéis, tengo la versión del código anterior que ya no voy a usar, por usar la clase maps, si la quiereis ver o simplemente reutilizar pedírmela y os la pongo sin problemas.

Aquí el programa: La información aún está sin editar y vendrá con un archivo leeme para saber la lista de comandos y como usar el programa. Viendo el código ya entenderéis como funciona.
Lo he acabado hoy, así que aún no es la versión definitiva, no creo ni que sea una beta.

Código (cpp) [Seleccionar]
#include <iostream>
#include <fstream>
#include <string>
#include <windows.h>
#include <sstream>
#include <vector>
#include <map>

using namespace std;

int salir = 0;
int segundosSalir;


typedef void (*Puntero_A_Funcion)(void);


void LimpiarPantalla();
void MasterShell();
void Salir();
void funcionEspera(int segundosSalir);
void Cmd();
void AbrirAdministradorDeTareas();
void ComandosDos();
void Colores();
void AbrirQuitarProgramas();
void InformacionSistema();
void EstadoDeRed();
void EstadoProtocoloInternet();
void ApagarOrdenador();
void CancelarApagado();
void Rendimiento();
void EditorRegistro();
void BlocDeNotas();
void CapturarPantalla();
void Calculadora();
void GrabarSonido();
void TecladoEnPantalla();
void Lupa();
void AjustarVolumenDeSonido();
void MaquinaDelTiempo();
void VersionDeWindows();
void LimpiarDisco();
void AdministrarDiscos();
void CargarColores();
void ParticionarDisco();
void ConexionesDeRed();
void AdministrarFirewall();
void CerrarSesion();
void EliminarArchivosTemporales();
void NavegarPorInternet();
void FechaYHora();



int main (int argc, char* argv[])
{
    system ("title MASTERSHELL");
   
   
   
      ifstream logc;
logc.open ( "PersonalizacionMasterShell" );
if ( logc.is_open() )
{
// se pudo abrir el fichero por tanto existe
}
else
{
//no se pudo abrir el fichero se supone no existe o lo esta usando otro programa
}
logc.close();   
   
   
   
   
   
   
   
   
    Inicio:

    cout << "@";
    void (*Funcion)(void); // Puntero a funcion sin argumentos
    string Mensaje;
    map<string,Puntero_A_Funcion> Comandos;
    vector<string> texto;
    string str;





    Comandos["limpiarpantalla"] = LimpiarPantalla;
    Comandos["lp"] = LimpiarPantalla;
    Comandos["mastershell"] = MasterShell;
    Comandos["salir"] = Salir;
    Comandos["administradordetareas"] = AbrirAdministradorDeTareas;
    Comandos["comandosdos"] = ComandosDos;
    Comandos["comandoscmd"] = Cmd;
    Comandos["colores"] = Colores;
    Comandos["abrirquitarprogramas"] = AbrirQuitarProgramas;
    Comandos["informacionsistema"] = InformacionSistema;
    Comandos["estadodered"] = EstadoDeRed;   
    Comandos["estadodelprotocolodeinternet"] = EstadoProtocoloInternet;   
    Comandos["cancelarapagado"] = CancelarApagado;   
    Comandos["apagarordenador"] = ApagarOrdenador;
    Comandos["rendimiento"] = Rendimiento;
    Comandos["editordelregistro"] = EditorRegistro;
    Comandos["blocdenotas"] = BlocDeNotas;
    Comandos["capturarpantalla"] = CapturarPantalla;
    Comandos["calculadora"] = Calculadora;
    Comandos["grabarsonido"] = GrabarSonido;
    Comandos["tecladoenpantalla"] = TecladoEnPantalla;
    Comandos["lupa"] = Lupa;
    Comandos["ajustarvolumendesonido"] = AjustarVolumenDeSonido;
    Comandos["maquinadeltiempo"] = MaquinaDelTiempo;
    Comandos["versiondewindows"] = VersionDeWindows;
    Comandos["limpiardisco"] = LimpiarDisco;
    Comandos["administrardiscos"] = AdministrarDiscos;
    Comandos["cargarcolores"] = CargarColores;
    Comandos["particionardisco"] = ParticionarDisco;
    Comandos["conexionesdered"] = ConexionesDeRed;
    Comandos["administrarfirewall"] = AdministrarFirewall;
    Comandos["cerrarsesion"] = CerrarSesion;
    Comandos["eliminararchivostemporales"] = EliminarArchivosTemporales;
    Comandos["navegarporinternet"] = NavegarPorInternet;
    Comandos["fechayhora"] = FechaYHora;
   
   
   
   
   
   
   
   
   
   
    getline(cin, str);
    stringstream is(str);

    while(is >> str) texto.push_back(str);

   

    for (int i = 0; i < texto.size(); i++)
        cout << "";


    for (int i = 0; i < texto.size(); i++)
    {
        Funcion = Comandos[texto[i]]; // Obtengo el puntero a la funcion correspondiente

        if (Funcion) // Si existe la funcion
              Funcion(); // llamar a la funcion
        else
             cout<<"Error, no existe el comando introducido: "<<texto[i]<<endl;
    }
    if (salir != 1)
{goto Inicio;}   
   
funcionEspera(segundosSalir);

    return 0;
}


//Declaración de funciones:

void LimpiarPantalla()
{
system ("cls");
}

void MasterShell()
{
cout << endl << "Nombre: MasterShell" << endl
  << "Copyright: GPL" << endl
  << "Autor: OmarHack" << endl
  << "Fecha inicial de creacion del proyecto: 07/06/13 11:58"
  << endl << "Descripcion: ¡Usar comandos nunca fue tan facil!"
  << endl << "Con esta sencilla aplicación podrás usar comandos de una "
  <<"manera increiblemente facil."
  << "Solo tienes que echar un vistazo a"
  << " el arhivo leeme y seguir las instrucciones." << endl << endl;
}

void Salir()
{
salir = 1;
}

void funcionEspera(int segundosSalir)
{
     salir = 1;
     for(time_t i = (time(NULL) + segundosSalir); time(NULL) != i;);

}

void Cmd()
{
system ("cmd");
}

void AbrirAdministradorDeTareas()
{
system ("taskmgr");     
}

void ComandosDos()
{
system ("command");
}

void Colores()
{
     short ColorElegido;
cout << "Que color quieres?" <<endl;
cin >> ColorElegido;

switch (ColorElegido)
{
case 1:
system ("color 0f");
break;

case 2:
system ("color f0");
break;

case 3:
system ("color 0a");

case 4:
system ("color 9f");
break;

case 5:
system ("color 0d");
break;

case 6:
system ("color 0e");

case 7:
system ("color 2f");
break;

case 8:
system ("color 8e");
break;

default:
cout << "No has escrito una opcion valida,vuleve a escribir \"colores\""  <<
" y selecciona un numero del 1 al 8" <<endl;     
}     
}

void AbrirQuitarProgramas()
{
system ("appwiz.cpl");
}

void InformacionSistema()
{
system ("systeminfo");     
}

void EstadoDeRed()
{
system ("netstat");
}

void EstadoProtocoloInternet()
{
system ("ipconfig");
}

void ApagarOrdenador()
{
cout << "Esta seguro de apagar el ordenador?" << endl;
  string ApagarSi;
  cin >> ApagarSi;
  cout << "@";
  if (ApagarSi == "si")
    {
    system ("shutdown -s -t 60");
    }   
}

void CancelarApagado()
{
system ("shutdown -a");
}

void Rendimiento()
{
system ("perfmon");   
}

void EditorRegistro()
{
system ("regedit");
}

void BlocDeNotas()
{
system ("notepad");
}

void CapturarPantalla()
{
   system ("SNIPPINGTOOL");
}

void Calculadora()
{
    system ("calc");
}

void GrabarSonido()
{
    system ("soundrecorder");
}

void TecladoEnPantalla()
{
    system ("osk");
}

void Lupa()
{
    system ("magnify");
}

void AjustarVolumenDeSonido()
{
    system ("sndvol");
}

void MaquinaDelTiempo()
{
    system ("rstrui");
}

void VersionDeWindows()
{
    system ("winver");
}

void LimpiarDisco()
{
    system ("cleanmgr");
}

void AdministrarDiscos()
{
    system ("DISKMGMT");
}

void CargarColores()
{
    system ("start archivo.bat");
}

void ParticionarDisco()
{
    system ("diskpart");
}

void ConexionesDeRed()
{
    system ("ncpa.cpl");
}

void AdministrarFirewall()
{
    system ("firewall.cpl");
}

void CerrarSesion()
{
    system ("logoff");
}

void EliminarArchivosTemporales()
{
    system ("del %temp% /f /s /q ");
}

void NavegarPorInternet()
{
    system ("start www.google.com");
}

void FechaYHora()
{
   time_t fecha;

time ( &fecha);
cout << ctime (&fecha);
}


Un saludo.
     

PD: Acabo de leer ahora tu comentario 0xDani, si me puedes ayudar a implementarlo en el código te lo agradecería, que me estoy haciendo un lío... xD
#602
No hace nada al abrir el programa :S

Lo tengo así:

Código (cpp) [Seleccionar]
ifstream logc;
logc.open ( "Personalizacion.bat" );
if ( logc.is_open() )
{
// se pudo abrir el fichero por tanto existe
}
else
{
//no se pudo abrir el fichero se supone no existe o lo esta usando otro programa
}
logc.close();
 

E probado también quitándole el .bat y hasta poniéndole .exe
El archivo se encuentra en el mismo sitio que el ejecutable y el código. Dentro del bat hay un simple start www.google.com para ver si funciona.
No e probado poniéndole la ruta porque entonces no me serviría, yo tengo la carpeta en la unidad K pero mucha gente lo tendrá en la unidad C, y ademas al ser un programa portable...
Un saludo.
#603
Cita de: leosansan en 20 Junio 2013, 03:47 AM
Muy sencillito:

Código (cpp) [Seleccionar]

   if ("programa.exe")
       system ("programa.exe");


Saluditos!
   



Eso es lo que quiero hacer, pero el problema es que si no existe informa del error, y yo quiero que si el archivo existe lo abra, y si no, no haga nada.
Probé también con la librería fstream y no doy conseguido que se ejecute un bat.
A ver si me podéis ayudar. Saludos!
#604
No sé que tengo que poner en el lugar de "existe".

Código (cpp) [Seleccionar]
if (programa.exe existe)
{
system ("start programa.exe");
}


Un saludo.
#605
Expléndido! Ahora a adaptarlo! :)
Gracias de verdad.
#606
Golpe de estado.
#607
Te aconsejo que tomes tú la decisión por ti mismo. Cada uno te dirá lo que haría él, yo sin duda software.
Saludos.
#608
El tuyo va perfecto! Lo acabo de probar y hace justo lo que quiero, pero no sé como usarlo en los ifs, quiero que si pongo hola no solo me ponga hello de respuesta, si no que ejecute una serie de acciones, como podrías ser llamar a otro ejecutable, imprimir un texto, o llamar a una función. Voy a intentar explicártelo a ver si entiendes, quiero algo así como lo siguiente, pero si escribo en el programa en ejecución por ejemplo: 2 hola 1 2 3 1 2 1 hola 1 se ejecuten por orden todas esas que e llamado. Con el código que me pusiste no se puede hacer no? Es para lo que hice yo el mio, pero me da el error ese de que si pongo menos de 10 argumentos en ejecución me da error.
Si lo pongo tal cual en un string, no puedo poner más de un parámetro por vez en la ejecución. Y eso es lo que me interesa, que pueda poner una frase con lo que sea por ejemplo: "hola 1 que tal" o "tal que hola 1" y haga cada cosa que tenga declarada como en el código siguiente. Entonces al poner "hola 1 que tal" el programa lo interpretaría como:

hola >> llama a una funcion, imprime un texto y cambia el valor a 2 variables
1 >> llama a una funcion y imprime un texto
que >> muestra el texto "no existe"
tal >> muestra el texto "no existe"


Y si en cambio pongo "que tal 2 hola" el programa lo interprete así:

que >> muestra el texto "no existe"
tal >> muestra el texto "no existe"
2 >> muestra el valor de 3 variables
hola >> llama a una funcion, imprime un texto y cambia el valor a 2 variables

En principio mi código hace eso, pero tiene el fallo que comente, con el tuyo no sé como hacerlo.  :(


if (texto == "1")
{
llama a la funcion;
imprime un texto;
}

if (texto == "2")
{
muestra el valor de 3 variables;
}

if (texto == "1")
{
cambia el valor a 2 variables;
}

if (texto == "3")
{
salir del programa o reiniciar
}

if (texto == "hola")
{
llama a una funcion;
imprime un texto;
cambia el valor a 2 variables;
}

if (texto == "casa")
{
..........
}

if (texto == "ordenador")
{
}

else cout <<"no existe";


#609
Programación C/C++ / Re: 1º Reto de Retrodev
19 Junio 2013, 20:54 PM
Qué bueno!
#610
Cita de: amchacon en 19 Junio 2013, 14:19 PM
No compruebas el tamaño del vector, si te introduzco 2 palabras y me compruebas 3 pues...

Ya te he puesto 2 ejemplo usando maps, a aprendértelo  ;-)
http://minidosis.org/C++/Maps/
¿Y es muy lioso arreglarlo? Es decir, yo con un máximo de 10 palabras simultaneas me conformo, y después que el programa no tenga problema tanto si pongo 1 palabra como 2, como 3, o como 10. Mira que le di mil vueltas, ahora me pongo con tu código a estudiarlo a adaptarlo y a implementar la clase maps cuando lo tenga listo. :)