AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Tasten an Programm senden

Ein Thema von Wuaegner · begonnen am 21. Jul 2005 · letzter Beitrag vom 22. Jul 2005
Antwort Antwort
Benutzerbild von Wuaegner
Wuaegner

Registriert seit: 8. Feb 2004
406 Beiträge
 
Delphi 6 Enterprise
 
#1

Tasten an Programm senden

  Alt 21. Jul 2005, 15:11
Hallo,
habe jetzt schon seid über einer Stunde lauter Posts zum Thema gelesn und alle Möglichkeiten ausprobiert aber KEINE hat funktioniert. Ich öffne mit ShellExecute() ein Programm (klappt), dann möchte ich diesem Programm / Fenster die Taste: TAB und danach Strg+V senden.
Kann jemand eine Lösung posten die funktioniert?
Habe mit das Handle geholt, es ist nicht 0 , dann in Vordergrund geholt, dann keybd_event und Sendmessage und und und probiert.. nix hat geklappt.
Wuaegner
Gruß Flo
Unternehmensberatung
  Mit Zitat antworten Zitat
barf00s
(Gast)

n/a Beiträge
 
#2

Re: Tasten an Programm senden

  Alt 21. Jul 2005, 15:43
auf der Delphi CD gibsne schicke unit namens "SendKeys" - aber kA ob des auch bei > D7 dabei iss
ansonsten - Google ist dein Freund
  Mit Zitat antworten Zitat
Benutzerbild von Wuaegner
Wuaegner

Registriert seit: 8. Feb 2004
406 Beiträge
 
Delphi 6 Enterprise
 
#3

Re: Tasten an Programm senden

  Alt 21. Jul 2005, 16:51
Habe mir die Unit besorgt, das Handle des Fensters bekomme ich auch jedoch:
Delphi-Quellcode:
procedure TForm1.DigitaleRckwrtssuchemiteinbeziehen1Click(Sender: TObject);
var targetWnd: HWND;
begin
  // Markierte Nummer in Zwischenablage
if LBNummern.Items.Count>0 then // nur wenn es einen gibt
  ClipBoard.AsText := LBNUmmern.Items.Strings[LBNummern.ItemIndex];

  ShellExecute(Application.Handle, 'open' ,PChar('C:\Programme\Digitale Rückwärtssuche 2005\KINVERS.EXE'), nil, nil, sw_ShowNormal);
  sleep(4000); // Damit das Handle dann auch exisitert , gibts hier ne bessere Lösung?
  targetWnd := FindWindow('TKIMainF', 'Digitale Rückwärtssuche 2005');

  if targetwnd <> 0 then
  begin
    SetForegroundWindow(targetwnd);
    SendKeys(targetwnd,'%D',false);
  end;
end;
Jedoch wird ALT+D nicht an die richtige Anwendung geschickt. Warum nicht?
Wuaegner
Gruß Flo
Unternehmensberatung
  Mit Zitat antworten Zitat
Benutzerbild von Wuaegner
Wuaegner

Registriert seit: 8. Feb 2004
406 Beiträge
 
Delphi 6 Enterprise
 
#4

Re: Tasten an Programm senden

  Alt 22. Jul 2005, 14:01
So jetzt hab ich es endlich geschafft und zwar mit dieser Prozedure:
Delphi-Quellcode:
procedure SendAltTab;
var
  KeyInputs: array of TInput;
  KeyInputCount: Integer;

  procedure KeybdInput(VKey: Byte; Flags: DWORD);
  begin
    Inc(KeyInputCount);
    SetLength(KeyInputs, KeyInputCount);
    KeyInputs[KeyInputCount - 1].Itype := INPUT_KEYBOARD;
    with KeyInputs[KeyInputCount - 1].ki do
    begin
      wVk := VKey;
      wScan := MapVirtualKey(wVk, 0);
      dwFlags := KEYEVENTF_EXTENDEDKEY;
      dwFlags := Flags or dwFlags;
      time := 0;
      dwExtraInfo := 0;
    end;
  end;
begin
  KeybdInput(VK_MENU, 0); // Alt
  KeybdInput(VK_TAB, 0); // Tab
  KeybdInput(VK_TAB, KEYEVENTF_KEYUP); // Tab
  KeybdInput(VK_MENU, KEYEVENTF_KEYUP); // Alt
  SendInput(KeyInputCount, KeyInputs[0], SizeOf(KeyInputs[0]));
end;
Wuaegner
Gruß Flo
Unternehmensberatung
  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 08:17 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