Holla. Ich hatte letztens einen macro recorder gebraucht und gefunden. Leider ist die Oberfläche erstens mal grauenvoll, zum 2ten hat mein Windows nach Benutzung dauernd irgend welche Macken und es ist überfüllt mit buttons zu Sachen, die man auch beim Rechtsklick aufm flexgrid als menü angezeigt bekommt und oben nochmal im menü.
Wollte einen vom style her barrierefreien macro recorder für Windows schreiben mit stabbilierer Ausführung und noch ein paar wichtigen Sachen, die dem macro recorder, den ich bisher benutzt habe, einfach fehlen.
Zum Beispiel muss ich die mcr Datei öffnen und mit einem RegExp die ganzen Delay : .* auf Delay : 5 replacen, da das Programm selbst keien markierung mehrerer Zellen bietet um bequem über ganze Zellen und Zeilen zu editieren. Udn schon hänge ich bei dem Abhören von Tastenereignissen.
Hier der Startcode
Und das Programm soll nciht einmal richtig auf das Event des KEYDOWN reagieren egal wo es ist. Es soll es auch nicht allein für sich aufsaugen. Was ich meine: Es soll die tastenereignisse mitschneiden aber sonst Null Einfluss darauf haben und nicht von dem Fenster, an das es eigentlich ging, komplett abfangen und fürs eigentliche Zielfenster anullieren.
// edit
Hab da endlichw as. Sieht mir etwas zu kompliziert aus. Wie kommt es eigentlich zur Namensgebung "Hook"?
Wollte einen vom style her barrierefreien macro recorder für Windows schreiben mit stabbilierer Ausführung und noch ein paar wichtigen Sachen, die dem macro recorder, den ich bisher benutzt habe, einfach fehlen.
Zum Beispiel muss ich die mcr Datei öffnen und mit einem RegExp die ganzen Delay : .* auf Delay : 5 replacen, da das Programm selbst keien markierung mehrerer Zellen bietet um bequem über ganze Zellen und Zeilen zu editieren. Udn schon hänge ich bei dem Abhören von Tastenereignissen.
Hier der Startcode
Code:
#include <windows.h>
// Deklaration der Fensterprozedur
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
// Fensterklasse
char szClassName[] = "WindowsApp";
int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nFunsterStil)
{
MSG messages;
WNDCLASSEX wincl;
wincl.cbSize = sizeof (WNDCLASSEX);
wincl.hInstance = hThisInstance;
wincl.lpszClassName = szClassName;
wincl.lpfnWndProc = WindowProcedure;
wincl.style = CS_DBLCLKS;
wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
wincl.hIconSm = (HICON)LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(0), IMAGE_ICON, 16, 16, 0);
wincl.hCursor = LoadCursor(NULL, IDC_ARROW);
wincl.lpszMenuName = MAKEINTRESOURCE(1);
wincl.cbClsExtra = 0;
wincl.cbWndExtra = 0;
wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
// Fensterklasse registrieren
if (!RegisterClassEx(&wincl)) return 0;
// Fnster erzeugen
HWND hwnd = CreateWindowEx(
0, /* Extended possibilites for variation */
szClassName, /* Classname */
"Windows App", /* Title Text */
WS_OVERLAPPEDWINDOW, /* default window */
CW_USEDEFAULT, /* Windows decides the position */
CW_USEDEFAULT, /* where the window ends up on the screen */
544, /* The programs width */
375, /* and height in pixels */
HWND_DESKTOP, /* The window is a child-window to desktop */
NULL, /* No menu */
hThisInstance, /* Program Instance handler */
NULL /* No Window Creation data */
);
// Fenster sichtbar schalten
ShowWindow (hwnd, nFunsterStil);
// Nachrichtenschleife
while (GetMessage(&messages, NULL, 0, 0))
{
// Virtuelle Keys übersetzen.
TranslateMessage(&messages);
if (messages.message == WM_KEYDOWN)
{
// Auch an dieser Stelle nur Messages an Fenster des eigenen Programms
MessageBox(NULL, "test", "test", NULL);
}
// Nachricht an die Fensterprozedur schicken
DispatchMessage(&messages);
}
return messages.wParam;
}
// Fensterprozedur
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_DESTROY:
PostQuitMessage (0);
break;
default:
// Für Nachrichten, die wie bei jedem noralen App verarbeitet werden.
return DefWindowProc (hwnd, message, wParam, lParam);
}
return 0;
}
Und das Programm soll nciht einmal richtig auf das Event des KEYDOWN reagieren egal wo es ist. Es soll es auch nicht allein für sich aufsaugen. Was ich meine: Es soll die tastenereignisse mitschneiden aber sonst Null Einfluss darauf haben und nicht von dem Fenster, an das es eigentlich ging, komplett abfangen und fürs eigentliche Zielfenster anullieren.
// edit
Hab da endlichw as. Sieht mir etwas zu kompliziert aus. Wie kommt es eigentlich zur Namensgebung "Hook"?