LabVIEWForum.de - C#-Programm in LV aufrufen

LabVIEWForum.de

Normale Version: C#-Programm in LV aufrufen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3 4 5 6 7 8
Hallo Leute,
bin mal wieder auf ein Problem gestoßen.O
Ich möchte in meiner Oberfläche ein bereits bestehendes Programm aufrufen und bedienen.
Nach meiner Einschätzung sollte dies in einen Aktive-X-Container oder so funktionieren.
Leider habe ich keinerlei Infos über das Programm außer das es in C#-Programmiert wurde und das es global auf dem Sufer liegt. Es wird aber lokal bei mir auf dem Rechner mittels einer Verknüfung gestartet.
Wie finde ich raus wie ich es ansprechen muß und wie mache ich das am besten????

Danke
' schrieb:... auf dem Sufer liegt. ...

:huh:Wo?

Gruß SeBa

Edit:

Ok... mehr Text.

Welches Programm ist das? Selbst geschrieben? Dokumentation?

ActiveX wird nur funktionieren, wenn das Programm diese Schnittstelle auch bereitstellt. Gleiches gilt für .Net oder DDE.

Wenn du das nicht weißt, kannst du den Programmierer fragen?
Die Dokumentation des Programmes lesen. So eine Doku wird schliesslich von jedem halbwegs guten Programmierer erstellt und sie beschreibt alle Schnittstellen des Programmes. Sollte es keine gute Dokumentation dazu geben, dann nimmts du eine beliebige andere, möglichst schwere Programmbeschreibung und schlägst damit solange auf den zuständigen Programmierer ein, bis er verspricht sich in Zukunft zu bessern!

Also wenn es keine Hilfedateien zu deinem Programm gibt, dann sehe ich nicht besonders viele Chancen. Vielleicht kann man die Schnittstelle des Programms irgendwie abfragen, aber wie und ob das geht - da habe ich als hauptsächlich HW-Mensch keine Ahnung....
Also,
das Programm ist leider ein selbst geschriebenes. :-(
Es wurde vor einigen Jahren von nem Studenten geschreiben und der ist leider nicht mehr greifbar :-(
Ich kann mir nicht vorstellen, dass eine solche Schnittstelle vorhanden ist.
Wieso sollte er das rein bringen, es ging damals nur um die Funktionalität.
Gibt es nicht die Möglichkeit ein programm auf zu rufen und es in einem Art unterpanel an zu zeigen und mit zu nutzen?
Ich weiss, dass man mit LV Eingaben simulieren kann, wenn man dem anderen Programm den Fokus gibt. Dazu gab es vor kurzem erst etwas hier im Forum. Wenn ich später noch Zeit habe, schau ich mal ob ich den Link finde.

Edit:
Hab den Link mal direkt gesucht.
LVF-Link
Leider gibt es kein konkretes Beispiel, aber man bekommt zumindest eine Idee, in welche Richtung man laufen muss.
Ich hab mal das mit dem user32.dll:FindWindowA (Fensterhandle holen) und user32.dll:SetForegroundWindow (bestimmtes Fenster aktiv setzen) eingebaut. Einfach Notepad mit Titel "Unbenannt - Editor" öffnen, Text unten rechts (im VI) eingeben und Button ALLES klicken.

Voraussetzung ist natürlich, dass innerhalb des anderen Programmes das gewünschte Element den Fokus hat. Aber auch das kann man - zumindest theoretisch - von LV aus machen.

Lv82_img
Moin Leute,

erst mal vielen Dank für die zahlreichen Antworten.
Ich muß gestehen mir war das alles etwas zu hoch Undecided
Fokus? Da hab ich leider naoch nichts mit gemacht / gehört.
Was ist denn der Fokus innerhalb eines Programms?
Also in die Oberfläche des Programms sollen einfach nur Eingaben gemacht werden.
Ja und es dann auch einmalig ausführen.
@IchSelbst das Programm schaut schon gut aus, aber hmmmm.... versteh´s nicht ganz....

Bräuchte da mal so ne Art Strickmuster :-)
1. Mach das
2. Mach das
3. usw :-)

Bin wie gesagt noch nicht der super crack in LV, leider....

Danke
Nicht nur Dir. Big Grin
Das Problem / die Schwierigkeit ist in dem Fall aber nicht LabVIEW, sondern welche DLL Du wie einbindest.
Ich hab' z.B. noch nicht verstanden, was "MyWin32API.dll:SendOneKeyWithCombi" macht. Unsure
Vielleicht werden wir noch aufgeklärt. Big Grin

Gruß Markus

' schrieb:Ich muß gestehen mir war das alles etwas zu hoch Undecided
' schrieb:Fokus?
Fokus heißt, dass ein Programm die Tastatureingaben bekommt. Den Fokus gibt es für das Programm - dann ist die Titelzeile nicht mehr ausgegraut. Innerhalb eines Programmes gibt es Eingabeelemente. Und das Element, in das man gerade Daten eingeben kann, hat den Fokus. (Guckst du Eigenschaftsknoten Tastaturfokus). Das Eingabeelement, das den Fokus hat, ist gewöhnlich mit z.B. einem schwarzen Rahmen gekennzeichnet (der immer weiterhüpft, wenn man die Tab-Taste betätigt.)

Zitat:Bräuchte da mal so ne Art Strickmuster
Guckst du Event für "Alles": Erst Handle für Zielapplikation holen. Der Fenstername ist das, was oben in der Titelleiste steht. Beachte, dass meine Ausführungen bisher nur für bis XP geprüft sind! Dann Zielapplikation aktivieren. Guckst du zweiten DLL-Knoten. Schließlich die gewünschten Daten senden.

Hast du mal das Muster ausprobiert mit dem Notepad?


' schrieb:Ich hab' z.B. noch nicht verstanden, was "MyWin32API.dll:SendOneKeyWithCombi" macht.
Guckst du beiliegendes Textfile.
SendOneKey => Eine Taste senden. z.B "A"
WithCombi => z.B. Shift, Shift+Ctrl+Alt
Gesendet wird mit dem WinAPI-Befehl SendInput. Mit SendInput können im übrigen auch Mouse-Operationen gesendet werden.
Das hatte ich doch glatt übersehen.... Blush

Gruß Markus

' schrieb:Guckst du beiliegendes Textfile.
Seiten: 1 2 3 4 5 6 7 8
Referenz-URLs