Autor |
Beitrag |
Nilsener
      
Beiträge: 26
D4
|
Verfasst: Do 30.10.03 22:34
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
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: 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
      
Beiträge: 160
WIN XP, WIN 2003
D5 Enter D 2006
|
Verfasst: 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!
Aber solange dein Prog diese Aktionen durchführt kannst du die gewünschten Controls (Buttons,Edits, u.s.w.) doch Disablen!
Gruß
Maggi
_________________ "Wir haben den Kontakt zur Realität verloren, aber die findet uns schon wieder"
|
|
matze
      
Beiträge: 4613
Erhaltene Danke: 24
XP home, prof
Delphi 2009 Prof,
|
Verfasst: 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:
Delphi-Quelltext
_________________ In the beginning was the word.
And the word was content-type: text/plain.
|
|
Nilsener 
      
Beiträge: 26
D4
|
Verfasst: 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
      
Beiträge: 901
|
Verfasst: 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
      
Beiträge: 4613
Erhaltene Danke: 24
XP home, prof
Delphi 2009 Prof,
|
Verfasst: 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 !!!
_________________ In the beginning was the word.
And the word was content-type: text/plain.
|
|
Nilsener 
      
Beiträge: 26
D4
|
Verfasst: 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 
      
Beiträge: 26
D4
|
Verfasst: 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.
      
Beiträge: 1596
VS 2013
|
Verfasst: 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 
      
Beiträge: 26
D4
|
Verfasst: 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
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: 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 
      
Beiträge: 26
D4
|
Verfasst: 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
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 13.11.03 16:42
Maus-Hook und Mausnachrichten nicht weiterleiten.
|
|
obbschtkuche
Gast
Erhaltene Danke: 1
|
Verfasst: Do 13.11.03 17:03
bevor jetzt die Frage kommt wie das geht:
www.assarbad.org/stuff/tutorials/hooks/
Mouse,Disable deaktiviert übrigens generell die Maus bis zum nächsten Windowsstart.
|
|
SQLException
      
Beiträge: 89
WinXP + D5 Enterprise
Win2k + D6 Personal
|
Verfasst: Fr 29.04.05 13:13
hat sich erledigt.
*löschmich*
|
|