Dev - C++ - Que tan complicado puede ser dessarrollar esta herramienta? Alguna idea de como empezar?

 
Vista:

Que tan complicado puede ser dessarrollar esta herramienta? Alguna idea de como empezar?

Publicado por Jordi (2 intervenciones) el 25/03/2018 17:50:32
Mi idea es hacer una herramienta que se active con las combinaciones de teclas control+c, control+v, control+x y alguna otra que no esté asignada a nada por defecto. Lo que haría esta es permitir copiar distintas cosas en distintos copiados, y que al pulsar control+v puedas elegir que pegar de todo lo copiado. Con la combinación adicional podrías utilizar una pequeña interfaz para vacíar los espacios que están en uso para ahorrar memória.
Supongo que para hacer eso tendría que acceder a funciones del sistema operativo...
Mis conocimientos de c++ se reducen a la sintaxis aunque no me asusto al toparme con 800 líneas de código en una sola classe ya que he programado mucho en Java.
Las librerías a usar para esto són muy complejas?
Alguna idea de por donde empezar?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 661
Bronce
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Que tan complicado puede ser dessarrollar esta herramienta? Alguna idea de como empezar?

Publicado por agustin (522 intervenciones) el 05/04/2018 09:18:42
El siguiente código es una función que enviaría al portapapeles un texto:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void toClipboard(HWND hwnd, const std::string &s){
	OpenClipboard(hwnd);
	EmptyClipboard();
	HGLOBAL hg=GlobalAlloc(GMEM_MOVEABLE,s.size()+1);
	if (!hg){
		CloseClipboard();
		return;
	}
	memcpy(GlobalLock(hg),s.c_str(),s.size()+1);
	GlobalUnlock(hg);
	SetClipboardData(CF_TEXT,hg);
	CloseClipboard();
	GlobalFree(hg);
}
Ahí ya ves las funciones que debes usar para trabajar con el portapapeles.
Para capturar las combinaciones de teclado hay varios modos (atoms, hock de teclado,...) Hacer un hock de teclado en Windows es muy sencillo y puedes controlar todo lo introducido por teclado.
Yo tengo gato y de todos es sabido que les encantan los teclados así que cuando lo dejaba el pc encendido me la liaba y mi solución fue crearme una pequeña aplicación la cual hacia un hock de teclado evitando que funcione el teclado hasta introducir una contraseña que mi función reconocía y desactivaba el hock.
Aquí tienes la base de un keyloger:
https://underc0de.org/foro/codigos-fuentes-56/detectar-teclas-presionadas-por-hooks-(keylogger-base)/
Si no ves bien el código te lo pego aquí:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/***********************************
* Coder: Linkgl                    *
* Thanks: The swash                *
* Exaple for hooks WH_KEYBOARD_LL  *
***********************************/
#include <windows.h>
#include <stdio.h>
//declaramos el hook publico
HHOOK hHook;
 
LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
   //llamamos a la estructura y la hacemos puntero para lParam
   KBDLLHOOKSTRUCT kbHookStruct = *(KBDLLHOOKSTRUCT*)lParam;
   //PKDLLHOOKSTRUCT *kbHookStruct = (PKBDLLHOOKSTRUCT *)lParam;
   if(nCode < 0) //si es menor a 0 pasamos al siguiente hook
     return CallNextHookEx(0, nCode, wParam, lParam);
   if(wParam == WM_KEYDOWN) //Si se detecto pulsacion de tecla 
       printf("%s", (char *)&kbHookStruct.vkCode); //imprimimos convirtiendo a char *
 
   return CallNextHookEx(0, nCode, wParam, lParam);
}
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
   MSG msg;
   //definimos/activamos el hook
   hHook=SetWindowsHookEx(WH_KEYBOARD_LL,(HOOKPROC)LowLevelKeyboardProc,GetModuleHandle(NULL),0);
   //Bucle de mensajes
   while(TRUE==GetMessage(&msg, NULL, 0, 0))
   {
     TranslateMessage(&msg);
     DispatchMessage(&msg);
   }
   //eliminamos el hook
   UnhookWindowsHookEx(hHook);
}
Con esto solo te faltaría que en vez de imprimir la estructura de la pulsación controles que se pulsa con condicionales y switchs y actuar en cada caso como desees.
Por cierto ya existen aplicaciones que hacen lo que tú quieres por si quieres hacerla para ti porque piensas que no hay nada en el mercado: https://hipertextual.com/archivo/2013/09/alternativas-al-portapapeles-de-windows/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar