LabVIEWForum.de - programmatisch Menüauswahl treffen

LabVIEWForum.de

Normale Version: programmatisch Menüauswahl treffen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo zusammen,


kann man programmatisch eine Menüauswahl simulieren?




Gruß dimitri
Du kannst ja so tun als ob Jemand z.B. "Alt-D..S..B" drückt. Im Editor ist das z.B. Datei-Speichern&Beenden.


Gruß SeBa
Ja genau über die dazugehörige Tastenkombination müsste das doch funktionieren, insofern man eine definiert hat. Kannst du mir noch zwei Stichpunkte geben wie man einen Tastendruck simuliert?
Muss ja nicht alles neu erfinden...

evtl. hilft das hier:

[attachment=25492]


Gruß SeBa
Öhm ... ich hab's mir noch nicht angeschaut aber ich glaub ich suche was viel einfacheres! Ich will im VI eine Menueauswahl simulieren und nicht in einem externen Programm. In manchen Programmen will ich keine Eventstruktur benutzen und polle deshalb mein Menü. In einem Case-frame refreshe ich z.B. mein FP und genau das will ich auch programmatisch auslösen können. Mit einer Eventstruktur wäre das kein Problem. Auch so bekomme ich das gewünschte Case schon irgendwie aufgerufen. Nur dachte ich vielleicht geht's ganz einfach, wenn ich so tu als ob der Benutzer im Menü Refresh ausgewählt hat ...

Edit: Ich hab grad gesehn da ist doch was für mich dabei! Mal gucken ob sich der Aufwand lohnt. Dachte das würde einfacher gehen.

Danke SeBa.
Das hört sich doch wieder einmal nach einem klassischen Fall für eine State-Machine an...

Ein Case pollt dein Menu.
In den weiteren Cases wird verarbeitet, wenn was im Menu ausgewählt wurde.
Ein Case davon ist der Refresh.

Da du jetzt eine State-Machine hast, kannst du jederzeit von deinem Warte/Pollzustand (auch ohne Event) in den Refresh-Case springen.

Gruß, Jens
' schrieb:Ein Case pollt dein Menu.
In den weiteren Cases wird verarbeitet, wenn was im Menu ausgewählt wurde.
Ein Case davon ist der Refresh.

Da du jetzt eine State-Machine hast, kannst du jederzeit von deinem Warte/Pollzustand (auch ohne Event) in den Refresh-Case springen.
Ich weiß nicht, ob ich das so auf mein Programm anwenden kann ohne eine grundlegende Perestroika. Aber ich merk's mir für das nächste Mal.

Jetzt ist es so in etwa:
[attachment=25495]
State-Machine bei der ich im Idle-Frame nebenbei das Menü polle. Menü-Tags werden im selben Idle-Frame verarbeitet. Wenn die anderen Frames dran sind, wird das Menü einfach deaktiviert (ausgegraut).

Aber woher der Selektor seinen Wert bekommt kann man ja ohne viel Aufwand beeinflussen. Irgendwie so mit einem First-Run-Flag z.B.:
[attachment=25496]
So in der Art mach ich das dann auch.


Ich dachte einfach vielleicht kann man auch ganz easy einen Menüeintrag simulieren. Wie ein Benutzerereignis z.B.. Aber das "Workaround" ist ja auch kein Aufwand.



Gruß dimitri
Guten Morgen,

ich habe das Problem das ich das hochgeladene Vi nicht ganz nachvollziehen kann. Ich möchte ein Programm mit Hilfe von LabVIEW öffnen (Beispielsweise Excel). Das funktioniert auch. Jetzt möchte ich mit LabVIEW eine Tastenkombination simulieren und in Excel ausführen lassen.

Da ich noch nicht viel programmiert habe, stellt sich das als größeres Problem dar. Brauche ich dafür zwingend diese ,,dll,,? Ich weiß zwar was es heißt, kann aber nicht verstehen wofür es notwendig ist. Für eine Erklärung wäre sehr dankbar. Guru1

Mit freundlichen Grüßen

Thomas
Der normale Weg der Kommunikation mit Excel ist ActiveX. Damit kannst du eigentlich alles erledigen, was du sonst per Maus/Tastatur in Excel anstellst.

Was genau hast du denn vor? Oder war Excel nur ein (schlecht gewähltes) Beispiel?



Gruß SeBa
' schrieb:Brauche ich dafür zwingend diese ,,dll,,? Ich weiß zwar was es heißt, kann aber nicht verstehen wofür es notwendig ist. Für eine Erklärung wäre sehr dankbar.
Die Funktionen der DLL machen das, was du gesagt hast: einen Tastendruck simulieren.

Ein Tastendruck wird simuliert, indem in den Tastaturpuffer (oder Maus-Puffer, etc.) geschrieben wird. Dafür gibt es den Betriebssystem-Befehl SENDINPUT. Die DLL macht also nichts weiter, als den Befehl SENDINPUT zur Verfügung zu stellen. Die Applikation, die gerade den Fokus hat, bedient sich am Tastaturpuffer - und ist somit fernsteuerbar.

Inwieweit das unter Win7, also für nicht-Win32-Systeme, noch geht, weis ich nicht.

Sollte deine Aufgabe allerdings mit ActiveX möglich sein, solltest du das verwenden.
Seiten: 1 2
Referenz-URLs