Wykrywanie sekwencji CTRL+C

0

Witam serdecznie,

Zmagam sie ostatnio z problemem wykrycia wcisniecia przez uzytkownika sekwencji CTRL+C (kopiowanie do schowka) lub jakiegokolwiek skorzystania ze schowka, potrzebuje informacji jaka aplikacja skorzystala ze schowka. Probowalem jakis keyloggerow ale nie dzialalo to rewelacyjnie i do tego nowe wersje windowsa informuja o potencjalnie groznej aplikacji.

Moze ktos ma jakis pomysl ?

0

Otwórz sobie okno, odpal SetClipboardViewer i reaguj na WM_CHANGECBCHAIN, WM_DRAWCLIPBOARD. Ja to robię mniejwięcej tak:

class CClipboardChain
{
public:
	BOOL HandleMessage(HWND, UINT, WPARAM, LPARAM);
	HWND m_hwndNext;
};

BOOL CClipboardChain::HandleMessage(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	switch (uMsg)
	{
		case WM_CREATE:
			m_hwndNext = SetClipboardViewer(hwnd);
			break;

		case WM_CHANGECBCHAIN:
			// If the next window is closing, repair the chain
			if (wParam == (WPARAM)m_hwndNext)
			{
				m_hwndNext = (HWND)lParam;
			}
			else // Otherwise, pass the message to the next link.
			{
				LRESULT result;
				if (m_hwndNext) SendMessageTimeout(m_hwndNext, WM_CHANGECBCHAIN,
					wParam, lParam, SMTO_ABORTIFHUNG, 100, &result);
			}
			break;

		case WM_DRAWCLIPBOARD:
			if (m_hwndNext) SendMessageTimeout(m_hwndNext, WM_DRAWCLIPBOARD,
				wParam, lParam, SMTO_ABORTIFHUNG, 100, &result);
			return TRUE;

		case WM_DESTROY:
			ChangeClipboardChain(hwnd, m_hwndNext);
	}
	return FALSE;
}

// usage
LRESULT CALLBACK MainMsgProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	static CClipboardChain Clipboard;

	if (Clipboard.HandleMessage(hwnd, uMsg, wParam, lParam))
		Toolbar.UpdateButtons();
	
	switch (uMsg)...
}

Clipboard.HandleMessage zwróci TRUE gdy stan schowka się zmieni.

potrzebuje informacji jaka aplikacja skorzystala ze schowka

Niestety tutaj nie ma takiej możliwości, ale zawsze możesz wstawić swój plugin do AppInit_DLLs i przejąć funkcję SetClipboardData z user32.dll.

0

super to ruszyło dzieki, a moglbyś rozwinac temat AppInit_DLLs i przejecia funkcji SetClipboardData z user32.dll. nigdy czegos takiego nie robilem

1 użytkowników online, w tym zalogowanych: 0, gości: 1