Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Fremde Anwendung ansteuern (https://www.delphipraxis.net/7080-fremde-anwendung-ansteuern.html)

Gast 1. Aug 2003 08:03


Fremde Anwendung ansteuern
 
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.

Alexander 1. Aug 2003 08:11

Re: Fremde Anwendung ansteuern
 
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...

Gast 1. Aug 2003 08:28

Re: Fremde Anwendung ansteuern
 
Danke Alexander :D ,

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.

Gast 1. Aug 2003 08:59

Re: Fremde Anwendung ansteuern
 
Schon ein erstes Problem :oops:

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.

APP 1. Aug 2003 09:25

Re: Fremde Anwendung ansteuern
 
Hallo,
suche mal nach Hier im Forum suchenFindWindow
und wähle z.B. http://www.delphipraxis.net/internal...ght=findwindow

Gast 2. Aug 2003 08:40

Re: Fremde Anwendung ansteuern
 
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.

Hansa 2. Aug 2003 09:01

Re: Fremde Anwendung ansteuern
 
Wie wärs denn mit
Delphi-Quellcode:
ShellExecute
? Vielleicht reicht das ja schon.

Gast 2. Aug 2003 10:18

Re: Fremde Anwendung ansteuern
 
Lieber Hansa :D

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.

Hansa 2. Aug 2003 10:26

Re: Fremde Anwendung ansteuern
 
Zitat:

Zitat von Paul Jr.
Lieber Hansa :D

... lass es gut sein...

Paul Jr., kennst Du das Sprichwort "Auch ein blindes Huhn findet mal ein Korn ?" :lol: Irgendwann hänge ich mit so was bestimmt auch fest, deswegen verfolge ich das. :mrgreen:

Christian Seehase 2. Aug 2003 15:14

Re: Fremde Anwendung ansteuern
 
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)) <> 'BUTTON' then 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 CAPTION' then 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;

Gast 4. Aug 2003 10:08

Re: Fremde Anwendung ansteuern
 
Hallo Christian :lol:

hervorragend!!! DANKE !!! 8)


Ich habe das was Du mir gegeben hast mit anderen Sachen die ich im Internet gefunden habe etwas vermischt. Und das sieht jetzt so aus:

Code:
unit Unit1;

interface

uses
   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
   StdCtrls, ShellApi;

type
   TForm1 = class(TForm)
      Button1: TButton;
      procedure Button1Click(Sender: TObject);
   private
      { Private-Deklarationen }
   public
      { Public-Deklarationen }
   end;

var
   Form1: TForm1;

implementation

{$R *.DFM}

FUNCTION EnumChildProc(Wnd: hWnd; SL: TStrings): BOOL; stdcall;
VAR
   szFull: array[0..MAX_PATH] of Char; //Buffer for window caption
BEGIN
   Result := Wnd <> 0;
   if Result then
   BEGIN
      GetWindowText(Wnd, szFull, SizeOf(szFull)); // put window text in buffer
      if (Pos(SL[0], StrPas(szFull)) > 0) and // Test for text
          (SL.IndexOfObject(TObject(Wnd)) < 0) then // Test for duplicate handles
         SL.AddObject(StrPas(szFull), TObject(Wnd)); // Add item to list
      EnumChildWindows(Wnd, @EnumChildProc, Longint(SL)); //Recurse into child windows
   END;
END;

function ClickButton(ParentWindow: Hwnd; ButtonCaption: string): Boolean;
var
   SL: TStringList;
   H: hWnd;
begin
   SL := TStringList.Create;
   try
      SL.AddObject(ButtonCaption, nil); // First item in list is text to find
      EnumChildWindows(ParentWindow, @EnumChildProc, Longint(SL));
      H := 0;
      case SL.Count of
         1: ShowMessage('Window text not found.');
         2: H := hWnd(SL.Objects[1]);
         else
            ShowMessage('Ambiguous text detected.');
      end;
   finally
      SL.Free;
   end;
   Result := H <> 0;
   if Result then
      PostMessage(H, BM_CLICK, 0, 0);
end;

procedure TForm1.Button1Click(Sender: TObject);

var
   hWindow : DWORD;
   hButton : DWORD;

begin
   // Programm starten
   ShellExecute(0,'open','d:\Test\Test.exe',nil,nil,SW_NORMAL);
   // und auf das Handle des Fensters warten
   hWindow := 0;
   Sleep(1000);
   while hWindow = 0 do hWindow := FindWindow(nil,'TESTFORM');
   // Die Child Windows durchgehen
   hButton := 0;
   IF hWindow <> 0 THEN
      ClickButton(hWindow,'TESTBUTTON');
END;

end.
Im Hintergrund liegt ein Programm Test.Exe (auf d:\TEST\Test.exe) und wird hier aufgerufen. Anhand einer Caption von Tbutton wird der Tbutton lokalisiert und OnClick Ereignis ausgelöst.

Nun jetzt habe ich auf diesen Test-Formular noch eine Komponente TEdit hingelegt.

Jetzt muss ich also auch die TEdit Komponente mit einem Text versehen (natürlich aus diesem Program hier her).

Kann jemand diese hier oben genannte SourcCode vervollständigen... so das z.B. in dem TEdit dann ein Text ’HURRRA’ erscheint?

Gruß

Paul Jr.

Alexander 4. Aug 2003 11:25

Re: Fremde Anwendung ansteuern
 
Kuck dir mal im MSDN WM_SETTEXT Message an.
Nachtrag:
Zitat:

Zitat von MSDN
An application sends a WM_SETTEXT message to set the text of a window.

Außerdem ein TEdit ist halt ein EDIT und kein BUTTON, sonst sollte der Quelltext so ungefähr der gleiche sein (habe ihn mir nicht so genau angekuckt.)

Gast 4. Aug 2003 11:45

Re: Fremde Anwendung ansteuern
 
Hallo Alexander 8)

ich habe schon vorher geschrieben, dass ich hier überhaupt keine Ahnung habe...

also entweder wird jemand von der Systemprofis mir weiter helfen (dessen bin ich mir irgendwie sicher) oder komme nicht weiter.

Mit links kann ich mich jetzt nicht herumschlagen... da ich (noch) nicht die Abläufe die hier stattfinden richtig verstehe...

Also BITTE keine Links... :freak:

Gruß

Paul Jr.

davtix 4. Aug 2003 16:49

Re: Fremde Anwendung ansteuern
 
wenn du den code zum ausfüllen des editfeld hast dann schreibst du ihn doch hier rein??? bitte denn da hänge ich auch gerade fest und ich brauch das unbedingt... danke im vorraus. dAb :angle:

Assarbad 4. Aug 2003 17:42

Re: Fremde Anwendung ansteuern
 
Tragisch tragisch ....
Ich sage nur: Anwendungen, die gesteuert werden wollen, bieten eine OLE/COM Interface ... bei anderen sollte man es tunlichst vermeiden. Auch wenn Programme ala "WinAMP Remote Control" ja immer beliebter werden.

Sowas sollte nur fuer Studienzwecke (Debugging, RE etc) oder in Ausnahmefaellen benutzt werden.

Gast 4. Aug 2003 18:59

Re: Fremde Anwendung ansteuern
 
Hallo Assarbad 8) ,

als ich noch Datenbank-Moderator in dem heute schon legenderem Delphi-Forum war wurde mir mal dein Name ins Ohr geflüstert.

Schon damals wurdest Du als einer der besten System-Programmierer :coder: (wenn ich mich richtig erinnere) schlecht hin gehandelt... zugegeben nicht immer mit dem leichtestem Umgang...was mich überhaupt nicht gestört hat...

Schade das Du heute für mich nur ein Hinweis auf ein Studiengang hast...da

mein Herz schlug schneller als ich zuerst Dein Name in diesem Beitrag sah...

schade...

Vielleicht sind inzwischen auch neue Talente auf diesem Gebiet geboren, die diese Angelegenheit nicht so streng sehen wie Du... und mir weiter helfen würden...

Herzliche Grüße :D

Paul Jr.

Assarbad 4. Aug 2003 19:14

Re: Fremde Anwendung ansteuern
 
Hehe, ich bin geschmeichelt. Aber es war nur als Hinweis gedacht. Die Beispiele die dir oben geboten wurden, entsprechen doch eigentlich dem was du machen willst, oder hab ich da was verpasst?

Deinen Namen kenne ich uebr auch noch aus dem alten DF.

Gast 5. Aug 2003 07:21

Re: Fremde Anwendung ansteuern
 
Hallo Davtix 8)

natürlich zeige hier alles... sobald mir jemand hilft

Gruß

Paul Jr.

davtix 5. Aug 2003 10:26

Re: Fremde Anwendung ansteuern
 
das beruht auf gegenseitigkeit...
mal ein tip:
vieleicht kannst du was mit dem quellcode von en_dis_able.exe (von assarbad)
was anfangen. mit dem prog kann mann fremde formen min, max, schliessen, und zeigen und verstecken(visible:=true false) und der liest auch die button.caption edit.text usw.
das hat ja fast mit dem zu tun nur ne kleine veränderung mit WM_SETTEXT
und das soll funzen... so sagt ein gemeiner kumpel der auch der meinung ist das jeder selbst seinen hirn kurz vor einer explosion bringen soll 'dann lernt mann besser, wenn mann gerade vorm kollaps die lösung bekommt'.
jedoch wer nicht weiss wies funzt kann sich kaum einen klugen kopf drüber machen um evtl. was neues zu .... :coder: **dAb**

Luckie 5. Aug 2003 10:34

Re: Fremde Anwendung ansteuern
 
So schwer kann das doch nicht sein.
Delphi-Quellcode:
var
  s: String;
begin
  s := 'Hello World';
  SendMessage(hEdit, WM_SETTETXT, 0, Integer(@s[1]));
Trotzdessen, schließe ich mich Assarbad an.

Gast 5. Aug 2003 11:01

Re: Fremde Anwendung ansteuern
 
Hallo Luckie,

ich verstehe das irgendwie nicht.

Ich weiß noch Zeiten wo ich Datenbank-Anfänger Schritt für Schritt Wochenlang begleitet und betreut habe... bis sie am Ziel waren.

Wie ich sehe, die Zeiten haben sich geändert... zumindest hier in diesem Forum.
Das habe ich deutlich bei meinen Geometrie-Fragen zu spüren bekommen und hier wiederholt sich das wider.

Ich weiß ehrlich nicht was soll ich darüber Denken...

Du hast jetzt bestimmt „auf Lager“ eine clevere Riposte die mir schon zeigen wird... was kann ich hier erwarten... langsam habe ich echt genug... hier um Hilfe zu betteln.

Wenn ich schreibe das ich übers dieses Thema keine Ahnung habe... sollte es genügen!!!

Es waren auch noch Zeiten... wo Du Dich auch viel stärker eingesetzt hast...so wie ich...damals

Ich kann hier nicht mehr so agieren wie es schon einmal war... diese Grunde sind dir bekannt...Viele Leute verdanken mir schon einiges (auch manche sind hier anzutreffen)... aber das hier ist wirklich bitter

Gruß

Paul Jr.

Alexander 5. Aug 2003 11:07

Re: Fremde Anwendung ansteuern
 
Was hast du denn?
Funktioniert es jetzt?

Luckie 6. Aug 2003 03:03

Re: Fremde Anwendung ansteuern
 
Zitat:

Zitat von Paul Jr.
Hallo Luckie,

ich verstehe das irgendwie nicht.

Ich auch nicht, du stellst dich an, als ob du zum erstenmal vor Delphi sitzt.
Zitat:

Ich weiß noch Zeiten wo ich Datenbank-Anfänger Schritt für Schritt Wochenlang begleitet und betreut habe... bis sie am Ziel waren.
Das ist deine Art zu helfen. Aber sobald sie das selbe Problem in grün haben fangen sie wieder an zu fragen. das ist doch keine Lösung. Wie heißt das Sprichtwort: "Gib einen Hungernden einen Fisch und er hat für einen Tag zu essen. Zeig ihm, wie man angelt und er ist sein Leben lang satt."
Zitat:

Wie ich sehe, die Zeiten haben sich geändert... zumindest hier in diesem Forum.
Das habe ich deutlich bei meinen Geometrie-Fragen zu spüren bekommen und hier wiederholt sich das wider.
Das mag dir so vorkommen, dass sich die Zeiten geändert haben.
Zitat:

Du hast jetzt bestimmt „auf Lager“ eine clevere Riposte die mir schon zeigen wird... was kann ich hier erwarten... langsam habe ich echt genug... hier um Hilfe zu betteln.
Na dann kuck mal, ob ich da was auf Lager habe. Richtig "betteln" solltest du nicht nötig haben. Du programmierst lange genug, dass du mit etwas Hilfe selbst in der Lage sein solltest zum Ziel zu kommen.
Zitat:

Wenn ich schreibe das ich übers dieses Thema keine Ahnung habe... sollte es genügen!!!
Dann mach was, dass sich das ändert.
Zitat:

Es waren auch noch Zeiten... wo Du Dich auch viel stärker eingesetzt hast...so wie ich...damals
Kann sein, aber ich habe mich mittlerweile für eien andere Art der Hilfe entschieden, die für mich auch mehr Sinn macht. Und ich bin immer noch gerne bereit zu helfen, aber nur wenn ich sehe, dass der gegenüber auch bereit ist selber was zu tun.

Es stellt sich doch so dar: Du hast ein Problem und erwartest Hilfe hier im Forum. Und ich, und auch andere, sind auch gerne bereit dir zu helfen. Aber ich, für die anderen kann ich nicht sprechen, erwarte auch etwas Eigeninitiative. Die ich bei dir im Moment gänzlich vermisse. Und da vergeht einem die Lust zu helfen. Du präsentierst hier uns dein Probelm und sagst: "Macht mal." So nicht - zu mindest nicht mit mir. Wenn du willst, dass dir einer das Programm schreibt, dann sagt das. Poste in der Job-Börse oder mach eine Ausschreibung auf deiner HP und gegen eine angemessene Bezahlung wird sich jemand finden, der dir das Programm schreibt.

Zurück zum Problem:
Was verstehst du da nicht? hEdit ist das Handle des Edits, in s steht die Zeichenkette drin, die in das Edit geschrieben werden soll und WM_SETTEXT ist eine Window-Nachricht, die mit SendMessage an Windows bzw. an das Edit gesendet wird, um die Zeichenkette in das Edit zu kopieren. Die API SendMessage erwartet noch zwei zusäztliche Parameter lParam und wParam. Wobei der wParam nicht genutzt wird und 0 ist. Im lParam (ein Integer) steht die Adresse im Speicher zu der Zeichenkette, deswegen auch @s[1] und der Cast nach Integer. Alles was dir jetzt noch zu tun bleibt ist das Handle des Edit rauszubekommen. Da du ja schon das Handle zu dem utton schon hast, dachte ich du seist in der L<ge auch an das Handle zu dem Edit zu kommen. Dies war wohl ein Trugschluß, der darauß resultiert, dass du den Code von sakura in keinster Weise verstanden hast. Und das zeigt mir, dass du dich mit deinem Problem bzw. dessen Lösung nicht auseinander gesetzt hast.
Mehr kann und will ich dir nicht helfen. Nur noch so viel: Kuck mal im Forum nach FindWindow, FindWindowEx, EnumWindows, EnumChildWindows. Da solltest du genug Beispiele, auch fertigen Code, finde, wie man die Handles von bestimmten Controls findet. Und mit etwas Eigeninitiative und etwas investierter Zeit, sollte es dir möglich sein dein Problem zu lösen.

ketraun 6. Aug 2003 04:51

Re: Fremde Anwendung ansteuern
 
Hi,
geht sowas auch übers Netzwerk?
Wenn ja wie?
ketraun

Gast 6. Aug 2003 07:27

Re: Fremde Anwendung ansteuern
 
Hallo Luckie,

natürlich hast Du recht.

Bald wirst Du mit deiner didaktischen einwandfreien Antworten... die entweder aus Belehrungen oder Links bestehen die stolze

10.000

Zahl der Beiträge erreichen

Damit wirst Du zu MEGA-Moderator... :lol:

Was Dir auch herzlichst wünscht...Dein

Paul Jr.

Gast 6. Aug 2003 08:41

Re: Fremde Anwendung ansteuern
 
Hallo Davtix 8)

Es ist schon merkwürdig, dass für angeblich so leichtes Problem noch keine Antwort vorhanden ist...

Die Anzahl der Aufrufe in diesem Thema zeigt, dass viele user sich für solche infantile Probleme wie das hier... interessieren...

Zeige mir bitte ein Link auf die Assarbad SourceCode... ich werde am Wochenende probieren es zu knacken... es seitdem findet sich hier doch jemand, dann anhand meiner schon lauffähiger Source (die ich hier schon gepostet habe) uns weiter hilft.

Und im übrigen, falls ich etwas weiß werde ich Dir per eMail eine komplette Lösung posten...da hier wäre es unverantwortlich und didaktisch FALSCH...(sonnst würden die Anderen User NICHTS lernen)...

Solltest Du schneller dieses Problem lösen als ich erwarte ich das Gleich von Dir.

Gruß :D

Paul Jr.

_________

Daniel 6. Aug 2003 09:02

Re: Fremde Anwendung ansteuern
 
Hallo Leute,

könntest Ihr bitte allesamt mal wieder mit den Füßen auf den Boden zurückkehren? Und zwar jetzt.
Danke. :wink:


@PaulJr: Eine Sache hat sich hier in der DP seit früher nicht geändert: Niemand hat ein verbrieftes Recht auf fertige Lösungen.
Dennoch bist Du ja von Deiner Lösung nicht weit entfernt. Dein letztes Problem besteht doch im Auffinden des Handles für das Editfeld. Mit dem Code von Christian grast Du doch alle Controls dieses Fensters ab und wirst innerhalb dieser Schleife früher oder später auch das Editfeld aufgelistet bekommen. Wenn in Deinem Fall der Typ des Feldes zur eindeutigen Identifizierung ausreicht, dann hast Du bereits gewonnen.
Delphi-Quellcode:
...
// Klassenname konnte nicht ausgelesen werden, dann fertig
if GetClassName(AhWindow,pCaption,255) = 0 then exit;
// Ist kein Button, dann fertig
if trim(UpperCase(pCaption)) <> 'BUTTON' then exit;
...
Die letzte Zeile dieses Blockes must Du abändern. Ich bin von Natur aus neugierung und würde erstmal per ShowMessage die Klassen aller gefundenen Controls anzeigen lassen (oder sonst wie, aber ShowMessage geht so schön schnell - wenn es schief läuft, hat man eben eine ganze Menge zu klicken :wink:).

Wenn Du also siehst, dass Dein Editfeld dabei ist und mit seiner Klasse einzig ist, dann musst Du eben eine entsprechende IF-Konstruktion basteln, die diese Klasse berücksichtigt. Die Routine liefert dann das Handle zurück und mit Luckies Code von oben kannst Du dann per API den Text setzen.

Gast 6. Aug 2003 09:19

Re: Fremde Anwendung ansteuern
 
Hallo Daniel, 8)

endlich fange etwas zu verstehen... mit der Klasse kann ich schon etwas anfangen...Danke...

Gruß

Paul Jr.

Luckie 6. Aug 2003 12:35

Re: Fremde Anwendung ansteuern
 
Hier mit will ich mich bei meiner etwas rüden Art, wie ich mit PaulJr. umgesprungen bin, öffentlich entschuldigen. Es tut mir leid. Ich kann mir leider nicht erklären, wie das passieren konnte.
Ich bin nach einem Anstoß einer dritten Person noch mal in mich gegangen und sehe ein, dass ich etwas sehr übertrieben und gereizt reagiert habe. Auch mußte ich festellen, dass PaulJr wohl recht hat. So wie ich zur Zeit antworte kann es bei mir nicht weitergehen. Ich gelobe in Zukunft Besserung. Gerade ein Moderator sollte in solchen Situationen etwas feinfühliger reagieren.
Im Nachhinein sehe ich mein Posting mit tiefen Bedauern.

Michael Puff.

Gast 6. Aug 2003 18:47

Re: Fremde Anwendung ansteuern
 
Hallo Luckie, :D


Ich muss ehrlich sagen, dass Deine Antwort jetzt... hat mich sehr angenehm überrascht.

Ich sehe schon wieder wie den alten Luckie langsam aufwache, der immer als erste den anderen zu helfen eilte.

Wir waren mal ein unglaublich starken Team... jeder in seinem Bereich.

Und plötzlich, wie aus dem heiterem Himmel wurden wir beide und noch ein paar andere Top-Leute, als abtrünnige bezeichnet worden (ich sogar mehrmals verband... und schon wieder Eingestellt – Tragikomödie) ...und unsere verdienste waren plötzlich nichts mehr Wert...Das Forum, unser Zuhause brach zusammen und somit auch ALLE unsere Beiträge die zum Teil sehr wertvoll und unglaublich umfangreich waren... verschwanden für IMMER.

Du bist jünger als ich und hast Dich noch ein mall motivieren lassen... ich jedoch, der ganze 2 Jahre dort alles gegeben hatte und Teilweise gleichzeitig für 3 Sparten (Datenbanken / Datenbanke –MySQL in dem noch anderem http-Forum und Ausbildung-Sparte) als Moderator verantwortlich war...kann leider nicht mehr so agieren wie es das mal war...

Dennoch, standen wir damals nach dem Zusammenbruch...vor der Wahl, da viele neue Delphi Foren wollten sofort der alten Platz besetzten, für welche Forum wollen wir uns entscheiden.

Wir haben uns für diese Forum hier entschieden...obwohl damals würden wir überall und SOFORT als Moderatoren eingestellt... so gut waren wir.
Ich habe, und Du bestimmt auch...damals ein paar abwerbungs- Angebote gekriegt...man blieb aber hier beim Daniel.

Daniel als Administrator ist eben das was wir uns damals gewünscht hätten...ein toller Mensch mit hoher Sensibilität und persönlichen Kultur.

Ich war hier von Anfang an und half dies hier mit vielen anderen tollen Moderatoren aufzubauen. Allerdings standen wir hier vor dem nichts.
Ich merkte ganz schnell... nach ein paar Monaten, dass mir ganz einfach die Kräfte dazu fehlen und habe mich leider aus dem aktivem Bereich hier zurückgezogen.

Also den alten Zeiten wegen... verzeih mir, wenn ich manchmal vielleicht nicht so komme wie ich natürlich kommen könnte. Und Du Luckie...womöglich brauchst Du eine kurze Pause, da man muss auch mal abschalten...

Wie auch immer...das war nur zur Erinnerung woher kommen wir...

Auch ich möchte mich bei Dir entschuldigen... und hoffe, dass wir wieder Internet-Freunde bleiben... da wir schon so viel zusammen erlebt haben...

Viele Grüße 8)

Paul Jr.

Luckie 6. Aug 2003 18:52

Re: Fremde Anwendung ansteuern
 
:P und noch das dazu: :cheers: und auf weitere gute Zusammenarbeit beim :coder:

Assarbad 6. Aug 2003 19:30

Re: Fremde Anwendung ansteuern
 
Wo wir schonmal beim Thema sind, wo sind eigentlich die ganzen Beiträge hin? Hieß es nicht damals, die Übergabe erfolge mit allen Beiträgen? Oder sind die noch auf der gewohnten Domain (also im DF) zu finden?

@Paul Jr: Zieh dir mal das PSDK, vielleicht kannst du dann mehr damit anfangen, wenn dir die Leute Beispiele für den Umgang mit APIs geben. Wenn du willst schicke ich es dir auch gern auf CD zu (zB wenn du zu wenig Bandbreite hast).
Da du dich nicht mehr geäußert hast, ich hoffe auch, daß du mir das nicht übel genommen hast. Aber Daniel hat da schon einen sehr guten Punkt angesprochen: "dass Dein Editfeld dabei ist und mit seiner Klasse einzig ist" ... und das kann man nicht garantieren, auf keinem System zu keiner Zeit. Daher auch meine (hoffentlich nicht zu forsche) "Absage" an dein Vorhaben ;) ... übrigens, wenn du mir danach plausibel gemacht hättest, daß du es unbedingt für was bestimmtes brauchst, hätte ich dir sogar ein komplettes Beispiel geschrieben. Meine Aussage galt nur insofern, daß diese Technik unzuverlässig und unsauber ist. Nix für "reelle" Produkte. Das gilt auch nach wie vor.

Auch von mir ein :cheers: zum :coder:

Alexander 7. Aug 2003 10:16

Re: Fremde Anwendung ansteuern
 
Zitat:

Wo wir schonmal beim Thema sind, wo sind eigentlich die ganzen Beiträge hin? Hieß es nicht damals, die Übergabe erfolge mit allen Beiträgen? Oder sind die noch auf der gewohnten Domain (also im DF) zu finden?
Die sind weder im DF noch hier ;-), die DP ist ja so weit ich weiß auch nciht der offizielle Nachfolger des alten DF's.

@Paul Natürlich von mir auch ein "Entschuldigung".
Aber hast du jetzt dein Problem selber lösen können oder nicht?

Alexander 7. Aug 2003 10:28

Re: Fremde Anwendung ansteuern
 
auch auf die "Gefahr" hin, dass du es schon geschafft hast, habe ich mal deine funktion ein wenig abgeändert, so sollte sie zum Ändern des Edit-Feld funktionieren..Habe es allerdings nicht getestet:
Delphi-Quellcode:
function ChangeText(ParentWindow: Hwnd; EditCaption: string): Boolean;
var
   SL: TStringList;
   H : hWnd;
   s : String;
begin
   SL := TStringList.Create;
   try
      SL.AddObject(EditCaption, nil); // First item in list is text to find
      EnumChildWindows(ParentWindow, @EnumChildProc, Longint(SL));
      H := 0;
      case SL.Count of
         1: ShowMessage('Window text not found.');
         2: H := hWnd(SL.Objects[1]);
         else
            ShowMessage('Ambiguous text detected.');
      end;
   finally
      SL.Free;
   end;
   Result := H <> 0;
   s := 'Edit-Caption';
   if Result then
     SendMessage(h, WM_SETTEXT, 0, LongInt(s));
end;
Aufruf
Delphi-Quellcode:
   IF hWindow <> 0 THEN
      ChangeText(hWindow,'Edit1');

Gast 7. Aug 2003 11:12

Re: Fremde Anwendung ansteuern
 
Hallo Alexander, 8)

erst jetzt sehe ich, dass Du etwas für mich geschrieben hast... DANKE... nun jetzt habe ich keine Zeit es nachzuprüfen... werde etwas später machen...

Inzwischen aber habe ich schon ein kleines Posting für Assarbad vorbereiten.. lies es durch...
und sage, ob das was Du geschrieben hast den Anforderungen hier entspricht...

Danke und viele Grüße :D

Paul Jr.
__________________________________________________ _______
__________________________________________________ _______

Hallo Assarbad, 8)

Danke für Deine nette Worte und Dein Angebot mir eine CD zuzuschicken.
Das allerdings (CD) wäre für mich viel zu viel... da ich nur ein kleines Beispiel brauche. Ich denke, dass mit so einem Beispiel würde ich schon in dieser Materie mehr oder weniger (bei meinen weiteren Entwicklung) zu recht kommen.

Dies ist eben der Knackpunkt...wie spreche ich solche Komponenten an die wie hier keine Caption besitzen. Mit dem TButton war es einfach.

Ich habe im Internet nichts vergleichbares gefunden... und wenn schon, dann sind die Beispiele für mich zu komplex.
Anders gesagt, Du siehst wie viele Leute schon hier in dieses Thema ein Blick geworfen haben, so ein Beispiel könnte man ohne weiteres in FAQ aufnehmen.

Falls Du Dich doch entschlossen solltest so ein Beispiel zu schreiben müsste das natürlich weder heute noch morgen geschehen... aber schon in einer absehbaren Zeitspanne...(z.B. innerhalb nächsten Wochen wenn Dir langweilig wäre).
Somit könnte ich so was in aller Ruhe studieren... und sehen ob ich es verstehe...

_________________________________
Hier noch einmal die Ausgangsposition:

1.)
Ich habe eine Anwendung TEST.EXE die NUR aus einem Formular besteht. Die Caption des
Formulars ist : ’FormTest’

2.)
Auf diesem Formular befinden sich NUR zwei TEdit Komponenten
___________________
Man startet die Anwendung TEST.EXE und erscheint ein Formular mit 2 leeren Edit- Felder
So...

Jetzt starte ich meine Anwendung, die nichts anderes machen sollte, als diese 2 Edit-Felder
mit unterschiedlichen Texten zu bestücken...


Assarbad, natürlich wenn Du jetzt zeitlich verhindert bist geht das natürlich in Ordnung... bloß sage es einfach... ich werde dann nicht beleidigt oder so was, he, he...


Viele Grüße :D

Paul Jr.

Alexander 7. Aug 2003 12:27

Re: Fremde Anwendung ansteuern
 
Hallo Paul,
eigentlich passt doch mein Source, du musst dann doch nur statt
Delphi-Quellcode:
IF hWindow <> 0 THEN
      ChangeText(hWindow,'Edit1');
das
Delphi-Quellcode:
IF hWindow <> 0 THEN
      ChangeText(hWindow,'');
schreiben, oder ist da noch ein Fehler drin.

Gast 7. Aug 2003 12:43

Re: Fremde Anwendung ansteuern
 
Hallo Alexander, 8)

ich kriege ein Fehler: Window text not found.

Sollte aber hier:

ChangeText(hWindow, 'Edit1');

'Edit1' für den Name der Edit-Komponente stehen... ist das natürlich
sofort unbrauchbar...da ich den Namen nicht kenne (natürlich kenne ich sie schon...aber es geht hier um etwas mehr).

Gruß und Danke :D

Paul Jr.

Alexander 7. Aug 2003 13:01

Re: Fremde Anwendung ansteuern
 
Das sollte eigentlich die Caption sein, aber ich habe das auch nciht getestet und kann es derzeit auch nciht testen, da ich an diesem PC kein Delphi habe :sad:

Gast 7. Aug 2003 13:06

Re: Fremde Anwendung ansteuern
 
Hallo Alexander, 8)

da muss ich Dich leider enttäuschen...TEdit-Komponente hat keine Caption- Eigenschaft...

Gruß

Paul Jr.

Alexander 7. Aug 2003 13:15

Re: Fremde Anwendung ansteuern
 
Jupp meinte auhc die TEXT-Eigenschaft ;-)
Ich habe den alten Code von dir und Christian genommen und nur ein wenig umgearbeitet....und da habe ich das wohl vergessen...


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:47 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz