Einzelnen Beitrag anzeigen

Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: einfache Bildschirmtastatur

  Alt 10. Apr 2007, 01:28
Hallo,

die Bildschirmtastatur von Windows ist Topmost. Wenn man die Bildschirmtastatur verschiebt setzt diese sich dadurch wieder in den Vordergrund. Wenn man dann mit der Maus wieder über die Tastatur geht, wird das zuletzt aktive Fenster wieder in den Vordergrund gebracht.

Ich habe mal etwas herumexperimentiert, leider flackert das alles noch ein bisschen, da man beim klicken auf den Button das Fenster immer wieder nach vorne bringt.

Delphi-Quellcode:
  private
    hForeground : HWND;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  SetWindowPos(self.Handle, HWND_NOTOPMOST + WORD(true), 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE);
end;

procedure TForm1.SpeedButton1MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  windows.SetForegroundWindow(hForeground);
end;

procedure TForm1.SpeedButton1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  windows.keybd_event(ord('A'), 0, 0, 0);//Beispiel
  keybd_event(ord('A'), 0, KEYEVENTF_KEYUP, 0);
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  hForeground := windows.GetForegroundWindow;
end;
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat