Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
Hallo Leute,
bin mal wieder auf ein Problem gestoßen.
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????
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?
Dieser Beitrag soll weder nützlich, informativ noch lesbar sein.
Er erhebt lediglich den Anspruch dort wo er ungenau ist, wenigstens eindeutig ungenau zu sein.
In Fällen größerer Abweichungen ist es immer der Leser, der sich geirrt hat.
Rette einen Baum!
Diesen Beitrag nur ausdrucken, wenn unbedingt nötig!
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.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
erst mal vielen Dank für die zahlreichen Antworten.
Ich muß gestehen mir war das alles etwas zu hoch
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....
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
C#-Programm in LV aufrufen
Nicht nur Dir.
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.
Vielleicht werden wir noch aufgeklärt.
Gruß Markus
' schrieb:Ich muß gestehen mir war das alles etwas zu hoch
-------------------------------------------------------------------------- Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
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.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
C#-Programm in LV aufrufen
Das hatte ich doch glatt übersehen....
Gruß Markus
' schrieb:Guckst du beiliegendes Textfile.
-------------------------------------------------------------------------- Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------