AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Maus in Fenster halten

Ein Thema von MaToBe · begonnen am 15. Nov 2009 · letzter Beitrag vom 15. Feb 2010
Antwort Antwort
Seite 1 von 2  1 2      
MaToBe

Registriert seit: 2. Aug 2008
162 Beiträge
 
#1

Maus in Fenster halten

  Alt 15. Nov 2009, 13:06
Guten Tag,

mein Ziel ist etwas komisch. Ich möchte Wacraft III im Fenster-Modues spielen, um ab und an auch noch etwas chatten zu können. Außerdem fummel ich gern rum und es macht mir Spaß sowas umzusetzten, deshalb folgende Fragen:

1. Ich habe es geschafft, dass der Cursor nach dem klick auf meinen Button nur noch im Wacraft III Fenster bewegt werden kann. (Siehe Code) Allerdings geht das nur solange, solange ich NIRGENDS auf meinem Desktop hinklicke, nach dem ersten klick, egal wo hin ist die Wirkung aufgehoben. Warum?

Delphi-Quellcode:
procedure Mousefreeze (wHandle : HWND);
var Rect : TRect;
begin
  GetWindowRect(wHandle, Rect);
  ClipCursor(@Rect);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  h: hwnd;
  Result : string;
  Rect : TRect;
begin
  Result := inputbox('Handle finden', 'Geben Sie bitte den Namen des Fensters '
                      +'ein, von dem das Window-Handle ermittelt werden soll.','');
  h := FindWindowByTitle(Result);
  if h <> 0 then // if we found the Window-Handle
  begin
    ShowMessage('Window-Handle found');
// ShowWindow(h, SW_Maximize);
    Mousefreeze(h);
  end
  else
    ShowMessage('not found.');
end;
2. Leider kann man mit dieser Methode zwar nicht außerhalb des Fenstes mit der Maus agieren, aber die Windows-Balken wie zB Maximieren und Minimieren sind weiterhin erreichbar. Wie schaffe ich es, dass die Maus wirklich im Fenster und nicht nur "auf dem Fenster" bleibt? Das quasi nur der Inhalt, aber nicht das eigentliche Fenster erreibar ist?

MFG
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#2

Re: Maus in Fenster halten

  Alt 15. Nov 2009, 13:12
Zu 2: versuch es mal mit GetClientRect statt GetWindowRect.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
MaToBe

Registriert seit: 2. Aug 2008
162 Beiträge
 
#3

Re: Maus in Fenster halten

  Alt 15. Nov 2009, 13:40
Mit GetClientRect nimmt er sich irgendwie immer den ganzen Desktop und dann da etwa von (0/0) bis zu (500/500)... funktioniert also nicht.

€: Die ganzen Probleme liegen nicht daran, dass ich es an einem Spiel ausprobiere. Zu testzwecken verwende ich immer NotePad und dort geht es nicht.
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

Re: Maus in Fenster halten

  Alt 15. Nov 2009, 14:01
Zitat von MaToBe:
Mit GetClientRect nimmt er sich irgendwie immer den ganzen Desktop und dann da etwa von (0/0) bis zu (500/500)... funktioniert also nicht.

€: Die ganzen Probleme liegen nicht daran, dass ich es an einem Spiel ausprobiere. Zu testzwecken verwende ich immer NotePad und dort geht es nicht.
Naja du hast das ClientRect ja... Du musst es nur auf die Position des Fensters umrechnen
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Maus in Fenster halten

  Alt 15. Nov 2009, 14:08
Zu 1

Also bei dem Problem wirst du wohl an einem Maus Hook nicht vorbeikommen!
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
Progman

Registriert seit: 31. Aug 2007
Ort: 99974 MHL
695 Beiträge
 
Delphi 10.1 Berlin Starter
 
#6

Re: Maus in Fenster halten

  Alt 15. Nov 2009, 14:39
Das Rect "per Hand" berechnen.
Delphi-Quellcode:
h.Left:=MainForm.Left+10;
h.Top:=MainForm.Top+50;
h.Right:=h.Left+MainForm.Width-20;
h.Bottom:=h.Top+MainForm.ClientHeight-60;
Und dann eben bissel probieren, bis es so ist, wie man möchte.
So mach ich das immer beim eigenen Fenster
Und diese Methode eben auf h anwenden, in dem man h etwas verkleinert.
Karl-Heinz
Populanten von Domizilen mit fragiler, transparenter Aussenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
(Wer im Glashaus sitzt sollte nicht mit Steinen werfen)
  Mit Zitat antworten Zitat
MaToBe

Registriert seit: 2. Aug 2008
162 Beiträge
 
#7

Re: Maus in Fenster halten

  Alt 15. Nov 2009, 16:18
Zitat von lbccaleb:
Zu 1

Also bei dem Problem wirst du wohl an einem Maus Hook nicht vorbeikommen!
kann mir jemand das mit dem Mouse Hook erklären?
  Mit Zitat antworten Zitat
Progman

Registriert seit: 31. Aug 2007
Ort: 99974 MHL
695 Beiträge
 
Delphi 10.1 Berlin Starter
 
#8

Re: Maus in Fenster halten

  Alt 15. Nov 2009, 17:23
Warum nicht so:
Delphi-Quellcode:
procedure Mousefreeze (wHandle : HWND);
var Rect : TRect;
begin
  GetWindowRect(wHandle, Rect);
  //Die Werte dann eventuell etwas anpassen
  Rect.Left:=Rect.Left+10;
  Rect.Right:=Rect.Right-20;
  Rect.Top:=Rect.Top+30;
  Rect.Bottom:=Rect.Bottom-10:
  ClipCursor(@Rect);
end;
Das ist die einfachste Variante und man brauch nicht extra einen Hook
Karl-Heinz
Populanten von Domizilen mit fragiler, transparenter Aussenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
(Wer im Glashaus sitzt sollte nicht mit Steinen werfen)
  Mit Zitat antworten Zitat
MaToBe

Registriert seit: 2. Aug 2008
162 Beiträge
 
#9

Re: Maus in Fenster halten

  Alt 15. Nov 2009, 17:32
doch scheinbar schon...

das funktioniert einwandfrei, sobald ich aber irgendwo hinklicke verliert der code seine wirkung und die maus ist wieder offen...
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Maus in Fenster halten

  Alt 15. Nov 2009, 18:03
Such mal hier im Forum und per Google, dort sollte es ne menge Tuts geben.
Ich kann dir da auch nicht so weiter Helfen, bin auch nicht sehr Informiert in dem Thema.
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz