Autor Beitrag
Creepy
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Di 15.01.13 00:13 
Hallo Gemeinde

Momentan arbeite ich an einem Macrorecorder.
Aber mich plagt ein kleines Problem:

Man kann als Feature ein erstelltes Macro testhalber (ohne Funktion) abspielen, um zu sehen, ob es sauber läuft.
Der Benutzer kann aber leider die Maus beim Abspielen "verziehen".
Das beeinträchtigt zwar nicht die Ausführung, sieht aber unschön aus.

Gibt es vielleicht eine Möglichkeit, dem Benutzer die Maus während der Abspielphase zu entziehen,
sie aber trotzdem sichtbar/bewegbar zu halten?
Google gibt dazu meist auch nur Lösungen, in denen man die Maus durch Unsichtbarmachen ausschaltet,
oder in ein Rechteck clipt, aber das ist gerade bei diesem Programm nicht erwünscht.

Wenn das nur mit großen Würgarounds möglich wäre, könnte ich allerdings auch darauf verzichten.
Trotzdem frage ich lieber mal bei den Profis nach. ;)

Vielen lieben Dank für Tips

LG Creepy
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 15.01.13 00:32 
Wie funktioniert der Macrorecorder?
.
BlockInput

delphi.about.com/cs/...00/a/bltip1200_5.htm
Creepy Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Di 15.01.13 02:04 
Hallo hathor

Der Macrorecorder soll ähnlich dem leider anscheinend verwaisten Programm www.macrox.de/ funktionieren.
Dieses Programm ist leider ziemlich buggy. Der Autor hat vor 1-2 Jahren ein Update versprochen und sogar dafür Geld genommen.
Aber bis heute ist nichts passiert. Darum habe ich versucht, mein eigenes Programm auf die Beine zu stellen.

Meine Macros werden, wie in diesem Programm, über editierbare Scripte gesteuert, bzw. in Scripten aufgezeichnet.

Was die Maus betrifft, so wird jeder Punkt (bis jetzt) ganz simpel über eine Koordinatenliste abgefahren.

Zitat:
SetCursorPos(mok_x, mok_y);
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);


Wenn bei deinem Vorschlag die Maus noch sichtbar bleibt, dann wäre das DIE Lösung.
Ich probier das gleich heute nachmittag aus.

Hab erstmal vielen Dank!
Creepy Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Fr 18.01.13 01:12 
Hallo hathor

1000 Dank für die nette Hilfe.

Dein Beispiel mit BlockInput funktioniert bestens, allerdings musste ich eine kleine Änderung vornehmen,
da ich im kompilierten Programm Exceptions bekam, sobald BlockInput(true) aufgrufen wurde.

Ich habe jetzt die FuncAvail() als eigenständige Funktion eingebaut und in implementation die Funktionen

Zitat:
function FuncAvail(dllName, funcName: string; var p: pointer): boolean;
function Blockinput(f_Block: boolean): boolean; stdcall; external 'user32.dll';


deklariert.

Damit funktioniert alles prima.

Liebe Grüße
Creepy