vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Zippen wie die Profis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

C# Ecke
C# im fremden Fenster Buttons betätigen 
Autor: Grauer Wolf
Datum: 02.12.15 07:38

Hallo, ich bekomme von einem Steuerungsprogramm ein Fenster, das Text und 3 Controls (Buttons) enthält. Ich kann zwar das Fenster Handle ermitteln, würde dann aber gerne situationsbedingt die Tasten betätigen. Wie kann man die Tasten dann betätigen? Ich könnte auch per sendkeys Tabs senden, aber wie weiß ich dann wieder, welche Taste gerade den Fokus hat, damit ich dann wieder per sendkeys ein Enter senden kann.

Ich hoffe, daß mich mal wieder jemand auf die Sprünge hilft.

Vielen Dank
Wolfgang

WME

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: C# im fremden Fenster Buttons betätigen 
Autor: Franki
Datum: 21.12.15 08:33

Hallo Wolfgang,

du weißt schon, dass das eigentlich nicht der richtige Weg ist um auf fremde Programme einwirken zu können.

Da sollte es Schnittstellen geben mit der man Daten / Interaktionen usw. austauschen kann.

Der ganze Quatsch mit Handle ermitteln, arbeiten mit Sendkeys usw. ist doch nur eine unzuverlässige Notlösung bei der Fehler mehr oder weniger vorprogrammiert sind. (und auch immer schon waren)

Wenn du mit TAB arbeiten möchtest, dann solltest du die TAB-Reihenfolge des Fremdprogramms kennen oder auslesen können. Aber das geht dann schief wenn sich das Fremdprogramm ändert.

Und in der Zukunft wird es mehr oder weniger garantiert unmöglich werden aus Sicherheitsgründen mit solchen Methoden zu arbeiten. Also stelle dich schon mal frühzeitig darauf ein, dass dieser Ansatz, selbst wenn er jetzt noch funktioniert, irgendwann nicht mehr zum Erfolg wird.

Also wenn du aus deinem Steuerungsprogramm Daten brauchts, dann sorge dafür, dass du diese auf einem normalen (und gewollten) Weg der Möglichkeiten des Datenaustausches bekommst so wie es inzwischen üblich ist.

Sag jetzt nicht, dass du auf das Fremdprogramm keinen Einfluß hast, denn dann ist deine Anwendung entweder schlecht koordiniert mit dem anderen Programm oder evtl. sogar illegal wenn das Fremdprogramm nichts davon weiß, dass da Daten abgegriffen werden sollen.

Gruß
Frank
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: C# im fremden Fenster Buttons betätigen 
Autor: Grauer Wolf
Datum: 18.01.16 18:55

Hallo, ich hatte ja gehofft, daß bei 111 Klicks ne vernünftige Hilfe dabei ist. Anstelle bekommt man so eine unqualifizierte dumme Antwort von einem wahrscheinlich selbsternannten Klugscheissr.
!!!! Schade !!!!

LG Grauer WOlfg

WME

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: C# im fremden Fenster Buttons betätigen 
Autor: Woellmi
Datum: 20.10.16 22:38

Hi Grauer Wolf,

ein möglicher Lösungsansatz sollte über "Inter-Process Communication"
realisierbar sein.

ein Bsp. ist unter:

http://www.codeproject.com/Articles/19570/Inter-Process-Communication-with-C

zu finden. Hier wird ein C# Lösungsansatz präsentiert.

Versuchs mal darüber. Ich bin zwar noch immer in VB6 unterwegs und habe nur
kleine Projekte mit C# realisiert, aber mit VB6 läuft so etwas prima.

Vielleicht hilft es ja.

Viel Erfolg!

Tschaui
Woellmi

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: C# im fremden Fenster Buttons betätigen 
Autor: Franki
Datum: 21.10.16 00:14

Hallo,

na ja, ob klug oder nicht, ob die Antwort dir hilft oder nicht bleibt ja dir überlassen.

Aber deine Frage zielt halt in die Richtung, dass du etwas machen möchest was eigentlich nicht vorgesehen ist. (Zugriff auf ein "fremdes" Programm)
Und das ohne zu erläutern um welche Programme es sich überhaupt handelt.

Aber egal, du wirst schon wissen was du machst, vielleicht hilft dir der Tipp von Woellmi ja.

Gruß
Frank
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: C# im fremden Fenster Buttons betätigen 
Autor: Woellmi
Datum: 02.11.16 11:37

Hi grauer Wolf,

Deine Anfrage ist ja schon einige Zeit her und meine C# Kenntnisse sind
auf Anfängerbasis.
Dennoch stoße auch ich immer wieder auf ähnliche Probleme, die mich emsig
das WEB durchsuchen lassen.
Letztens bin ich auf einen interessanten Artikel gestoßen, der Deine Anfrage
u.U. bedienen könnte. (wenn auch nur als Ideenbasis)

https://code-bude.net/2014/08/27/beliebige-programme-per-csharp-manipulieren/

Aus einem C# Programm heraus wird hier dem Programm Notepad ein neuer Menüeintrag
"spendiert" ohne Notepad selber als Quelle zu besitzen.
Das ein Menü etwas anderes ist, als ein Button ist mir klar, aber evtl. stimmt ja
"die Richtung".

Wie gesagt, der Link soll einfach nur Zeigen, dass es u.U. schon sinnvoll
und vor allem möglich ist derartiges zu tun.
Der erste Tipp mit "InterprocessControl" setzt natürlich voraus, dass man auf beide
Programme bzgl. der Sourcen Zugriff hat, aber damit habe ich selber schon erfolgreich
gearbeitet.

Evtl. hilft es ja, und bei der Anzahl von Lesern findet vielleicht jemand anderes
eine Idee für den nächsten Step.

Viel Erfolg

Tschaui
Woellmi

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel