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 ALT + A an fremde Anwendung senden. (https://www.delphipraxis.net/138331-alt-fremde-anwendung-senden.html)

Jackie1983 7. Aug 2009 17:30


ALT + A an fremde Anwendung senden.
 
Servus,

habe hier die Funktion PostKeyExHWND gefunden. Mit dieser Funktion kann ich eine Taste an eine bestimmte Anwendung senden, nur leider klappt das so nicht ganz :(

Fenster finden
Delphi-Quellcode:
  h := WindowFromPoint(pt);
  Windows.ScreenToClient(h, pt);
  h := ChildWindowFromPoint(h, pt);
und dann die Tasten senden
Delphi-Quellcode:
PostKeyExHWND(h, ORD('A'), [ssAlt], false);
habe auch schon probiert
Delphi-Quellcode:
PostKeyExHWND(h, $41, [ssAlt], false);
Aber nichts funktioniert, kann mir da einer weiterhelfen?

Gruß

Jackie1983 7. Aug 2009 17:40

Re: ALT + A an fremde Anwendung senden.
 
ok weis jetzt wieso das kommt, die Anwendung braucht den Focus.
Also wenn ich in der Anwendung bleibe und die Anwendung ist aktiv, derzeit sende ich dann aus meiner Anwendung die Tasten funktioniert es.

Es funktioniert nicht wenn ich die Funktion BringToFront und setfocus aufrufe.
Hat da eventuell jemand ne idee, wie man das ganze lösen könnte,
eventuell ohne das die Anwendung sichtbar sein muss.

gruß

Luckie 7. Aug 2009 19:57

Re: ALT + A an fremde Anwendung senden.
 
Was willst du denn genau machen? In einem Eingabefeld den ganzen Text auswählen? Dann sende doch an das Fenster die Nachricht MSDN-Library durchsuchenEM_SETSEL.

Jackie1983 10. Aug 2009 08:22

Re: ALT + A an fremde Anwendung senden.
 
nein möchte das der Button gedrückt wird. Und mit alt + x geht es weiter.

Möchte gerne von einem Programm ein Script erstellen wo alles drin steht und mein Programm sendet dann die Daten an das Programm. Somit braucht der User nichts einzugeben, sondern das Programm wird auf dem Rechner ohne eingriffe installiert.

toms 10. Aug 2009 08:24

Re: ALT + A an fremde Anwendung senden.
 
Simuliere Klicks auf die Buttons.

Jackie1983 10. Aug 2009 08:26

Re: ALT + A an fremde Anwendung senden.
 
Habe aber doch nur das Handel von der Anwendung. Wie soll ich dann bei einem bestimmten Button ein klick Simulieren.

toms 10. Aug 2009 08:33

Re: ALT + A an fremde Anwendung senden.
 
Zitat:

Zitat von Jackie1983
Habe aber doch nur das Handel von der Anwendung. Wie soll ich dann bei einem bestimmten Button ein klick Simulieren.

Indem du die Handles der Buttons ermittels. (z.B mit WinSpy)

TeronG 10. Aug 2009 08:41

Re: ALT + A an fremde Anwendung senden.
 
Kannst ja auch mal HIER gugn .. sollte/könnte weiterhelfen.

Jackie1983 10. Aug 2009 08:50

Re: ALT + A an fremde Anwendung senden.
 
Zitat:

Zitat von toms
Indem du die Handles der Buttons ermittels. (z.B mit WinSpy)

Aber bei jedem start bekommt doch das Programm ein anderes Handel, deswegen auch die Buttons, nehme ich an.

Zitat:

Zitat von TeronG
Kannst ja auch mal HIER gugn .. sollte/könnte weiterhelfen.

Diese Funktion habe ich auch schon gefunden. Nur dort kann man kein Handel der Anwendung übergeben.

mleyen 10. Aug 2009 08:53

Re: ALT + A an fremde Anwendung senden.
 
Zitat:

Zitat von Jackie1983
Zitat:

Zitat von toms
Indem du die Handles der Buttons ermittels. (z.B mit WinSpy)

Aber bei jedem start bekommt doch das Programm ein anderes Handel, deswegen auch die Buttons, nehme ich an.

Die Handles bekommst du durch die Class- und Windownames. (FindWindowEx)

Satty67 10. Aug 2009 09:01

Re: ALT + A an fremde Anwendung senden.
 
Also ideal wäre eine Kombination der hier gefallenen Vorschläge:

Handle des Edit/Memo-Control ermitteln und dann mit den rischtigen Botschaften arbeiten, wie Lukie vorgeschlagen hat (EM_SETSEL, WM_CUT etc.)

Das Control (Classname und evtl. Name) ermittelt man einmal per WinSpy, danach kann man das vor jedem Botschaft senden bei Bedarf kurz suchen.

TeronG 10. Aug 2009 09:15

Re: ALT + A an fremde Anwendung senden.
 
Zitat:

Zitat von Jackie1983
Diese Funktion habe ich auch schon gefunden. Nur dort kann man kein Handel der Anwendung übergeben.

doch ... aber bissl "versteckt". Einfach mal bei den Schweizern weiter nach unten gugn.

Delphi-Quellcode:
procedure PostKeyExHWND(hWindow: HWnd; key: Word; const shift: TShiftState; specialkey: Boolean);

Jackie1983 10. Aug 2009 09:35

Re: ALT + A an fremde Anwendung senden.
 
Zitat:

Zitat von Jackie1983
Delphi-Quellcode:
PostKeyExHWND(h, $41, [ssAlt], false);

Aso, die verwende ich ja, steht ganz oben.

TeronG 10. Aug 2009 10:01

Re: ALT + A an fremde Anwendung senden.
 
oh :oops:
Und du kannst damit nicht an Andere Anwendungen was senden?

Jackie1983 10. Aug 2009 10:41

Re: ALT + A an fremde Anwendung senden.
 
doch das kann ich. Wenn ich was sende sieht es so aus als ob die Alt Taste im Programm gedrückt wurde. Aber der Buchstabe kommt nicht an.

An einem Notepad kann ich senden.

Guido Eisenbeis 15. Aug 2009 05:38

Re: ALT + A an fremde Anwendung senden.
 
Schau dir mal folgendes an:

Shift, Ctrl, Alt + Funktionstaste über PostMessage?

Guido.

Neutral General 15. Aug 2009 06:54

Re: ALT + A an fremde Anwendung senden.
 
Hi,

Vielleicht bringt es auch was, wenn du zuerst nur Alt schickst und dann direkt das A hinterher.

Bzw. Vielleicht musst du auch ein kleines a senden, also $61 oder du brauchst den Scancode der A-Taste..

Gruß
Neutral General


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:58 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