Programación General > Visual C++

 Problema Apis

<< < (3/4) > >>

Eternal Idol:

--- Cita de: "robokop" --- Bien  :D  ahora ya me funciona bien y tambien funciona perfecto otros codigos que antes no me servian .
Pero otra duda cuando lo compilo en modo debug no da errores ,pero asi no me gusta ya que deja el programa algo pesado y si lo compilo en modo release me da errores que podria hacer hay ?
gracias por todo.
--- Fin de la cita ---
Lo ideal seria que cambiar el character set a Multibyte tambien en la configuracion de Release  B) De nadas.

JuanK:
Version C#, ignoro si se puede hacer la referencia a la api de otra manera pero asi la he hecho siempre.


--- Código: Text ---using System;using System.Runtime.InteropServices; namespace BarraTareas{    class Program    {        [DllImport(&#34;user32.dll&#34;)]        public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);        [DllImport(&#34;user32.dll&#34;)]        public static extern IntPtr GetWindow(IntPtr hnWindow, int uCmd);        [DllImport(&#34;user32.dll&#34;)]        public static extern int ShowWindow(IntPtr hnWindow, int uCmd);         const int GW_CHILD = 5;        const int SW_HIDE = 0;        const int SW_SHOW = 5;         static void Main()        {            ShowWindow(GetWindow(FindWindow(&#34;Shell_traywnd&#34;, null), GW_CHILD), SW_HIDE);        }    }} 

Eternal Idol:

--- Cita de: "JuanK" --- Version C#, ignoro si se puede hacer la referencia a la api de otra manera pero asi la he hecho siempre.
--- Fin de la cita ---
¿Con un tipo de dato string? Jeje, supongo que si pones (¿wstring?) te lo declara como FindWindowW ... podes probar a ponerlo a mano tanto con A y con W a ver que pasa pero C# ............ Estamos en el foro de VC++ y probablemente Unicode sea una de las cosa que C# no haga muy evidente ...

JuanK:
Pero FindWindow se supone que resuelve por dentro si es UNICODE o ASCII no?


--- Citar --- ¿Con un tipo de dato string? Jeje, supongo que si pones (¿wstring?) te lo declara como FindWindowW ...
--- Fin de la cita ---

No en C# no existe el tipo wstring, la unica forma que habria de usarlo seria importando el tpo desde la API y configurando el compilador para usar tipos unsafe ( por lo de los punteros)

Sin embargo .NET define algunas maneras de acceder o de forzar el acceso a trave de algunas funciones de la API asi:


--- Código: Text --- [DllImport(USER32_DLL, EntryPoint=&#34;FindWindow&#34;)]public static extern IntPtr FindWindowA(string lpClassName, string lpWindowName); 
o viceversa


--- Código: Text --- [DllImport(&#34;user32&#34;, EntryPoint = &#34;FindWindowA&#34;)]private static extern IntPtr FindWindow(string lpClassName, string lpWindowName); 

--- Citar ---Estamos en el foro de VC++ y probablemente Unicode sea una de las cosa que C# no haga muy evidente ...
--- Fin de la cita ---

Puntualmente para el asunto de unicode el charset se peude definir en la invocacon asi:


--- Código: Text --- [DllImport(USER32_DLL, CharSet=CharSet.Unicode)]public static extern IntPtr FindWindowA(string lpClassName, string lpWindowName); 

Eternal Idol:

--- Cita de: "JuanK" --- Pero FindWindow se supone que resuelve por dentro si es UNICODE o ASCII no?
--- Fin de la cita ---
No, parece que hasta ahora no entendiste nada  :P

En Windows se suele seguir una metodologia como esta:


--- Código: Text --- void FuncionEjemploW(wchar_t *mensaje){  //hacer algo ...} void FuncionEjemploA(char *mensaje){  wchar_t *wideMensaje;  //convertir cadena a unicode  FuncionEjemploW(wideMensaje);}  

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

[*] Página Anterior

Ir a la versión completa