AGB  ·  Datenschutz  ·  Impressum  







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

Fremdes C# Steuern

Ein Thema von achi 3.0 · begonnen am 25. Jul 2013 · letzter Beitrag vom 29. Jul 2013
Antwort Antwort
Seite 1 von 3  1 23      
achi 3.0

Registriert seit: 7. Nov 2008
Ort: Köln
32 Beiträge
 
Delphi 5 Professional
 
#1

Fremdes C# Steuern

  Alt 25. Jul 2013, 11:37
Hallo,

ich muss an eine Steuerung eine Datei senden. Hierfür gibt es ein C# Programm. Nun würde ich das ganze gerne über Delphi machen. Das Programm starte ich wie folgt:


Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);

begin

ShellExecute(Handle, nil, 'c:\Programme\Borland\Delphi5\Projects\Http\HTTPCSharp\bin\Debug\HttpCSharp.exe', nil, nil, SW_SHOW); // Um im Hintergrund zu laufen machen wir SW_HIDE

end;


Das Programm hat ein paar Edits, eine Combobox und ein paar Buttons. Jetzt würde ich gerne einige dieser Komponenten mit Daten versehen und dann einen Button betätigen. Alles über Delphi. Anbei ein Bild des Programms.

HTTP Send File.jpg

Habt ihr eine Idee wie ich das machen könnte???

Gruß Achi
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Fremdes C# Steuern

  Alt 25. Jul 2013, 11:44
Und wieso nicht gleich direkt selbst über die TCP/IP-Schnittstelle der Steuerung?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Der schöne Günther
Online

Registriert seit: 6. Mär 2013
6.156 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Fremdes C# Steuern

  Alt 25. Jul 2013, 11:47
Also das Delphi-Programm soll
  • das externe Programm unsichtbar starten
  • Edit-Felder des Programms finden
  • dort Werte eintragen
  • einen Button finden
  • diesen Button drücken
  • das Programm irgendwann auch wieder beenden

richtig?
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.639 Beiträge
 
#4

AW: Fremdes C# Steuern

  Alt 25. Jul 2013, 11:52
Das GUI zu steuern wäre die letzte Idee die mir einfallen würde.

Ich würde mir das Ding mal mit dotPeek im Detail angucken. Vermutlich gibts da ne einfache Klasse die man mit den Daten direkt ansteuern kann. Die wenigsten Tools sind obfuskiert so das das vermutlich sehr gut einsehbar ist.

Wenn ja ist es vermutlich deutlich einfacher, Dir dazu ein kleines Command-Line Interface zu bauen. Schnapp Dir Prism (falls Du das hast) oder, wenns Object Pascal sein soll, den kostenlosen Oxygene Command Line Compiler (http://www.remobjects.com/oxygene, unten rechts) oder freilich das Visual Studio Express. Mache ein kleines .NET Projekt, füge eine Referenz auf das C#-Programm hinzu, und dann kannst Du die Klassen dort direkt anprogrammieren.

Du schreibst dann kurz ein Tool das die nötigen Parameter über die Kommandozeile annimmt, die Klasse dort drin genau so ansteuert wie das GUI, und die Rückgabe entsprechend formatiert. Dieses Commandline-Tool rufst Du dann aus Deinem Programm heraus aus. Dann hast Du kein gefrickel mit GUI fernsteuern etc.

Alternativ kannst Du mit reverse P/Invoke das Ding auch direkt aus Deinem Prozess heraus aufrufen (oder mit Hydra).
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
achi 3.0

Registriert seit: 7. Nov 2008
Ort: Köln
32 Beiträge
 
Delphi 5 Professional
 
#5

AW: Fremdes C# Steuern

  Alt 25. Jul 2013, 11:55
@ Der schöne Günther
Jaist richtig.


Ich glaube nicht das ich einfach per TCP/IP etwas an die Steuerung senden kann. Hier eine Beschreibung was das C# Programm macht.
AN.MPIEC.03.pdf

Es verwendet irgendein Yaskawa.IEC61131.RMI.Modules. Ich weiß nicht was ich damit anfangen soll.

Geändert von achi 3.0 (25. Jul 2013 um 12:01 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.639 Beiträge
 
#6

AW: Fremdes C# Steuern

  Alt 25. Jul 2013, 12:06
Laut der Doku ist das ein einfaches HTTP POST. Das müsstest Du mit Indy problemlos nachbauen können.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#7

AW: Fremdes C# Steuern

  Alt 25. Jul 2013, 12:09
Die Anforderung ist ziemlich schwammig und dein Lösungsversuch sehr unprofessionell.

Arbeite Dich in die API ein und steuere die API direkt von Delphi aus an. Meistens ist so eine API auch mit Win32-DLLs ansprechbar. Wenn nicht, wenn also nur C#-Klassen vorhanden sind, dann verwende z.B. unmanaged exports

Das ist doch sogar eine Beispielanwendung, da wirst du doch wohl den Aufruf der Methode Yaskawa.IEC61131.RMI.Modules namespace.HttpUtility.CreatePOSTRequest finden und einen kleinen Wrapper drumwickeln können.

Pillepalle.

EDIT: @Phoenix: Das wäre die Notlösung. Ich würde immer versuchen, die Hersteller-API zu verwenden.
  Mit Zitat antworten Zitat
achi 3.0

Registriert seit: 7. Nov 2008
Ort: Köln
32 Beiträge
 
Delphi 5 Professional
 
#8

AW: Fremdes C# Steuern

  Alt 25. Jul 2013, 12:13
Es wird doch auch eine DLL verwendet. Das wird doch seinen Grund haben. Ich werde es mal mit IdHTTP. Nur ist die frage an welche URL sende ich die Daten

IP 192.168.1.1
Location soll /flash/user/data sein.
Datei müsste in ein multipart/form Data stream gepackt werden

Hatte das mal mit ner FastNet komponente versucht und bin gescheitert.


@Furtbichler
Pillepalle sagt der experte leider bin ich keiner?

Gruß

Geändert von achi 3.0 (25. Jul 2013 um 12:27 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.639 Beiträge
 
#9

AW: Fremdes C# Steuern

  Alt 25. Jul 2013, 12:20
Es wird doch auch eine DLL verwendet. Das wird doch seinen Grund haben.
Ja: Bequemlichkeit. Damit .NET Entwickler die ohne das GUI-Zeug direkt weiterverwenden können.

In der von Dir verlinkten Doku auf seite 6 steht drin, das in dem Namespace Yaskawa.IEC61131.RMI.Modules eine Klasse HttpUtility ist, und was die genau macht.

Schau Dir doch diese Assembly mal mit dem Tool dotPeek an und schau, was die macht. Die erzeugt vermutlich nur einen HttpRequest, setzt den auf Post, hängt dort das File dran und setzt den Pfad korrekt.

Das ganze ist vermutlich deutlich schneller und einfacher selber gebaut als sich hier mit Delphi / .NET Interop zu versuchen. Das ist gleich mal einige Größenordnungen komplexer. Das würde ich nicht anfangen wenn einfaches HTTP POST eines Files schon zu kompliziert ist.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org

Geändert von Phoenix (25. Jul 2013 um 12:20 Uhr) Grund: Formatierung angepasst.
  Mit Zitat antworten Zitat
Klaus01
Online

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: Fremdes C# Steuern

  Alt 25. Jul 2013, 12:21
Hallo,

du kannst doch den TCP Traffic mit z.B. Wireshark tracen wenn Du das binary benutzt.
Es sollte sich dann doch feststellen lassen, welches Protokol verwendet wird und wo Daten abgelegt werden.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 16:16 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