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 - Khronos14

#401
Citar
simula la pulsación de teclas, y funciona como si pulsaras las teclas de verdad

No necesitas HANDLE para nada, se envían pulsaciones de teclas, da igual la aplicación que tenga el foco....

http://msdn.microsoft.com/en-us/library/ms646304(VS.85).aspx
#402
Cita de: s_azazel en  4 Noviembre 2010, 12:58 PM
No se si tendra alguna proteccion o algo o sera por que para caminar habra que dejar pulsada la tecla el caso es que las pulsaciones las envia correctamente todas menos las de movimiento.

Por ejemplo si envio la letra B em abre el inventario correctamente

¿Es posible que la unica forma sea inyectando una dll y enviando la pulsacion desde el mismo proceso????

El caso es que estoy algo verde aun en el tema de la inyeccion XDDD

Muchas gracias a todos!!!!



Si leyeras mi respuesta, tendrías la solución.

La API keybd_event simula la pulsación de teclas, y funciona como si pulsaras las teclas de verdad; además puedes hacer combinaciones de teclas pulsadas al mismo tiempo.
#403
Busca información sobre la API keybd_event, es mucho más sencillo usar esta función.

Saludos.
#404
Cita de: piou en  2 Noviembre 2010, 16:30 PM
Cita de: Khronos14 en  1 Noviembre 2010, 14:50 PM


Código (cpp) [Seleccionar]


    scanf("%8[^\n]", number);



No entiendo eso %8[^\n] qué significa poner un número detrás del %, y los corchetes y el ^ antes de \n??

Significa leer por el teclado hasta que se pulse enter \n y como máximo 8 caracteres.

Saludos.
#405
Programación C/C++ / Re: duda
2 Noviembre 2010, 11:43 AM
Todos los días siempre hay 2 personas, de media, que piden en el foro que se hagan tareas....

Lee las normas.
#406
Si usas scanf, lo haces todo en una línea, personalmente prefiero printf y scanf al cout y cin ya que se pueden hacer más cosas...

Código (cpp) [Seleccionar]

#include <iostream>
#include <stdio.h>

using namespace std;

int main()
{
char number[9];
    cout << "Give me a binary number (8-bit): ";
    scanf("%8[^\n]", number);
    number[8] = 0;

    cout << "Numero: " << number << endl;
    return 0;
}


Saludos.
#407
Una idea demasiado ambiciosa, Google casi tiene terminado su prototipo de un coche que se conduce solo. Además las grandes marcas de coche seguro que trabajan en cosas parecidas...

Saludos.
#408
Yo te recomiendo que uses una librería multiplataforma hecha totalmente en C/C++ llamada MediaInfo:

http://sourceforge.net/projects/mediainfo/

Esta librería puede obtener información sobre cualquier archivo de música, vídeo, texto, imágenes, archivos comprimidos y ejecutables. Lee las etiquetas ID3v1, ID3v2, ogg tags, wma, ac3 y un largo etcétera...

Saludos.
#409
Programación General / Re: Curso de Delphi
30 Octubre 2010, 15:31 PM
Capítulo 10. Punteros I.

Los punteros son variables que almacenan la posición de memoria en la que se encuentra un dato. En Delphi se pueden emplear punteros como se haría en C.

A simple vista las clases y objetos de Delphi, no parecen punteros, pero en realidad si que lo son. Se oculta su verdadera naturaleza para que al programador le sea más agradable trabajar con ellos (ya veremos las clases más adelante).
Otro ejemplo, es el tipo de datos string; este es un puntero que apunta a una región de memoria dinámica en la que se almacena texto. El tamaño máximo de un string ronda los 4 Gb...

El tipo genérico de puntero en Pascal se llama Pointer, es un puntero no-de tipo porque únicamente contiene una dirección de memoria, y el compilador no guarda ninguna información sobre el dato al que apunta.
Los punteros con tipo se declaran utilizando el operador ^ (puntero) antes del tipo de dato de una variable.

Ejemplo:

Código (delphi) [Seleccionar]

var
   I: ^Integer;


Para que un puntero tenga la dirección de memoria de otra variable, usaríamos este método:

Código (delphi) [Seleccionar]

program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
  Puntero: ^Integer;
  I: Integer;
begin
  I:= 5;
  Puntero:= @I; //Tambien sirve Puntero:= Addr(I);

  Writeln('I tiene el valor: ', I);
  Writeln('Puntero tiene el valor: ', Puntero^);
  Readln;
