Hallo.
Ich habe jetzt wieder die Kontrolle der Sperrzeit über die Host-App laufen lassen.
Das Strg und Shift Problem ist nun auch gelöst.
Jetzt habe ich nur noch das große Problem mit dem Cursor.
Ist die Maustaste gesperrt, soll der Cursor crNo zeigen (logischerweiße für alle Anwendungen). Und das scheint gar nicht so einfach zu funtkionieren.
Folgender Code, den ich so ähnlich im Internet fand:
Delphi-Quellcode:
var
cursor_backup: HCursor;
begin
cursor_backup := GetCursor;
SetSystemCursor(Screen.Cursors[crNo], OCR_NORMAL);
// ...
SetSystemCursor(cursor_backup);
end;
Das große Problem: SetSystemCursor verändert direkt den Zeiger und überschreibt diesen. Wenn die Anwendung abstürzt, dann hat der Benutzer ein schönes crNo als Standardmauszeiger - das hat irgendwie was
. Das cursor_backup wird übrigens auch nicht zurückgespielt. Der Cursor bleibt auf crNo.
SetCursor() verändert hingegen nur innerhalb der Anwendung. Ist also auch nichts. Tippe ich im Notepad, bleibt der Cursor beim Windows-Standard?
Außerdem habe ich den Effekt, dass ich innerhalb der WndProc den Mauszeiger nicht so einfach verändern kann, da er durch die anderen Ereignisse in kürzester Zeit wieder rückgängig gemacht wird.
Gibt es einen Befehl, der bewirkt, dass ich Systemweit auf OCR_NO umstelle? Ich denke, OCR_NORMAL zu überschreiben ist ein falscher und unsauberer Weg.
Thema
http://www.delphipraxis.net/internal...ct.php?t=23787 zeigt bisher keine Lösung - das kann doch irgendwie nicht sein, dass Microsoft nicht daran gedacht hat, den Mauszeiger global zu verändern, ohne das man alle Standardtypen überschreibt...
// Edit: Da das ursprüngliche Problem mit dem Programm gelöst ist und das crNo-Mauszeiger-Problem unabhängig behandelt werden kann, habe ich das Thema als gelöst markiert und frage in den jeweiligen Themen weiter. Ich werde den Automatic-Touchpad-Locker bald OpenSource veröffentlichen, sobald ich eine schöne
GUI geschaffen habe. Ich danke euch sehr herzlich für die Unterstützung.
Gruß
blackdrake