Einzelnen Beitrag anzeigen

Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.490 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Windows Cursor Veränderung abfragen

  Alt 27. Feb 2008, 10:46
Dann schau mal in der Hilfe Delphi-Referenz durchsuchenMultithread-Anwendungen entwickeln. Wenn man es nach ein paar Jahren dann verstanden hat, ist es sehr einfach und extrem nützlich

In deinem Beispiel als Ansatz (zeigt Mausposition und Cursorhandle in einem Label):
Delphi-Quellcode:
interface ...
  type
  ...

  TMausInfo = record
     CursorPos : TPoint;
     Cursor : HCURSOR;
  end;

  TMausThread = class(TThread)
  private
  protected
     procedure Execute; override;
  public
     constructor Create(CreateSuspended: Boolean);
     destructor Destroy; override;
  end;
...
var
  MausInfo : TMausInfo;

implementation
...
{ TForm1 }
procedure TForm1.bnnMausThreadClick(Sender : TObject);
begin
   TMausThread.Create(False);
end;

procedure TForm1.UpdateLabel;
begin
   // Hier dann auf evtl. Änderungen reagieren
   LabelMausInfo.Caption := Format('%d/%d x%8.8x', [MausInfo.CursorPos.X,MausInfo.CursorPos.Y, MausInfo.Cursor]);
end;


{ TMausThread }

constructor TMausThread.Create(CreateSuspended: Boolean);
begin
   inherited Create(True);
   FreeOnTerminate := True;
   if not CreateSuspended then Resume;
end;

destructor TMausThread.Destroy;
begin
  inherited;
end;

procedure TMausThread.Execute;
var
   CI : TCursorInfo;
begin
  while not Terminated do
  begin
     CI.cbSize := SizeOf(CI);
     if GetCursorInfo(CI) then
     begin
        MausInfo.CursorPos := ci.ptScreenPos;
        MausInfo.Cursor := ci.hCursor;
        Synchronize(Form1.UpdateLabel);
     end;
     // Wartezeit 1/10 Sekunde (NICHT EXAKT!!!)
     Sleep(100);
  end;
end;
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat