Fecha y hora actual: Viernes 06 Dic 2019 13:21
Índice del Foro

Foros de programación informática, diseño gráfico y Web

En esta comunidad intentaremos dar soporte de programación a todos los niveles, desde principiantes a profesionales de la informática, desarrollo de programas, programación web y mucho más.

Es posible usar una dll escrita en vc++ que no es com?

Responder al Tema

Índice del Foro > Visual Basic .NET > Es posible usar una dll escrita en vc++ que no es com?

Autor Mensaje
reeccom



Registrado: 30 Abr 2016
Mensajes: 9

Mensaje Publicado: Sábado 30 Abr 2016 02:08

Título del mensaje: Es posible usar una dll escrita en vc++ que no es com?

Responder citando

Saludos gente del foro soy nuevo y este es mi primer comentario asi que espero no violar alguna norma jaja..


Bueno tengo una dll, que es un cliente de chat pero compilado en una dll y es jalado por un programa y bueno lo ejecuta etc..

Mi duda es si yo podria usar esa dll desde vb.net o almenos ejecutarla, se que de alguna manera se puede porque alguien ya lo hiso, solo que en la epoca que lo vi no le di importancia porque no sabia andaba con el tema de la programación y bueno ahi esta mi pregunta.

dejo un link con el cliente por si lo quieren chequear.



Código:
  1.  
  2. mediafire.com/download/82itm2fqvdc91wj/client.dll
  3.  


Saludos y Gracias por la información que me puedan aportar!

Volver arriba
Ver perfil del usuario Enviar mensaje privado
Pico
Usuario Activo


Registrado: 25 Jun 2013
Mensajes: 628

Mensaje Publicado: Sábado 30 Abr 2016 09:30

Título del mensaje: Es posible usar una dll escrita en vc++ que no es com?

Responder citando

Es posible usarla como lo que es, una dll nativa Windows, llamando las funciones que exporta

1 0000 _kailleraChatSend@4
2 0001 _kailleraEndGame@0
3 0002 _kailleraGetVersion@4
4 0003 _kailleraInit@0
5 0004 _kailleraModifyPlayValues@8
6 0005 _kailleraSelectServerDialog@4
7 0006 _kailleraSetInfos@4
8 0007 _kailleraShutdown@0

Pero sin saber para qué sirve y los parámetros de entrada de cada función es complicado.

Volver arriba
Ver perfil del usuario Enviar mensaje privado
reeccom



Registrado: 30 Abr 2016
Mensajes: 9

Mensaje Publicado: Sábado 30 Abr 2016 14:20

Título del mensaje: Es posible usar una dll escrita en vc++ que no es com?

Responder citando

Wow, todo esto es increíble... como as sabido tanto en tan corto tiempo!
Antes que nada, muchas gracias por tomarte la molestia ya que nunca en mi vida intente usar una dll que no sea com, así que no tengo ni idea de como proceder, así que agradezco mucho tu ayuda.

Bueno mira, tengo su cabecera para mostrar su funcionamiento y parámetros y veras que tu hallaste a todas ya jaj.

Aca dejo el Archivo.h

#ifndef KAILLERA_CLIENT_H
#define KAILLERA_CLIENT_H

#ifdef _WIN32
#include <windows.h>
#endif

#define KAILLERA_CLIENT_API_VERSION "0.8"

#ifdef KAILLERA_DLL
#define DLLEXP __declspec(dllexport) WINAPI
#else
#define DLLEXP __declspec(dllimport) WINAPI
#endif

#ifdef __cplusplus
extern "C" {
#endif

typedef struct {
char *appName;
char *gameList;

int (WINAPI *gameCallback)(char *game, int player, int numplayers);

void (WINAPI *chatReceivedCallback)(char *nick, char *text);
void (WINAPI *clientDroppedCallback)(char *nick, int playernb);

void (WINAPI *moreInfosCallback)(char *gamename);
} kailleraInfos;

/*
kailleraGetVersion
Call this method to retrieve kailleraclient.dll's version
- version must point to a char[16] buffer
*/
DLLEXP kailleraGetVersion(char *version);
/*
kailleraInit:
Call this method when your program starts
*/
DLLEXP kailleraInit();
/*
kailleraShutdown:
Call this method when your program ends
*/
DLLEXP kailleraShutdown();
/*
kailleraSetInfos:
Use this method for setting up various infos:
Required:
- appName must be 128 chars max.
- gameList is composed of all the game names separated by a NULL char (\0).
The list ends with 2 NULL chars (\0\0).
Be sure to only put available games there.
- gameCallback will be the function called when a new game starts
game -> name of the selected game
player -> player number (1-Sol. 0 for spectator.
numplayers -> number of players in the game (1-Sol

Optional:
- chatReceivedCallback will be the function called when a chat line text
has been received. Set it to NULL if you don't need/want this callback.
- clientDroppedCallback will be the function called when a client drops
from the current game. Set it to NULL if you don't need/want this callback.
- moreInfosCallback will be the function called when the user selects
"More infos about this game..." in the game list context menu.
Set it to NULL if you don't need/want this feature.
*/
DLLEXP kailleraSetInfos(kailleraInfos *infos);
/*
kailleraSelectServerDialog:
Use this method for launching the Kaillera server dialog
*/
DLLEXP kailleraSelectServerDialog(HWND parent);

/*
kailleraModifyPlayValues:
You must call this method at every frame after you retrieved values from your input devices.
This method will record/bufferize the values you send in and will manage to mix them with
the other players.

Basically, each players sends his values and receive all players values concatened.

e.g:
t - player 1 sends "867F" - player 2 sends "964F"
t+1 - player 1 receives "867F964F" - player 2 receives "867F964F"

you may want to look at the modified MAME source code available on kaillera's home page
to have a working example out of this (look in inptport.c)

Ideally, your input values should be defined like 1 bit for a given key, which has to be
unset when the key is not pressed and set when the key is pressed.

The size of the values you pass to this function is the size for ONE player's values.
Also, it must be the SAME for a given game and should be kept to a minimum (for network
speed and latency issues).

Be sure that the values parameters has enough space for receiving all inputs from all players
(8 players max.)

returns: length received or -1 on network error (player no more in the game)
*/
DLLEXP kailleraModifyPlayValues(void *values, int size);

/*
kailleraChatSend
Use this function to send a line of chat text during a game
*/
DLLEXP kailleraChatSend(char *text);

/*
kailleraEndGame:
Your emulation thread must call this method when the user stops the emulation
*/
DLLEXP kailleraEndGame();

#ifdef __cplusplus
};
#endif

#endif


Bueno, eso es lo que tengo ahora como cargar esa dll y llamar esos métodos me es chino mandarin Triste

Volver arriba
Ver perfil del usuario Enviar mensaje privado
Pico
Usuario Activo


Registrado: 25 Jun 2013
Mensajes: 628

Mensaje Publicado: Domingo 01 May 2016 09:29

Título del mensaje: Es posible usar una dll escrita en vc++ que no es com?

Responder citando

Con la definición de cada función ya es mucho más fácil. Para cargarla en .net sólo hay ue usar el DllImport del System.Runtime.InteropServices.

https://msdn.microsoft.com/es-es/library/system.runtime.interopservices.dllimportattribute%28v=vs.110%29.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-2

Volver arriba
Ver perfil del usuario Enviar mensaje privado
reeccom



Registrado: 30 Abr 2016
Mensajes: 9

Mensaje Publicado: Lunes 02 May 2016 08:18

Título del mensaje: Es posible usar una dll escrita en vc++ que no es com?

Responder citando

Bueno he checkeado el link, pero como mencione no me ha tocado nunca usar dlls asi que hice lo que maso menos entendí porque en el msdn siempre explican solo lo elemental pero los detallitos no y eso puede atorar a uno varios dias...

Yo parti de un proyecto nuevo de windows form y cague un modulo nuevo con esto..

Código:

   ' Use DllImport to import the Win32 MessageBox function.
   <DllImport("kailleraclient.dll", CharSet:=CharSet.Unicode)> _
   Function MessageBox(ByVal hwnd As IntPtr, ByVal t As String, ByVal caption As String, ByVal t2 As UInt32) As Integer
   End Function


Luego en proyecto le di a agregar nuevo elemento y agregue la dll.

hasta ahi llegue, mas que eso no entendí mas como seguir, necesitaría saber si el vb me tomo bien la dll y bueno algun ejemplo de como llamar algo de esa dll, como yo ya lograr entender como funciona todo esto.

Osea, necesito instrucciones para tontos porque soy duro de aprender lo nuevo jaja.

Gracias, saludos!

Volver arriba
Ver perfil del usuario Enviar mensaje privado
Pico
Usuario Activo


Registrado: 25 Jun 2013
Mensajes: 628

Mensaje Publicado: Martes 03 May 2016 10:42

Título del mensaje: Es posible usar una dll escrita en vc++ que no es com?

Responder citando

Es que para usar una dll hecha en c hay que saber programación. No java, html, css o php. No, programación. Si no es imposible.

Volver arriba
Ver perfil del usuario Enviar mensaje privado
reeccom



Registrado: 30 Abr 2016
Mensajes: 9

Mensaje Publicado: Martes 03 May 2016 14:03

Título del mensaje: Es posible usar una dll escrita en vc++ que no es com?

Responder citando

y bueno, he aprendido varios lenguajes por hobbie en mi vida, asi que esta seria una buena excusa para aprender un poco de c++, yo ya vengo haciendo ejercicios y practicando mucho con este lenguaje, aunque todavia me falta mucho, esto me es motivación...

Bueno podrías darme una linea pequeña de código como para probar si con el código anterior la dll funciona? Solo quiero testear si funciona, ya yo después buscare aprender por mis medios el como utilizarla.

pico, perdona por estarte molestando tanto saludos!!!

Volver arriba
Ver perfil del usuario Enviar mensaje privado
Pico
Usuario Activo


Registrado: 25 Jun 2013
Mensajes: 628

Mensaje Publicado: Martes 03 May 2016 16:24

Título del mensaje: Es posible usar una dll escrita en vc++ que no es com?

Responder citando

Código:
  public partial class Form1 : Form
    {

        public const string cdll = @"D:\reeccom\client.dll";

        [DllImport(cdll, CallingConvention = CallingConvention.Winapi)]
        public static extern void kailleraGetVersion(StringBuilder version);

        [DllImport(cdll, CallingConvention = CallingConvention.Winapi)]
        public static extern void kailleraInit();

        [DllImport(cdll, CallingConvention = CallingConvention.Winapi)]
        public static extern void kailleraShutdown();

        [DllImport(cdll, CallingConvention = CallingConvention.Winapi)]
        public static extern void kailleraChatSend(StringBuilder mensaje);



        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            StringBuilder sb = new StringBuilder(20);
            kailleraGetVersion(sb);
            kailleraInit();
            kailleraChatSend(sb);
            kailleraShutdown();

        }
    }



De eso se trata. Pero saber eso es sólo la mitad. Hay que saber cómo trabaja la dll.

Si quieres verlo en vb.net pásalo por el reflector.

Volver arriba
Ver perfil del usuario Enviar mensaje privado
reeccom



Registrado: 30 Abr 2016
Mensajes: 9

Mensaje Publicado: Miércoles 09 Nov 2016 03:46

Título del mensaje: Es posible usar una dll escrita en vc++ que no es com?

Responder citando

Hooo muchas gracias pico, no había recibido notificación de tu respuesta y di por abandonado el proyecto.

Así ahora retomare y voy a testear el código haber que sale...

Muchísimas gracias por el esfuerzo pico y perdón la demora!

Volver arriba
Ver perfil del usuario Enviar mensaje privado
Responder al Tema
Mostrar mensajes anteriores:   
Ir a:  
Todas las horas están en GMT + 2 Horas

Temas relacionados

Tema Autor Foros Respuestas Publicado
El foro no contiene ningún mensaje nuevo

Hola, necesito ayuda para esto, algun programad...

Lino Romero Programación en general 0 Jueves 11 Jul 2019 06:52 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Usar "programa" sin tener que descarg...

phoenix Programación Web en general 1 Viernes 01 Mar 2019 03:15 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Microsoft nos pide que dejemos de usar Internet...

lamek S.O. Windows 1 Martes 12 Feb 2019 16:27 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Usar el ciclo for sin repetir un print?

remphenter C, C#, Visual C++ 0 Domingo 28 Oct 2018 12:08 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Usar el control wxWebView de la manera mas simple

Nucleorion C, C#, Visual C++ 1 Viernes 03 Feb 2017 11:26 Ver último mensaje
Panel de Control
No puede crear mensajes, No puede responder temas, No puede editar sus mensajes, No puede borrar sus mensajes, No puede votar en encuestas,