end.


Creamos una variable de tipo integer y un puntero que apunta a una variable de tipo integer. Introducimos un valor en I y utilizando el operador @ o Addr, le decimos a Puntero que apunte a la dirección de memoria de I. Luego comprobamos que I y Puntero tienen el mismo valor. Para acceder al valor de un puntero hay que poner el operador ^ al final.

Tendríamos algo como esto:



Un puntero también puede apuntar a un valor en concreto, no hace falta que sea una variable. Ejemplo:

Código (delphi) [Seleccionar]

program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
  Puntero: ^Integer;
begin
  Puntero^:= 5;

  Writeln('Puntero tiene el valor: ', Puntero^);
  Readln;
end.



#410
Programación General / Re: Curso de Delphi
30 Octubre 2010, 00:44 AM
Capítulo 9. Estructuras.

Las estructuras son tipos de datos que contienen otros datos, es una agrupación de variables bajo un identificador común. Para crear una estructura debemos definirla con el método type que con el se pueden definir nuevos tipos de datos.

Por ejemplo:

Código (delphi) [Seleccionar]

type
  Cadena = string;


De esta forma definimos un nuevo tipo de datos, llamado Cadena, que es tipo string. Después se podría crear una variable con el nuevo tipo de dato.

Código (delphi) [Seleccionar]

var
Prueba: Cadena;


Puedes definir tipos de datos, que se conocen como datos tipo enum. Son como constantes que tienen un valor numérico, pero los identificas con una cadena.

Código (delphi) [Seleccionar]

type
 Coche = (seat, bmw, golf, mercedes, ferrari, porsche);


De esta forma, definimos el tipo de dato Coche que solo puede tomar los valores entre paréntesis. En realidad, el tipo de datos Coche es numérico positivo, seat corresponde al 0, bmw al 1, etc...

Un ejemplo de como usarlo:

Código (delphi) [Seleccionar]

program Project1;

{$APPTYPE CONSOLE}

uses
 SysUtils;

type
 Coche = (seat, bmw, golf, mercedes, ferrari, porsche);

var
 MiCoche: Coche;
begin
 MiCoche:= bmw;
end.


Para crear una estructura se emplea la directiva record, en C se llama struct.

Código (delphi) [Seleccionar]

program Project1;

{$APPTYPE CONSOLE}

uses
 SysUtils;

type
 Agenda = record
   Nombre: string;
   Apellidos: string;
   Telefono: integer;
 end;

begin

end.


Definimos el tipo de datos Agenda, que es una estructura, y en su interior contiene 3 subvariables: Nombre, Apellidos y Telefono. Para acceder a las variables de la estructura haríamos algo como esto:

Código (delphi) [Seleccionar]

program Project1;

{$APPTYPE CONSOLE}

uses
 SysUtils;

type
 Agenda = record
   Nombre: string;
   Apellidos: string;
   Telefono: integer;
 end;

var
 MiAgenda: Agenda;
begin
 MiAgenda.Nombre:= 'Pepe';
 MiAgenda.Apellidos:= 'No tengo apellidos';
 MiAgenda.Telefono:= 62352352;
end.


Creamos la variable MiAgenda que es del tipo Agenda, que acabamos de crear. Para acceder a las subvariables se pone un . y el nombre de la variable.

Las estructuras son muy útiles en programación y se emplean mucho. Cuando quieres volcar estructuras en ficheros y trabajar con la memoria de forma más compacta, tienes que declarar la estructura como packed record y la estructura tiene que tener tamaño fijo. Es decir, una estructura que vas a volcar en un fichero no puede tener una variable de tipo string, porque no tiene tamaño fijo... esto ya lo veremos más adelante cuando veamos ficheros.

Código (delphi) [Seleccionar]

program Project1;

{$APPTYPE CONSOLE}

uses
 SysUtils;

type
 Agenda = packed record
   Nombre: array[0..49] of char;
   Apellidos: array[0..99] of char;
   Telefono: integer;
 end;

var
 MiAgenda: Agenda;
begin
 MiAgenda.Nombre:= 'Pepe';
 MiAgenda.Apellidos:= 'No tengo apellidos';
 MiAgenda.Telefono:= 62352352;
end.


En este ejemplo, la variable Nombre sólo puede contener 50 caracteres y Apellidos 100. Trabajar con variables que almacenan caracteres de tamaño fijo, como es el caso, puede suponer errores de desbordamiento (Buffer Overflow) si no sabes lo que haces.