Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Maus deaktivieren... (https://www.delphipraxis.net/6036-maus-deaktivieren.html)

TheMiller 26. Jun 2003 23:10


Maus deaktivieren...
 
Hi,

ja genau, ich suche einen Code, der die Maus deaktiviert. Komme auf keinen vernüftigen Gedanken...

Gruß
DJ-SPM

Luckie 27. Jun 2003 01:19

Wozu? Eventuell gibnt es eine andere, bessere Lösung. Ich kann so was nicht leiden.

Darty 27. Jun 2003 07:32

Unter Window die Maus deaktiveren ?? :shock:

Christian Seehase 27. Jun 2003 09:38

Moin Darty,

Zitat:

Zitat von M.Knebel
Unter Window die Maus deaktiveren ??

also ich kenne aus eigener Erfahrung durchaus einen Grund wo das Sinn macht, allerdings nicht innerhalb einer Anwendung.
Wenn Du automatisierte Installationen laufen lässt, incl. der Meldung man möge auf jeden Fall Tastatur und Maus in Ruhe lassen, garantiere ich Dir, dass das oft nicht beachtet wird.
Schaltet man die hingegen vorher ab... :mrgreen:

negaH 27. Jun 2003 11:18

Ich stimme Sakura zu, solche Manipulationen sind sehr leidvoll. Egal ob Setup oder Anwendung. Windows ist ein "Multitaksing" System und ich habe mir keinen Powerrechner gekauft damit mich ein Setup blockiert.

Zur eigentlichen Frage: mit SetCursorPos() setzt man die Mouse in sein Fenster, dann mit ShowCursor() unsichtbar machen, und final mit ClipCursor() den Bereich in dem die Mouse bewegt werden kann auf minimale Größe beschränken. Da nun der Cursor nicht mehr ausserhalb deines Fensters bewegt werden kann, wird er auch nicht mehr autom. sichtbar gemacht.

Wie gesagt, stellt ein Setup/Anwednung solche Sachen mit mir an, fliegt es gnadenlos vom Rechner. (der Taskmanager unter 2000 arbeitet da sehr sicher:)

Gruß Hagen

Luckie 27. Jun 2003 11:22

Sorry, die Beschwerde kam von mir. :wink:

negaH 27. Jun 2003 11:27

T'schuldige Luckie, bin neu hier :)

Noch eine andere Frage: Soll die Mouse systemweit "gesperrt" werden oder ab nur für das eigene Form ??
In deiner Frage hast du dies nicht erwähnt. In einem anderen Thread hier im Forum hast du dich auf deine eigenes Form bezogen (Spieleprogrammierung). In diesem Zusammenhang ist das das Mouse"sperren" sehr wohl sinnvoll.

Mit obigen Funktionen ist aber die Lösung deines Problemes möglich.


Gruß Hagen

sakura 27. Jun 2003 11:42

Zitat:

Zitat von negaH
Ich stimme Sakura zu, solche Manipulationen sind sehr leidvoll.

Ich hatte mich zwar noch nicht dazu geäußert, aber für Protokoll: Ich stimme Hagen, ähh negaH, zu ;-)

...:cat:...

Luckie 27. Jun 2003 11:47

wenn ich Eingaben unterbinden will, dann deaktivier ich einfach alles bis auf den Abbrechen-Button. Man muß nur sicherstellen, dass danach auch alles wieder geht.

negaH 27. Jun 2003 11:51

Korrekt. Alles auf ein TPanel packen und diese Panel.Enabled := False setzen. Das TForm muß dann über .KeyPreview := True natürlich die Kontrolle übernehmen. Das TForm ansich, also Caption,Menu,Frame wäre noch bedienbar.

Gruß Hagen

Luckie 27. Jun 2003 12:01

Ein eventuell vorhandenes Hauptmenü nicht vergessen. :wink:

Christian Seehase 27. Jun 2003 12:39

Moin Hagen,

Zitat:

Zitat von negaH
Egal ob Setup oder Anwendung. Windows ist ein "Multitaksing" System und ich habe mir keinen Powerrechner gekauft damit mich ein Setup blockiert.

Das hab' ich jetzt einfach mal auf meine Aussage bezogen ;-)

Mir geht's hierbei nicht um eine "normale" Installation, sondern um die Verteilung von Software in Unternehmen. Da hat der User meist nicht mitzubestimmen, ob er eine Software bekommt oder nicht. ;-)
Gerade bei kompletten Systeminstallationen kann eine Abschaltung von Keyboard und Maus die Installation ganz entschieden schützen.

TheMiller 27. Jun 2003 13:03

Ok,

jetzt mal zum AusgangsThread zurück. Also, was ich mit "Maus sperren" meine ist, dass der User die Maus nicht mehr bewegen kann und auch nicht klicken kann. Dies ist für mein Programm eigentlich sehr sinnvoll...

@negaH : Keine Angst, es ist kein Setup-Programm und der User kann es selbst entscheiden, wann die Maus gesperrt werden soll und wann nicht.

@Luckie : Wozu ich die Maus sperren will, ist doch egal. Wenn du einen Code oder Tipp für mich hast, du wäre ich froh, du würdest ihn mir posten... Ich kann dir nur sagen, das macht Sinn und der User, der genauso denkt, wird diese Funktion benutzen...

Würde mich über einen Code freuen, in dem die Maus komplett "einfriert"

DJ-SPM

OrallY 27. Jun 2003 13:27

Wenn du einen Low-Level Maushook installierst (WH_MOUSE_LL) und in der Hauptfunktion das CallNextHookEx nicht aufrufst, kannst du keine Eingabe meher tätigen. Falls du nicht weißt, wie man einen Hook in der Form einichtet, guck einfach mal hier und hier, außerdem kannst du dir noch das Tutorial von Assarbad (was er eigentlich demnächst auf Vordermann bringen wollte :wink:) angucken, zu finden auf der www.assarbad.net unter downloads->tutorials->Hooks.
Funktioniert aber glaub ich nur ab NT, da 98 diesen Maushook gar nicht kennt.

CepheidenX 27. Jun 2003 16:36

Zitat:

Zitat von DJ-SPM
@Luckie : Wozu ich die Maus sperren will, ist doch egal. Wenn du einen Code oder Tipp für mich hast, du wäre ich froh, du würdest ihn mir posten... Ich kann dir nur sagen, das macht Sinn und der User, der genauso denkt, wird diese Funktion benutzen...

Ich denke nicht das es bei solchen Funktioen völlig egal ist. Immerhin kann man damit recht "unfaire" Dinge machen. Wo soll denn die verbreitung von eventuell schädlichen Code anfangen?
Ausserdem fällt mir derzeit keine Sache ein bei der das Sinn machen würde, deshalb würd mich das deswegen schon interessieren.

OregonGhost 27. Jun 2003 17:43

Nur um mal eine Sache zu nennen wo es Sinn machen würde / könnte: Es gibt eine Reihe Tools, die sozusagen die Arbeitsstation sperren. Sie ermöglichen keine Mauseingaben mehr (Tastatur außerhalb des Programms natürlich auch nicht), und die einzige Eingabemöglichkeit wäre die eines Passwortes zwecks Entsperrung.

Ob so ein Tool in Zeiten von Windows 2000 / XP noch Sinn macht ist allerdings wiederum eine andere Frage.

Bei Spielen glaube ich allerdings nicht, dass "Maus sperren" sinnvoll ist, da es dort meist genügt, einfach den Cursor abzuschalten.

Bei potentiell bösartigem Code bin ich daher auch dafür, das Anwendungsgebiet zu benennen, denn das ist ja meist nicht so schwer...

APP 27. Jun 2003 18:19

Hallo,
ich hatte vor kurzem das Problem, eine Fremdapplikation zu steuern, wo
manche Komponenten keine waren, sondern nur grafische Elemente.

Daher bestimmte ich die relative Position dieser Elemente, und schob
danach die Maus dorthin und simulierte einen Mausklick.

Damit inzwischen der User nicht den Mauscurser in eine andere Richtung
verschob, versteckte/schaltete ich die Maus aus :cat:!

Delphi-Quellcode:
ShowCursor(FALSE); // Cursor aus/ein
ShowCursor(TRUE);
Damit schaltete ich die Maus aus (WinXP)
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);

   function FuncAvail(_dllname, _funcname: string; var _p: pointer): boolean;
   { Devuelve true si la funcion _funcname esta disponible en la DLL _dllname.
    Si es asi, almacena en _p la direccion de la función.}

   var _lib: tHandle;

   begin
     Result := false;
     _p := NIL;
     if LoadLibrary(PChar(_dllname)) = 0 then exit;
     _lib := GetModuleHandle(PChar(_dllname));
     if _lib <> 0 then
       begin
         _p := GetProcAddress(_lib, PChar(_funcname));
         if _p <> NIL then Result := true;
       end;
   end;


 var
   xBlockInput : function(Block: BOOL): BOOL; stdcall;

 begin
   if FuncAvail('USER32.DLL', 'BlockInput', @xBlockInput) = true then
     begin
       {Bloquear entradas/Disable input}
       xBlockInput(true);
       sleep(4000);
       {Desbloquear/Enable}
       xBlockInput(false);
     end;
 end;
Quelle:Disable mouse an keyboard in whole Windows


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:34 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz