Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Mit einem Button eine Tastenkombi simulieren (https://www.delphipraxis.net/2997-mit-einem-button-eine-tastenkombi-simulieren.html)

KridRed 17. Feb 2003 16:57


Mit einem Button eine Tastenkombi simulieren
 
Hi,

ich möchte in einem Fremdprogramm per Button eine Tastenkombination simulieren.

Beispiel: ich hol mir das Handle vom " Notepad " und möchte mit einem klick auf Button1 in meinem Prog ein STRG + P im Notepad simulieren (Drucken)

kann mir jemand weiterhelfen ?


Danke und Gruß,


Dirk

Luckie 17. Feb 2003 17:21

Dieser Code offnet den Datei-Öffnen-Dialof vom Notepad:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  hWindow, hMenu, hSubmenu, ItemID: Cardinal;
begin
  hWindow := FindWindow(nil, 'Unbenannt - Editor');
  if hWindow <> 0 then
  begin
    hMenu := GetMenu(hWindow);
    if hMenu <> 0 then
    begin
      hSubmenu := GetSubMenu(hMenu, 0);
      ItemID := GetMenuItemID(hSubMenu, 1);
      SendMessage(hWindow, WM_COMMAND, MAKEWPARAM(ItemID, BM_CLICK), 0);
    end;
  end;
end;

KridRed 17. Feb 2003 17:49

Zitat:

Zitat von Luckie
Dieser Code offnet den Datei-Öffnen-Dialof vom Notepad:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  hWindow, hMenu, hSubmenu, ItemID: Cardinal;
  buffer: array[0..255] of Char;
begin
  ZeroMemory(@buffer, sizeof(buffer));
  hWindow := FindWindow(nil, 'Unbenannt - Editor');
  if hWindow <> 0 then
  begin
    hMenu := GetMenu(hWindow);
    if hMenu <> 0 then
    begin
      hSubmenu := GetSubMenu(hMenu, 0);
      ItemID := GetMenuItemID(hSubMenu, 1);
      SendMessage(hWindow, WM_COMMAND, MAKEWPARAM(ItemID, BM_CLICK), 0);
    end;
  end;
end;

Hi Luckie,

GENAU DAS hab ich gebraucht... vielen Dank :)


Gruß,


Dirk

KridRed 18. Feb 2003 15:18

zum Thema
 
... das funktioniert bei Apps ohne ControlBar sehr gut.. aber wenn ich nun ne ControlBar drin hab, gehts nimmer. Ich hab mir mal die Unit sndkeys32 eingebunden, die diese Tastenkombinationen vereinfachen soll, aber irgendwie werd ich nicht schlau draus und bekomms nicht zu laufen.
Die Zeile
Delphi-Quellcode:
 SendKeys('^P',true);
soll die Kombi CTRL+P (drucken) simulieren, aber haut irgendwie nicht hin... hier mal mein bisheriger Testcode um ne Outlook Mail auszudrucken per CTRL+P (da ich den vorherigen Tip hier nicht nutzen kann.. wegen ControlBar )

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  target: HWND;
begin
  target := FindWindow('rctrl_rewnd32', nil);
    if target <> 0 then
    begin
    showmessage('habs gefunden');
      SendKeys('^P',true);
      end
      else
      begin
      showmessage('nicht gefunden');
  end;
end;

end.
Kann mir jemand einen Tip geben ?


Gruß,


Dirk


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:16 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz