AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Mit einem Button eine Tastenkombi simulieren
Thema durchsuchen
Ansicht
Themen-Optionen

Mit einem Button eine Tastenkombi simulieren

Ein Thema von KridRed · begonnen am 17. Feb 2003 · letzter Beitrag vom 18. Feb 2003
Antwort Antwort
KridRed

Registriert seit: 12. Feb 2003
Ort: Saarbrücken
11 Beiträge
 
Delphi 6 Professional
 
#1

Mit einem Button eine Tastenkombi simulieren

  Alt 17. Feb 2003, 17:57
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
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2
  Alt 17. Feb 2003, 18: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;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
KridRed

Registriert seit: 12. Feb 2003
Ort: Saarbrücken
11 Beiträge
 
Delphi 6 Professional
 
#3
  Alt 17. Feb 2003, 18:49
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
  Mit Zitat antworten Zitat
KridRed

Registriert seit: 12. Feb 2003
Ort: Saarbrücken
11 Beiträge
 
Delphi 6 Professional
 
#4

zum Thema

  Alt 18. Feb 2003, 16:18
... 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  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
  Mit Zitat antworten Zitat
Antwort Antwort


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 10:47 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