elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  [Solucionado] DLL en VB
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Solucionado] DLL en VB  (Leído 3,184 veces)
Miseryk

Desconectado Desconectado

Mensajes: 225


SI.NU.SA U.GU.DE (2NE1 - D-Unit)


Ver Perfil
[Solucionado] DLL en VB
« en: 13 Octubre 2010, 12:40 pm »

Hola, tengo un problema, yo por ej creo una DLL en VB que posee lo siguiente:

Código
  1. Option Explicit
  2.  
  3. Public Function Mensaje(ByVal Msg As String) As String
  4. Mensaje = Msg
  5. End Function
  6.  

Cuando lo llamo desde C++, por un MessageBox(NULL,MyFunction("Mensaje"),"CAPTION",MB_OK); me lo muestra vacío, alguna idea?

Y si tienen la solución a este Thread http://foro.elhacker.net/programacion_visual_basic/ayuda_callings_sub_y_functions-t307209.0.html sería un combo BOX  :laugh:


« Última modificación: 19 Octubre 2010, 20:49 pm por Miseryk » En línea

Can you see it?
The worst is over
The monsters in my head are scared of love
Fallen people listen up! It’s never too late to change our luck
So, don’t let them steal your light
Don’t let them break your stride
There is light on the other side
And you’ll see all the raindrops falling behind
Make it out tonight
it’s a revolution

CL!!!
BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: [Ayuda] DLL en VB
« Respuesta #1 en: 13 Octubre 2010, 18:55 pm »

.
Generar DLL Normal.

http://infrangelux.sytes.net/FileX/?dir=/BlackZeroX/Proyectos/Proyecto%20DLL%20Normal

Hook APIS

http://infrangelux.sytes.net/FileX/?dir=/BlackZeroX/Programacion/vb6/APIHOOK

Dulces Lunas!¡.


En línea

The Dark Shadow is my passion.
Miseryk

Desconectado Desconectado

Mensajes: 225


SI.NU.SA U.GU.DE (2NE1 - D-Unit)


Ver Perfil
Re: [Ayuda] DLL en VB
« Respuesta #2 en: 13 Octubre 2010, 19:56 pm »

Interesante, pero como paso esto a C++?

Private Function MTrim(ByVal s As String) As String
Dim i As Long
Dim res As String

For i = 1 To Len(s)
    If Mid$(s, i, 1) <> Chr$(0) Then
        res = res & Mid$(s, i, 1)
    End If
Next

MTrim = res
End Function

Cuando lo tenga en C++, teoricamente tendría que funcionar? :O:O:O. Desde ya muchas gracias.
En línea

Can you see it?
The worst is over
The monsters in my head are scared of love
Fallen people listen up! It’s never too late to change our luck
So, don’t let them steal your light
Don’t let them break your stride
There is light on the other side
And you’ll see all the raindrops falling behind
Make it out tonight
it’s a revolution

CL!!!
Miseryk

Desconectado Desconectado

Mensajes: 225


SI.NU.SA U.GU.DE (2NE1 - D-Unit)


Ver Perfil
Re: [Ayuda] DLL en VB
« Respuesta #3 en: 14 Octubre 2010, 21:34 pm »

Hola, finalmente pude lograrlo.

Código de la DLL:

MIREN QUE HAY COSAS QUE LAS PUSE PARA HACER DEDUCCIONES Y PRUEBAS.

Código
  1. Option Explicit
  2.  
  3. Public Const DLL_PROCESS_DETACH = 0 ':El proceso descarga la DLL
  4. Public Const DLL_PROCESS_ATTACH = 1 ': Cuando un proceso carga la DLL
  5. Public Const DLL_THREAD_ATTACH = 2 ': El proceso está recargando una DLL
  6. Public Const DLL_THREAD_DETACH = 3 ':El proceso está descargando una Dll recargada
  7.  
  8. Public Declare Function MessageBox Lib "user32" Alias "MessageBoxA" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long
  9.  
  10. Public Function DllMain(hInst As Long, fdwReason As Long, lpvReserved As Long) As Boolean
  11. Select Case fdwReason
  12.    Case DLL_PROCESS_DETACH
  13.        'No per-process cleanup needed
  14.    Case DLL_PROCESS_ATTACH
  15.        MsgBox "Project1.dll Injected!"
  16.        'MsgBox "End of Search!"
  17.        DllMain = True
  18.    Case DLL_THREAD_ATTACH
  19.        'No per-thread initialization needed
  20.    Case DLL_THREAD_DETACH
  21.        'No per-thread cleanup needed
  22. End Select
  23. 'DllMain = True
  24. End Function
  25.  
  26. Public Sub Mensaje()
  27. MessageBox 0&, "Test", "Mensaje", 0&
  28. End Sub
  29.  
  30. Public Function Suma(ByVal N1 As Long, ByVal N2 As Long) As Long
  31. Suma = N1 + N2
  32. 'MessageBox 0, Suma, "Resultado", 0
  33. End Function
  34.  
  35. 'Public Function Mensaje2(ByVal Msg As String) As String
  36. 'Mensaje2 = Msg
  37. 'End Function
  38. Public Function Mensaje2() As String
  39. ' Las cadenas de VB6 son Unicode y al usarla desde una DLL
  40. ' se hace un follón... así que debemos quitarles los Chr$(0)
  41. ' que tenga en medio
  42. 'Dim str As String * 4
  43.  
  44. 'str = "Hola"
  45.  
  46. 'Mensaje2 = str
  47. Mensaje2 = "Esto es una prueba."
  48. End Function
  49.  
  50. Public Function LenString(ByVal Cadena As String) As Integer
  51. LenString = Len(Cadena)
  52. End Function
  53.  
  54. Private Function MTrim(ByVal s As String) As String
  55. Dim i As Long
  56. Dim res As String
  57.  
  58. For i = 1 To Len(s)
  59.    If Mid$(s, i, 1) <> Chr$(0) Then
  60.        res = res & Mid$(s, i, 1)
  61.    End If
  62. Next
  63.  
  64. MTrim = res
  65. End Function
  66.  

En C++, lo pueden abrir desde VC++ 6.0 (Mi favorito) o del VS 2009, etc.

HAY MUCHO CÓDIGO PORQUE PROBÉ DEMASIADAS COSAS.

Código
  1. #include <iostream>
  2. #include <windows.h>
  3. #include <string>
  4.  
  5.  
  6. using namespace std;
  7.  
  8. typedef void (WINAPI*MsgFunction) ();
  9. typedef long (WINAPI*SumaFunction) (long,long);
  10.  
  11. void MyDLL();
  12. void MyDLL2();
  13. void MyDLL3();
  14. void MyDLL4();
  15.  
  16.  
  17. string MTrim(char *);
  18. string MTrim(char *, int);
  19. int tStrLen(char *);
  20. bool IsValid(char);
  21.  
  22. //Declaramos el ProcID de la dll
  23. //HINSTANCE hGetProcIDDLL = LoadLibrary("Project1.dll");
  24.  
  25. int main()
  26. {
  27. MyDLL4();
  28. /*
  29. MsgFunction MsgBox;
  30. SumaFunction Suma;
  31.  
  32. HINSTANCE hinstDLL = LoadLibrary("Project1.dll");
  33.  
  34. if(hinstDLL != 0)
  35. {
  36. printf("DLL LOADED.\n");
  37. MsgBox = (MsgFunction)GetProcAddress(hinstDLL,"Mensaje");
  38.  
  39. MsgBox();
  40.  
  41.  
  42.  
  43. Suma = (SumaFunction)GetProcAddress(hinstDLL,"Suma");
  44.  
  45. long x = Suma(6,6);
  46. if(x == 12)
  47. {
  48. cout << "Message Displayed!\n";
  49. }
  50.  
  51. // Unload DLL file
  52. FreeLibrary(hinstDLL);
  53. }
  54. else
  55. {
  56. printf("DLL NOT LOADED.\n");
  57. }
  58. */
  59. system("PAUSE");
  60. return 0;
  61. }
  62.  
  63. void MyDLL()
  64. {
  65. /* get handle to dll */
  66. HINSTANCE hGetProcIDDLL = LoadLibrary("Project1.dll");
  67.  
  68.  
  69. /* get pointer to the function in the dll*/
  70. FARPROC lpfnGetProcessID = GetProcAddress((HMODULE)hGetProcIDDLL,"Mensaje");
  71.  
  72. /*
  73.     Define the Function in the DLL for reuse. This is just prototyping
  74.     the dll's function. A mock of it. Use "stdcall" for maximum
  75.     compatibility.
  76. */
  77. typedef void (__stdcall * pICFUNC)(HWND);
  78. pICFUNC MyFunction;
  79.  
  80.    if (hGetProcIDDLL==NULL)
  81.    {
  82.        printf("Can not open the Library\n");
  83. }
  84. else
  85. {
  86. printf("CAN open the Library\n");
  87. }
  88. MyFunction = (pICFUNC)lpfnGetProcessID;
  89.  
  90. /* The actual call to the function contained in the dll */
  91. MyFunction(NULL);
  92.  
  93. /* Release the Dll */
  94. FreeLibrary(hGetProcIDDLL);
  95. }
  96.  
  97. void MyDLL2()
  98. {
  99. /* get handle to dll */
  100. HINSTANCE hGetProcIDDLL = LoadLibrary("Project1.dll");
  101.  
  102.  
  103. /* get pointer to the function in the dll*/
  104. FARPROC lpfnGetProcessID = GetProcAddress((HMODULE)hGetProcIDDLL,"Suma");
  105.  
  106. /*
  107.     Define the Function in the DLL for reuse. This is just prototyping
  108.     the dll's function. A mock of it. Use "stdcall" for maximum
  109.     compatibility.
  110. */
  111. typedef long (__stdcall * pICFUNC)(long,long);
  112. pICFUNC MyFunction;
  113.  
  114.    if (hGetProcIDDLL==NULL)
  115.    {
  116.        printf("Can not open the Library\n");
  117. }
  118. else
  119. {
  120. printf("CAN open the Library\n");
  121. }
  122. MyFunction = (pICFUNC)lpfnGetProcessID;
  123.  
  124. /* The actual call to the function contained in the dll */
  125. long x = MyFunction(5,5);
  126. //printf("Result: %l\n",x);
  127. cout <<"Resultado: ";
  128. cout << x;
  129. cout << '\n';
  130.  
  131. cout <<"Resultado: " << x <<'\n';
  132.  
  133. //cout <<"El valor decimal de número es:" << numero << '\n';
  134. //cout <<"El valor octal de número es:" << oct <<numero << '\n';
  135. //cout <<"El valor hexadecimal de número es:" << hex <<numero << '\n';
  136. //Si se hace otro cout de algun numero, lo muestra en hex, xq fue
  137. //el último que usamos
  138.  
  139. /* Release the Dll */
  140. FreeLibrary(hGetProcIDDLL);
  141. }
  142.  
  143. void MyDLL3()
  144. {
  145. /* get handle to dll */
  146. HINSTANCE hGetProcIDDLL = LoadLibrary("Project1.dll");
  147.  
  148.  
  149. /* get pointer to the function in the dll*/
  150. FARPROC lpfnGetProcessID = GetProcAddress((HMODULE)hGetProcIDDLL,"Mensaje2");
  151.  
  152. /*
  153.     Define the Function in the DLL for reuse. This is just prototyping
  154.     the dll's function. A mock of it. Use "stdcall" for maximum
  155.     compatibility.
  156. */
  157. typedef char * (__stdcall * pICFUNC)(); //LPCSTR
  158. //typedef void (CALLBACK* pICFUNC)();
  159.  
  160. pICFUNC MyFunction;
  161.  
  162.    if (hGetProcIDDLL==NULL)
  163.    {
  164.        printf("Can not open the Library\n");
  165. }
  166. else
  167. {
  168. printf("CAN open the Library\n");
  169. }
  170. MyFunction = (pICFUNC)lpfnGetProcessID;
  171.  
  172. /* The actual call to the function contained in the dll */
  173. //MessageBox(NULL, MyFunction(),"CAPTION",MB_OK);
  174.  
  175. char * ss = MyFunction();
  176. //cout << MTrim(ss) << "\n";
  177.  
  178. /* Release the Dll */
  179. FreeLibrary(hGetProcIDDLL);
  180. }
  181.  
  182. void MyDLL4()
  183. {
  184. /* get handle to dll */
  185. HINSTANCE hGetProcIDDLL = LoadLibrary("Project1.dll");
  186.  
  187.  
  188. /* get pointer to the function in the dll*/
  189. FARPROC lpfnGetProcessID = GetProcAddress((HMODULE)hGetProcIDDLL,"Mensaje2");
  190. FARPROC lpfnGetProcessID2 = GetProcAddress((HMODULE)hGetProcIDDLL,"LenString");
  191.  
  192. /*
  193.     Define the Function in the DLL for reuse. This is just prototyping
  194.     the dll's function. A mock of it. Use "stdcall" for maximum
  195.     compatibility.
  196. */
  197. typedef char * (__stdcall * pICFUNC)(); //LPCSTR
  198. typedef int (__stdcall * pICFUNC2)(char *); //LPCSTR
  199. //typedef void (CALLBACK* pICFUNC)();
  200.  
  201. pICFUNC MyFunction;
  202. pICFUNC2 MyFunction2;
  203.  
  204.    if (hGetProcIDDLL==NULL)
  205.    {
  206.        printf("Can not open the Library\n");
  207. }
  208. else
  209. {
  210. printf("CAN open the Library\n");
  211. }
  212.  
  213. MyFunction = (pICFUNC)lpfnGetProcessID;
  214. MyFunction2 = (pICFUNC2)lpfnGetProcessID2;
  215.  
  216. /* The actual call to the function contained in the dll */
  217. //MessageBox(NULL, MyFunction(),"CAPTION",MB_OK);
  218.  
  219.  
  220. char * ss = MyFunction();
  221.  
  222. cout << "Longitud: " << MyFunction2(ss) << "\n\n";
  223. cout << "Supuesta cadena: " << ss << "\n\n";
  224.  
  225. cout << "Forma Frutera: " << MTrim(ss) << "\n\n";
  226. cout << "A la gran Misery: " << MTrim(ss, MyFunction2(ss)) << "\n\n";
  227.  
  228. /* Release the Dll */
  229. FreeLibrary(hGetProcIDDLL);
  230. }
  231.  
  232. string MTrim(char * s)
  233. {
  234. long i;
  235. string res="";
  236. char chr = char(0);
  237.  
  238. //cout << "Longitud: " << tStrLen("Hola") << "\n";
  239. //cout << "Longitud: " << strlen(s) << "\n";
  240. //cout << "Longitud: " << sizeof(s) << "\n";
  241. //cout << "Longitud: " << s.length() << "\n";
  242.  
  243. for(i=0; i < 16 ;i++) //Testin'
  244. {
  245. if(s[i] != chr)
  246. {
  247. res = res + s[i];
  248. }
  249. }
  250. return res;
  251. }
  252.  
  253. string MTrim(char * s,int len)
  254. {
  255. long i;
  256. string res="";
  257. char chr = char(0);
  258. int acum=0;
  259. //cout << "Longitud: " << tStrLen("Hola") << "\n";
  260. //cout << "Longitud: " << strlen(s) << "\n";
  261. //cout << "Longitud: " << sizeof(s) << "\n";
  262. //cout << "Longitud: " << s.length() << "\n";
  263.  
  264. for(i=0; acum < len ;i++) //Testin'
  265. {
  266. if(IsValid(s[i]) == true && s[i] != chr)
  267. {
  268. res = res + s[i];
  269. acum++;
  270. }
  271. }
  272. return res;
  273. }
  274.  
  275. bool IsValid(char s)
  276. {
  277. char valid[] = "abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMÑOPQRSTUVWXYZ0123456789 ,.-!$%&/()=?¿*;_¬[]{}";
  278.  
  279. for(int i = 0; i < strlen(valid); i++)
  280. {
  281. if(valid[i] == s)
  282. {
  283. return true;
  284. }
  285. }
  286. return false;
  287. }
  288.  
  289. //Función que devuelve la longitud de una cadena
  290. int tStrLen(char * s)
  291. {
  292.  char *        s0= s;
  293.  while (*s++);
  294.  return s - s0 - 1;
  295. }
  296.  

Lo último que hice fue basado en el, MyDLL4().

Lo que hago es llamar a la función de que me retorna un STRING, luego con una misma funcion de la DLL obtengo la longitud del string, porque no podía obtener la logitud verdadera.

MyFunction es el Mensaje, osea, lo que retorna la CADENA.
Con MyFunction2 obtengo la longitud.

Después uso un MTrim re frutero que lo hice después de muchos intentos xD.

El MTrim con 2 parámetros es el que nos interesa.

Que le paso la cadena y la longitud, y ahí está como hice, osea sólo permito ciertos dígitos y luego voy contando cuantos caracteres fueron agregandose para saber si es la longitud de la cadena.

Código
  1. char * ss = MyFunction();
  2.  
  3. cout << "Longitud: " << MyFunction2(ss) << "\n\n";
  4. cout << "Supuesta cadena: " << ss << "\n\n";
  5.  
  6. cout << "Forma Frutera: " << MTrim(ss) << "\n\n";
  7. cout << "A la gran Misery: " << MTrim(ss, MyFunction2(ss)) << "\n\n";
  8.  

Bueno, desde ya muchísimas gracias a todos y a BlackZeroX por darme esa pista. :). Suerte.

PD: Obviamente está todo desprolijo y no optimizado, pero así estuve por más de 3 días. :)
PD2: Me falta hacer el pasaje del MessageBox.
« Última modificación: 19 Diciembre 2010, 12:52 pm por Miseryk » En línea

Can you see it?
The worst is over
The monsters in my head are scared of love
Fallen people listen up! It’s never too late to change our luck
So, don’t let them steal your light
Don’t let them break your stride
There is light on the other side
And you’ll see all the raindrops falling behind
Make it out tonight
it’s a revolution

CL!!!
agus0


Desconectado Desconectado

Mensajes: 360



Ver Perfil
Re: [Ayuda] DLL en VB
« Respuesta #4 en: 15 Octubre 2010, 03:00 am »

Código
  1. Option Explicit
  2.  
  3. Public Function Mensaje(ByVal Msg As String) As String
  4. Mensaje = Msg
  5. End Function

Para mi el problema esta en que ninguna de las variables tienen informacion, es decir
que estan vacias.

intenta con la DLL asi:

Código
  1. Option Explicit
  2.  
  3. Public Function Mensaje(ByVal Msg As String) As String
  4. Msg = "Hola Mundo!"
  5. Mensaje = Msg
  6. End Function
En línea

BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: [Ayuda] DLL en VB
« Respuesta #5 en: 15 Octubre 2010, 03:54 am »

.
Interesantes codigos me ayudaran a crear Plugins de Otra manera, Se te agradece (Los codigos en C)!¡.

Dulce Infierno Lunar!¡.
En línea

The Dark Shadow is my passion.
BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: [Ayuda] DLL en VB
« Respuesta #6 en: 15 Octubre 2010, 04:35 am »

.
Como Dato:

Código
  1.  
  2. Private Function MTrim(ByVal s As String) As String
  3. Dim i As Long
  4. Dim res As String
  5.  
  6. For i = 1 To Len(s)
  7.    If Mid$(s, i, 1) <> Chr$(0) Then
  8.        res = res & Mid$(s, i, 1)
  9.    End If
  10. Next
  11.  
  12. MTrim = res
  13. End Function
  14.  
  15.  

Queda mejor asi!¡:

Código
  1.  
  2. Private Function NullTrim(ByVal vDataIn As String) As String
  3. Dim Lng_Pos                                 As Long
  4.    Lng_Pos = InStr(1, vDataIn, Chr(0)) - 1
  5.    If Lng_Pos > 0 Then NullTrim = Mid$(vDataIn, 1, Lng_Pos)
  6. End Function
  7.  
  8.  

Para quitar los chr(0) de los string (Unicode) solo se me ocurrre hacer esto en un array de bytes.

Código
  1.  
  2.    Dim arrbyte() As Byte
  3.    arrbyte() = StrConv("hola", VbStrConv.vbFromUnicode)
  4.    MsgBox Chr(arrbyte(0)) & Chr(arrbyte(1)) & Chr(arrbyte(2)) & Chr(arrbyte(3))
  5.  
  6.  

Dulces Lunas!¡.
« Última modificación: 15 Octubre 2010, 04:40 am por BlackZeroX▓▓▒▒░░ » En línea

The Dark Shadow is my passion.
Miseryk

Desconectado Desconectado

Mensajes: 225


SI.NU.SA U.GU.DE (2NE1 - D-Unit)


Ver Perfil
Re: [Ayuda] DLL en VB
« Respuesta #7 en: 15 Octubre 2010, 18:27 pm »

.
Como Dato:

Código
  1.  
  2. Private Function MTrim(ByVal s As String) As String
  3. Dim i As Long
  4. Dim res As String
  5.  
  6. For i = 1 To Len(s)
  7.    If Mid$(s, i, 1) <> Chr$(0) Then
  8.        res = res & Mid$(s, i, 1)
  9.    End If
  10. Next
  11.  
  12. MTrim = res
  13. End Function
  14.  
  15.  

Queda mejor asi!¡:

Código
  1.  
  2. Private Function NullTrim(ByVal vDataIn As String) As String
  3. Dim Lng_Pos                                 As Long
  4.    Lng_Pos = InStr(1, vDataIn, Chr(0)) - 1
  5.    If Lng_Pos > 0 Then NullTrim = Mid$(vDataIn, 1, Lng_Pos)
  6. End Function
  7.  
  8.  

Para quitar los chr(0) de los string (Unicode) solo se me ocurrre hacer esto en un array de bytes.

Código
  1.  
  2.    Dim arrbyte() As Byte
  3.    arrbyte() = StrConv("hola", VbStrConv.vbFromUnicode)
  4.    MsgBox Chr(arrbyte(0)) & Chr(arrbyte(1)) & Chr(arrbyte(2)) & Chr(arrbyte(3))
  5.  
  6.  

Dulces Lunas!¡.

Si la función en VB tiene vbFromUnicode, en C++, se me crashea, eso lo pensé y lo intenté pero sin resultados favorables. :)
Lo has probado?
En línea

Can you see it?
The worst is over
The monsters in my head are scared of love
Fallen people listen up! It’s never too late to change our luck
So, don’t let them steal your light
Don’t let them break your stride
There is light on the other side
And you’ll see all the raindrops falling behind
Make it out tonight
it’s a revolution

CL!!!
BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: [Ayuda] DLL en VB
« Respuesta #8 en: 15 Octubre 2010, 19:55 pm »


Si la función en VB tiene vbFromUnicode, en C++, se me crashea, eso lo pensé y lo intenté pero sin resultados favorables. :)
Lo has probado?


mmmm... Si no funciona esto entonces ya no se que es xP

Código
  1.  
  2. Option Explicit
  3.  
  4. Private Sub Form_Load()
  5.    Dim arrbyte() As Byte
  6.    arrbyte() = StrConvFromUnicode("hola")
  7.    MsgBox Chr(arrbyte(0)) & Chr(arrbyte(1)) & Chr(arrbyte(2)) & Chr(arrbyte(3))
  8. End Sub
  9.  
  10. Function StrConvFromUnicode(ByVal vData As String) As Variant
  11. Dim lng_Index                               As Long
  12. Dim Int_Asc                                 As Integer
  13.  
  14.    For lng_Index = 1 To Len(vData)
  15.        Int_Asc = Asc(Mid$(vData, lng_Index, 1))
  16.        If Int_Asc And &HFF00 Then
  17.            StrConvFromUnicode = StrConvFromUnicode & ChrB(Int(Int_Asc / 256) And &HFF)
  18.            StrConvFromUnicode = StrConvFromUnicode & ChrB(Int_Asc And &HFF)
  19.        Else
  20.            StrConvFromUnicode = StrConvFromUnicode & ChrB(Int_Asc)
  21.        End If
  22.    Next
  23. End Function
  24.  
  25.  

Dulce Infierno Lunar!¡
En línea

The Dark Shadow is my passion.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines