Entwickler-Ecke
Windows API - Maus deaktivieren
Nilsener - Do 30.10.03 22:34
Titel: Maus deaktivieren
Hallo,
ich möchte in meinem Prog gerne die Maus deaktivieren und nachdem das Prog einige Aktivitäten ausgeführt hat die Maus wieder aktivieren.
Ist sowas möglich ?
Danke für Eure Hilfe, Gruss Nils
Delete - Do 30.10.03 23:15
Äh, kurze Frage: Warum?
Du kannst deine Maus in einem Rechteck einfangen. API Funktion habe ich wieder vergessen, da ich sie nie brauche und auch keinen Sinn darin sehe.
Wenn der Bneutzer wärend dein Programm was macht, nichts anklicken soll, weil sonst alles durcheinander gerät, dann deaktiviere die entsprechenden Controls und Menüpunkte.
Maggi - Fr 31.10.03 09:56
Hi,
ich denke auch das soetwas keinen Sinn macht, da hat der Luckie schon recht.... Bill Gates verbiegen ist schwierig! :wink:
Aber solange dein Prog diese Aktionen durchführt kannst du die gewünschten Controls (Buttons,Edits, u.s.w.) doch Disablen!
Gruß
Maggi
matze - Fr 31.10.03 11:16
die funktion geht so:
Maus einfangen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| var Rec: TRect; begin Rec.Left := Left; Rec.Top := Top; Rec.Right := Left + Width; Rec.Bottom := Top + Height; ClipCursor(@Rec); end; |
Um den alten Mausbereich wiederherzustellen:
Nilsener - Di 04.11.03 23:04
Hallo Leute,
vielen Dank für Eure Tipps, wollte schon viel eher Antworten aber die Zeit gab es nicht her. Ich möchte die Maus deaktivieren um dann eine Mausbewegung zu simulieren, ohne dass der Benutzer die simulierte Bewegung mit der Maus stören kann. Mein Prog klickt automatisch in ein anderes Prog, sobald man die Maus dabei bewegt geht das natürlich schief.
Delphi-Quelltext
1: 2: 3: 4: 5:
| Maus Deaktivieren setcursorpos(x1, y1); mouse_event(MOUSEEVENTF_leftUP,x1,y1,0,0); Maus Aktivieren |
Gruss Nils
Moderiert von
Tino: Code- durch Delphi-Tags ersetzt.
BungeeBug - Di 04.11.03 23:46
Hi,
ich meine ne "bessere" Idee zuhaben ... ich weis aber nich ob es sinnvoll ist hier zu posten ... ich machs einfach und wenns nicht passt bitte sofort löschen
Delphi-Quelltext
1:
| ShellExecute(handle,'open',PChar('rundll32.exe'),PChar('Mouse,Disable'),SW_ShowNormal); |
matze - Mi 05.11.03 19:41
mach einfach folgendes:
deklarier folgende funktion
Delphi-Quelltext
1: 2:
| Function BlockInput(fBlock: boolean): boolean; stdcall; external 'user32.dll' |
bevor du den mausklick machst führst du dann
BlockInput(true); us und danach das selbe aber mit
false !!!
Nilsener - Do 06.11.03 21:23
Hallo Bungee,
ich hab deinen Vorschlag ausprobiert
Quelltext
1:
| ShellExecute(handle,'open',PChar('rundll32.exe'),PChar('Mouse,Disable'),SW_ShowNormal); |
mein prog sagt: undeclared identifier:'shellexecute'
muss ich noch mit der uses Anweisung irgend etwas einbinden ?
Gruss Nils
Nilsener - Do 06.11.03 21:25
Hallo Matze,
die 'echte' Maus wird tatsächlich deaktiviert. Mein Prog bewegt dann den Mauszeiger, kann aber offenbar keine Klicks mehr ausführen.
Hast Du noch eine Idee woran das liegen könnte ?
Gruss Nils
Raphael O. - Do 06.11.03 21:39
Nilsener hat folgendes geschrieben: |
mein prog sagt: undeclared identifier:'shellexecute'
muss ich noch mit der uses Anweisung irgend etwas einbinden ? |
ja, du musst "Shellapi" einbinden... :)
Nilsener - Fr 07.11.03 20:38
Danke Fiji,
nach Einbinden der 'ShellApi' schluckt er das 'ShellExecute', meckert jetzt aber über das 'handle'. Undeclared Identifier:'handle'. Noch eine idee ?
Quelltext
1:
| ShellExecute(handle,'open',PChar('rundll32.exe'),PChar('Mouse,Disable'),SW_ShowNormal); |
Gruss Nils
Delete - Fr 07.11.03 21:11
Wird Shellexecute in einer Methode von TForm aufgerufen? Wahrscheinlich nicht, deswegen sollte es heißen Form1.Handle.
Aber mal davon abgesehen, was passiert, wenn dein Programm abstürzt? Ich halte es für ganz schlechte Idee Maus und / oder Tastatur zu deaktivieren.
In deinem Fall, sag dem Benutzer vorher (Messagebox oder ähnliches), dass er die Maus nicht bewegen soll. Und auf was wird da geklickt? Ein Button? Dann hol dir das Handle und schick eine Nachricht an das fenster, die den Klick auslöst.
Nilsener - Mi 12.11.03 21:21
Vielen Dank Luckie,
so funktionierts
Quelltext
1:
| ShellExecute(form1.handle,'open',PChar('rundll32.exe'),PChar('Mouse,Disable'),'',SW_ShowNormal); |
wie kann die Maus wieder aktivieren ? So gehts nicht (obwohl es compiliert wird):
Quelltext
1:
| ShellExecute(form1.handle,'open',PChar('rundll32.exe'),PChar('Mouse,Enable'),'',SW_ShowNormal); |
Gruss Nils
Delete - Do 13.11.03 16:42
Maus-Hook und Mausnachrichten nicht weiterleiten.
SQLException - Fr 29.04.05 13:13
hat sich erledigt.
*löschmich*
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!