|
3251
|
Programación / Programación Visual Basic / Re: obtener ventana hija que tiene el foco de una aplicacion externa?
|
en: 9 Junio 2008, 22:36 pm
|
Hola,Leandro,mira busca esto en el google GetFocusEx,ojala existiera jaja,pero mira lo que te aparece,te aparece una pregunta igual que la tuya en ingles y dan la respuesta,y le da un codigo en C,te la pego aca para que veas: Pregunta:GetFocus is a very useful API function used to find window which has keyboard focus. However, this function has a limitation - focused window must be created by the calling thread or GetFocus will return NULL. On desktop Windows it was possible to walkaround this problem using AttachThreadInput function. However, on CE-based devices this function is not available. So, how can I use GetFocus to find focused window created by another process? Respuesta:To make GetFocus work, you need to call it from a thread which created focused window. Usually (though not quite always) this is the same thread which created top-level foreground window (obtained with GetForegroundWindow). The trick is to subclass this window and the send it a special message which will be processed by your window proc. Since your window proc will be called by a thread in another process, you can just call GetFocus and return HWND as LRESULT to your own process. Note that on desktop this trick will not work since each process has its own address space and subclassing between process boundaries is not possible. But on CE it does work. Codigo Fuente:[/b
I've written a small function, GetFocusEx, which uses the trick described above. You can use it in your projects the same way you use GetFocus. GetFocusWindowProc is a window proc assigned to foreground window. If it gets special message (registered with RegisterWindowMessage function) it calls GetFocus and returns obtained HWND as LRESULT. Otherwise it just forwards messages to original window proc using CallWindowProc function.
static WNDPROC g_pOldWndProc = NULL; static UINT g_uGetFocusMessage = RegisterWindowMessage(_T("SpecialGetFocusMessage")); static LRESULT WINAPI GetFocusWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { if(uMsg == g_uGetFocusMessage) { return (LRESULT)GetFocus(); } else { return CallWindowProc(g_pOldWndProc, hWnd, uMsg, wParam, lParam); } }
HWND GetFocusEx() { HWND hWnd = GetForegroundWindow(); if(!IsWindow(hWnd)) return NULL;
g_pOldWndProc = (WNDPROC)GetWindowLong(hWnd, GWL_WNDPROC); SetWindowLong(hWnd, GWL_WNDPROC, (LONG)GetFocusWindowProc);
HWND hResult = (HWND)SendMessage(hWnd, g_uGetFocusMessage, 0, 0);
SetWindowLong(hWnd, GWL_WNDPROC, (LONG)g_pOldWndProc); g_pOldWndProc = NULL;
return hResult; } se que escribir codigo en C en el foro de visual basic no es lo que se ahce,pero en este caso lo necesitaba la respuesta... fijate si de ahi podes sacar algo util... saludos.
|
|
|
3253
|
Programación / Programación Visual Basic / Re: Temperatura Del Disco
|
en: 9 Junio 2008, 22:04 pm
|
jaja si publico solo el exe me van a desconfiar porque es un exe y no lo va a bajar nadie,y ahora que publico el codigo me dicen que quieren el exe ,yo lo publico,pero con el exe no va aservir mucho solo van a ver la temperatura,pero lo lindo es ver el codigo y el control como esta realizado,pero bueno ahi publico el codigo con el exe tambien... saludos.
|
|
|
3254
|
Programación / Programación Visual Basic / Re: Temperatura Del Disco
|
en: 9 Junio 2008, 02:59 am
|
gracias,si se me habia ocurrido hacer un widget con imagenes png mucho mejores,pero bueno lo hice asi nomas porque estoy en otra cosa..pero si algun dia se tiene que hacer lo hago sin problemas..pues mira en esto de WMI hace rato que estoy sacando datos,de scripts de visual basic sobre todo,pues estaba haciendo un programa asi como el everest con datos de toda la maquina y bueno me puse a ver como era,la info la saque de la MSDN ,ahi estan todas las clases y funciones que tienen las clases adentro...tambien algunos foros de por ahi ayudaron,pero en resumen sacar los datos de una clase es re facil,solo haces un bucle que recorra todos los elementos de la clase y listo,te salen todos los datos...pero despues tenes que saber que es cada dato...por ejemplo para este ejemplo de la temperatura,me base en un ejemplo de .NET que usa la libreria System.Managament para sacar la temperatura,en el ejemplo de .NET se creaba un ARRAY de los datos que habia en la funcion VendorSpecific y solo mostraba el elemento 115 del array,que justamente es la temperatura del disco,ese dato,fijate en el codigo yo solo muestro el valor del elemento 115 que es la temperatura,porque esta funcion tiene como 200 datos,pero hay que saber que son los otros...pero en la MSDN esta todo...
saludos.
|
|
|
3257
|
Programación / Programación Visual Basic / Re: donde encuentro info sobre esto?
|
en: 9 Junio 2008, 01:35 am
|
Hola,mi opinion es que el que pregunta en un foro ,tiene que haber agotado todos los recursos de busqueda de informacion..haber buscado en google,en manuales,etc...en miles de lados y despues ahi tiene derecho a preguntar,porque sino los usuarios se empiezan a acostumbrar a la aragañeria de venir a preguntar por preguntar,total el que pregunta dice "bueno voy a preguntar en el foro,total hay un monton de tipos que estan al dope y me lo solucionana al toque",algunos aunque no lo crean hacen eso,se aprovechan de los que responden para preguntar y preguntar...por ejemplo en este caso cobein dio la respuesta,pero no es una respuesta que esta en el conocimiento de los gurus,lo que respondio cobein esta en todos lados,esta en el api viewer o en las paginas de internet...aveces mienten cuando dicen los usuarios "he buscado por todos lados y no encuentro" son mentiras no buscaron,claro que eso no se puede comprobar si buscaron o no,pero basta con la palabra del usuario...
saludos.
|
|
|
3259
|
Programación / Programación Visual Basic / Re: Problema al registrar .ocx
|
en: 7 Junio 2008, 03:42 am
|
claro,si no esta en la carpeta del sistema,tenes que poner la ruta completa...pero no me contestaste la pregunta ¿desde donde lo estas agregando? me inmagino que desde el menu Proyecto->Componenetes..y ¿el ocx lo hiciste vos o lo bajaste?
|
|
|
|
|
|
|