AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Andere Applikation Kontrollieren
Thema durchsuchen
Ansicht
Themen-Optionen

Andere Applikation Kontrollieren

Ein Thema von Hybrid666 · begonnen am 5. Jan 2007 · letzter Beitrag vom 5. Jan 2007
Antwort Antwort
Hybrid666

Registriert seit: 15. Jul 2006
Ort: Erster Stock
250 Beiträge
 
Delphi 7 Personal
 
#1

Andere Applikation Kontrollieren

  Alt 5. Jan 2007, 17:01
Hi,

ich hab eine frage, ich hoffe das ich ist das richtige unterforum und es geht überhaupt, ich habe ein programm da, bei dem man eine nummer eintragen muss und dann einen button klicken, dannach spuckt er etwas aus, ich würde gerne um die nummer nicht jedesmal neu einzugeben (hat keine history und keine speicherfunktion, und nummern können variieren) per delphi programm die nummer eintragen lassden, den button betätigen (und wenn möglich, aber muss nicht sein, ein angezeigtes image ODER ein label auslesen)

MfG Hybrid666

btw ich will keinen ganzen coe, nur die commands und die funktionsweiße, will ja auch was lernen

Danke Schonmal.
  Mit Zitat antworten Zitat
Flips

Registriert seit: 17. Feb 2005
Ort: Sankt Wendel
491 Beiträge
 
Delphi 7 Professional
 
#2

Re: Andere Applikation Kontrollieren

  Alt 5. Jan 2007, 18:40
Hi.

Ich glaube wenn du die Frage das nächste Mal genauer formulierst, dann bekommst du schneller ne Antwort.

Also verstehe ich das richtig, du willst haben das dein Programm etwas in das Edit-Feld eines anderen Programmes schreibt.

Folgender Code, mit Erklärung, da du ja was lernen willst
Delphi-Quellcode:
function GetFocussedWindow(ParentWnd:HWnd):HWnd;
var OtherThreadID,Buffer : DWord;
begin
  OtherThreadID:=GetWindowThreadProcessID(ParentWnd, @Buffer);
  if AttachThreadInput(GetCurrentThreadID, OtherThreadID, true) then begin
    Result:=GetFocus;
    AttachThreadInput(GetCurrentThreadID, OtherThreadID, false);
  end
  else
    Result:=0;
end;


var WindowHandle : HWND;
begin
WindowHandle := GetFocussedWindow(GetForegroundWindow());
PostMessage(WindowHandle , wm_KeyDown, Ord('A'),0);
end;
Zu den einzelnen Funktionen:
function PostMessage(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): BOOL; stdcall; PostMessage ist soweit ich weiß wie SendMessage, nur das PostMessage keine Bestätigung anfordert, ob die Message auch wirklich gesendet wurde. Damit senden wir Messages^^

Zitat:
GetFocussedWindow(GetForegroundWindow());
Dieses Duo liefert dir das Handle des im fokusierten Fenster fokusierten Objektes, in dem Falle das Edit Feld wo du die Zahlen eingibst.

Die Anweisung
PostMessage(WindowHandle , wm_KeyDown, Ord('A'),0); führt also in diesem fokussiertem Objekt die Anweisung wm_KeyDown aus, und drückt die Taste A, welche natürlich vorher in einen Ordinalwert umgewandelt werden muss.


Ich hoffe du hast wenigstens einen Teil verstanden
Dieser Code funktioniert nur wenn du den Fokus im Edit-Feld hast wo die Zahlen reinsollen, den Buttpn klickst du auf ähnliche Weise.
Philipp F.
  Mit Zitat antworten Zitat
Hybrid666

Registriert seit: 15. Jul 2006
Ort: Erster Stock
250 Beiträge
 
Delphi 7 Personal
 
#3

Re: Andere Applikation Kontrollieren

  Alt 5. Jan 2007, 19:06
danke, das hat mir erstmal (teilweiße) geholfen.

Also genauer formuliert:

Ich starte mein programm und das programm des 3. herstellers, das 3. hersteller programm ist so aufgebaut: man gibt eine nummer in ein edit feld ein nd drückt einen button, dadurch begint die routine des programms und es sucht bestimmte dinge im internet. da das programm aber keine history hat und die nummer ständig variiert (je nachdem was man nachsehen will) will ich ein programm schreiben, das eine liste der nummern mit erklärung beinhaltet, wenn man nun mein programm tartet, wählt eine nummer aus und drückt start soll mein programm die nummer ins andere eintragen und den button des anderen programms starten.
Ich hoffe das ist einleuchtender.

Werde nun schaun wie weit ich mit obigem code komme ^^.

und noch ne kleine frage, kann man das auch irgendwie ohne das fokusierte objekt achen? ich kann ja über ResHacker oder so die ID rausbekommen falls das geht. Das Handle des fensters kann ich ja problemlos mit FindWindows machen, aber wie bekomme ich das handle des editfeldes?

Mir ist grade nochwas eingefallen...wenn man es nach deiner möglichkeit macht kann ich das auch mit fake keystrokes machen, wenn ich das edit feld sowieso fokusiert hab kann ich ja mit meinem programm auch simulieren das die tasten gedrückt werden, dann einmal tab das der button gewählt wird und einmal enter.

Aber noch was: ich will das auch evtl so machen: ich will das das programm des anderen erst gestartet wird wenn ichmein zeug ausgesucht habe, das man nur ein programm dauerhaft anhat...

MfG Hybrid666
  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 14:33 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