AGB  ·  Datenschutz  ·  Impressum  







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

Fremde Anwendung ansteuern

Ein Thema von Gast · begonnen am 1. Aug 2003 · letzter Beitrag vom 7. Aug 2003
Antwort Antwort
Seite 1 von 5  1 23     Letzte »    
Gast
(Gast)

n/a Beiträge
 
#1

Fremde Anwendung ansteuern

  Alt 1. Aug 2003, 09:03
Hallo 8)

ich muss aus meiner Anwendung eine (ganz einfache) andere fremde Anwendung starten
(nur ein Formular mit einem Edit-Feld und einem Button.
Ich muss in das Edit dann automatisch was schreiben und den OnClick des Buttons
auslösen.

Geht das überhaupt?

Gruß

Paul Jr.
  Mit Zitat antworten Zitat
Alexander

Registriert seit: 28. Aug 2002
Ort: Oldenburg
3.513 Beiträge
 
Turbo Delphi für .NET
 
#2

Re: Fremde Anwendung ansteuern

  Alt 1. Aug 2003, 09:11
Klar geht das.
Zum Starten kannst du Shellexecute nehmen oder CreateProcess, siehe dazu auch die Code-Library.
Zum Steuern selber kannst du dir ja mal das hier ankucken:
http://www.delphipraxis.net/internal...fremder+button
Für's edit kannst du ja mal selber suchen
Das wurde schon einige mal hier besprochen...
Alexander
  Mit Zitat antworten Zitat
Gast
(Gast)

n/a Beiträge
 
#3

Re: Fremde Anwendung ansteuern

  Alt 1. Aug 2003, 09:28
Danke Alexander ,

ich werde am Wochenende ausprobieren ob ich mit dem Problem irgendwie
zu Recht komme.
Falls nicht melde ich mich nächste Woche noch einmal zur Wort

Gruß

Paul Jr.
  Mit Zitat antworten Zitat
Gast
(Gast)

n/a Beiträge
 
#4

Re: Fremde Anwendung ansteuern

  Alt 1. Aug 2003, 09:59
Schon ein erstes Problem

wie bekomme ich die Handle der Fremder Anwendung um diese dann
z.B. an solche Funktion:

function ClickButton(ParentWindow: Hwnd; ButtonCaption: string): Boolean;

weiter geben?

Gruß

Paul Jr.
  Mit Zitat antworten Zitat
Benutzerbild von APP
APP

Registriert seit: 24. Feb 2003
Ort: Graz (A)
705 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Fremde Anwendung ansteuern

  Alt 1. Aug 2003, 10:25
Hallo,
suche mal nach Hier im Forum suchenFindWindow
und wähle z.B. http://www.delphipraxis.net/internal...ght=findwindow
Armin P. Pressler

BEGIN
...real programmers are using C/C++ - smart developers Delphi;
END;
  Mit Zitat antworten Zitat
Gast
(Gast)

n/a Beiträge
 
#6

Re: Fremde Anwendung ansteuern

  Alt 2. Aug 2003, 09:40
Hallo APP und andere System Profis 8)

Wie ich sehe hier gibt’s absolute Profis in diesem für mich ganz neuem Bereich.

Ich bräuchte nur den Übergang zwischen:

1.) Ein fremder Programm automatisch öffnen
2.) Seine Handle dann herausholen (ich kapiere es hier nicht)
3.) Diese auf die genannte Funktion übergeben

function ClickButton(ParentWindow: Hwnd; ButtonCaption: string): Boolean;

Es muss ein Program Test.Exe gestartet werden und ein Button angeklickt werden... sonnst nicht...Es dürfte für Euch ungefähr so schwer sein wie für mich z.B. ein berechnetes Feld zu sortieren (Datenbanken)

Wäre sehr Dankbar. Die Links sind zwar schön und gut... blicke ich aber nicht...

Gruß

Paul Jr.
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#7

Re: Fremde Anwendung ansteuern

  Alt 2. Aug 2003, 10:01
Wie wärs denn mit ShellExecute ? Vielleicht reicht das ja schon.
Gruß
Hansa
  Mit Zitat antworten Zitat
Gast
(Gast)

n/a Beiträge
 
#8

Re: Fremde Anwendung ansteuern

  Alt 2. Aug 2003, 11:18
Lieber Hansa

Du bist doch ein Datenbank-Profi so weit ich weiß... lass es gut sein...

Das ist natürlich nicht das was ich brauche...Wie man startet weiß ich schon...

Gruß

Paul Jr.
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#9

Re: Fremde Anwendung ansteuern

  Alt 2. Aug 2003, 11:26
Zitat von Paul Jr.:
Lieber Hansa

... lass es gut sein...
Paul Jr., kennst Du das Sprichwort "Auch ein blindes Huhn findet mal ein Korn ?" Irgendwann hänge ich mit so was bestimmt auch fest, deswegen verfolge ich das.
Gruß
Hansa
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Fremde Anwendung ansteuern

  Alt 2. Aug 2003, 16:14
Moin Paul jr.,

vielleicht kommst Du ja mit diesem Beispiel weiter.

Dieses Beispiel setzt voraus, dass der anzuklickende Button die Klasse BUTTON hat, und nicht beispielsweise TButton oder vielleicht noch ganz anders. Ausserdem gehe ich hier davon aus, dass das Hauptfenster auf jeden Fall gefunden werden kann, da ich keine Absicherung treffe, für den Fall, dass das Fenster nicht da ist (dann läuft die Routine in eine Endlosschleife!)

Das Beispiel ist ungetestet, sollte aber funktionieren.

Delphi-Quellcode:
// Für den Aufbau dieser Funktion siehe EnumChildProc im PSDK
// Der 1. Parameter ist das Handle des gerade gefundenen Child Window
// Der 2. Parameter kann beliebig verwendet werden.
// Ich übergebe hier die Adresse einer Variablen vom Typ DWORD, in der dann,
// wenn der Button gefunden wurde, dessen aktuelles Handle zurückgegeben wird

function FindButton(const AhWindow : DWORD;const ApButton : PDWORD) : longbool; stdcall;

var
  pCaption : PChar;
  dwLen : DWORD;

begin
  // True => Nächstes Child verarbeiten, soweit noch vorhanden
  Result := true;
  // Prüfen, ob das gefundenen Childwindow ein BUTTON ist
  pCaption := AllocMem(255);
  try
    // Klassenname konnte nicht ausgelesen werden, dann fertig
    if GetClassName(AhWindow,pCaption,255) = 0 then exit;
    // Ist kein Button, dann fertig
    if trim(UpperCase(pCaption)) <> 'BUTTONthen exit;
  finally
    FreeMem(pCaption,255);
  end;
  // Captionlänge auslesen, und entsprechend Speicher reservieren
  // (+1 wg. der terminierenden Null, da WM_GETTEXTLENGTH die Länge
  // ohne diese zurückgibt)
  dwLen := SendMessage(AhWindow,WM_GETTEXTLENGTH,0,0);
  pCaption := AllocMem(dwLen+1);
  try
    // Caption auslesen
    SendMessage(AhWindow,WM_GETTEXT,dwLen,lParam(pCaption));
    // ist es nicht die gesuchte Caption dann fertig
    if AnsiUpperCase(trim(pCaption)) <> 'BUTTON CAPTIONthen exit;
    // False => Nicht weitersuchen, da Button gefunden
    Result := false;
    // Das Handle des Button zurückgeben
    ApButton^ := AhWindow;
  finally
    FreeMem(pCaption,dwLen+1);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);

var
  hWindow : DWORD;
  hButton : DWORD;

begin
  // Programm starten
  ShellExecute(0,'open','Pfad der Exedatei',nil,nil,SW_NORMAL);
  // und auf das Handle des Fensters warten
  hWindow := 0;
  while hWindow = 0 do hWindow := FindWindow(nil,'Titel des zu suchenden Fensters');
  // Die Child Windows durchgehen
  hButton := 0;
  EnumChildWindows(hWindow,@FindButton,integer(@hButton));
  // Wenn hButton <> 0 ist, wurde der Button gefunden
  if hButton = 0 then exit;
  // und kann angeklickt werden
  SendMessage(hButton,BM_CLICK,0,0);
end;
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 5  1 23     Letzte »    


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 18:13 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