Einzelnen Beitrag anzeigen

Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.685 Beiträge
 
Delphi 11 Alexandria
 
#14

AW: TButton und ShowAccelChar

  Alt 21. Jan 2022, 12:54
Also der Gedanke den ich hatte habe ich nun erfolgreich getestet.

Ich habe TButton auf einer Form mit einer "T&est" Caption.
Wenn ich das Programm starte ist "e" unterstrichen.

Das war es doch was der TE wollte, oder?

Delphi-Quellcode:
function SendVK(const TargetWindow: HWND = 0; const VK_KeyCode: Word = 0; const PressKey: Boolean = True): Boolean;
var
  inputArray: array[0..0] of TInput;
begin
  Result := False;
  if (TargetWindow = 0) then
    Exit;

  // Beginne Prüfung
  if (GetForegroundWindow <> TargetWindow) then
    begin
      // Ziel ist kein Fenster
      if (not IsWindow(TargetWindow)) then
        Exit;

      // Ziel ist minimiert
      if IsIconic(TargetWindow) then
        ShowWindow(TargetWindow, SW_RESTORE);

      // Ziel ist versteckt
      if (not IsWindowVisible(TargetWindow)) then
        ShowWindow(TargetWindow, SW_SHOW);

      // Ziel ist nicht im Vordergrund
      if (GetForegroundWindow <> TargetWindow) then
        BringWindowToTop(TargetWindow);

      // Finale prüfung
      if (GetForegroundWindow <> TargetWindow) then
        Exit;
    end;

  // Fülle Puffer und sende ihn
  FillChar(inputArray, Length(inputArray) * SizeOf(TInput), 0);
  inputArray[0].Itype := INPUT_KEYBOARD;
  inputArray[0].ki.wVk := VK_KeyCode;
  if (not PressKey) then
    inputArray[0].ki.dwFlags := KEYEVENTF_KEYUP;
  Result := (SendInput(Length(inputArray), inputArray[0], SizeOf(TInput)) <> 0);
end;

procedure TForm19.FormCreate(Sender: TObject);
begin
// Self.BringToFront;
  SendVK(Handle, VK_LMENU);
  SendVK(Handle, VK_LMENU, False);
  SendVK(Handle, VK_ESCAPE);
  SendVK(Handle, VK_ESCAPE, False);
end;
Gruß vom KodeZwerg

Geändert von KodeZwerg (22. Jan 2022 um 12:41 Uhr) Grund: methode überarbeitet
  Mit Zitat antworten Zitat