Programación General > Visual C++
Problema Apis
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("user32.dll")] public static extern IntPtr FindWindow(string lpClassName, string lpWindowName); [DllImport("user32.dll")] public static extern IntPtr GetWindow(IntPtr hnWindow, int uCmd); [DllImport("user32.dll")] 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("Shell_traywnd", 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="FindWindow")]public static extern IntPtr FindWindowA(string lpClassName, string lpWindowName);
o viceversa
--- Código: Text --- [DllImport("user32", EntryPoint = "FindWindowA")]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
[#] Página Siguiente
[*] Página Anterior
Ir a la versión completa