INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Tastendruck mit LV simulieren!?



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!

31.10.2007, 18:28
Beitrag #21

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.695
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Tastendruck mit LV simulieren!?
' schrieb:Was soll das heißen, mit was RICHTIGEN progra.... LolLolLolLol
prograMMIEREN ! Tongue

Mit LV kann das jeder, hier ein VI, da ein Wirechen, dort ein Schieberegister. Tongue

Mit textbasiert wird das mal so werden wie mit Gemüseanbau. Wer baut schon sein Gemüse noch selbst an. Es sei denn er will echte Pastinaken, dann muss er auch das Handwerk des Gemüsegärtners beherrschen. Big Grin

(Man ist mir das wieder gut eingefallen)

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
31.10.2007, 21:19 (Dieser Beitrag wurde zuletzt bearbeitet: 31.10.2007 21:20 von IchSelbst.)
Beitrag #22

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.695
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Tastendruck mit LV simulieren!?
Ich hab mal was erweitert. Guckst du MyWin32API.txt, Funktion SendOneKeyWithCombi. Beachte VK-Codes!

Und was ganz wichtiges: Vorsicht mit so Zeugs! Da sind ganz schnell Tasten in Programmen gedrückt, so schnell kann man gar nicht kucken.


Angehängte Datei(en)
Sonstige .zip  MyWin32API_II.zip (Größe: 201,44 KB / Downloads: 356)

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.11.2007, 15:09
Beitrag #23

mctommson Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 99
Registriert seit: Mar 2007

8.6
2007
de

1210
Oesterreich
Tastendruck mit LV simulieren!?
Oki, aber ich kenn mich jetzt nimma ausSmile

Muss ich die beiden VIs "Sendonekey" und "Sendonekeycombi" miteinander verbinden? Denn im neuen Sendonekeycombi gibts jetzt nur noch Enums mit "Alt, Ctrl, Shift und noch einer..." da fehlen dann eben die F1-F12 Tasten.

Und: Wo kann ich einstellen, dass die Tasten dann für 3,5 Sekunden gedrückt bleiben? Mit nem Takt bestimme ich ja nur die zeitliche Periode, wann sie gedrückt werden...aber die Dauer des gedrückten Zustands kann ich so ja nicht einstellen, oder?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.11.2007, 16:35
Beitrag #24

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.695
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Tastendruck mit LV simulieren!?
' schrieb:Muss ich die beiden VIs "Sendonekey" und "Sendonekeycombi" miteinander verbinden?
Nein.
Wenn, dann benutzt du nur SendOneKeyCombi. Dieses Unterprogramm hat vier gleiche Parameter: C1 bis C4, alle vier vom Typ U8. Der Wert eines jeden Parameters entspricht dem VK-Controlcode einer Taste. Diese vier Tasten werden der Reihe nach - C1 bis C4 - gedrückt und wieder losgelassen. Losgelassen aber in der Reihenfolge C4 bis C1.

Zitat:Denn im neuen Sendonekeycombi gibts jetzt nur noch Enums mit "Alt, Ctrl, Shift und noch einer..." da fehlen dann eben die F1-F12 Tasten.
Mach sie halt rein.
Das Teil ist kein "Enumerator", sondern ein "Ring" - und das Teil kann man erweitern! Bei einem Ring kann man dem Bezeichner zusätzlich auch noch einen expliziten Wert zuweisen (das eben geht bei Enums nicht). Welchen Wert du für F1 bis F12 oder sonst einer Taste setzen musst, dafür kuckst du den Link an, den ich angegeben habe.

Zitat:Und: Wo kann ich einstellen, dass die Tasten dann für 3,5 Sekunden gedrückt bleiben?
Du willst die Taste gedrückt lassen?

Mit dem Unterprogramm SendOnKeyCombi kannst du Tasten nur drücken - drücken heißt aber hinlänglich auch wieder loslassen. Für gedrückt lassen müsste ich noch was schreiben.

Wem willst du denn die Tasten überhaupt senden? Der eigenen Applikation (also dem eigenen Prozess) oder einen anderen Prozess?

Zitat:aber die Dauer des gedrückten Zustands kann ich so ja nicht einstellen, oder?
Wenn dann tust du die Tasten mit dem Unterprogramm in der DLL sowieso nur drücken. Loslassen nach Zeit müsstest du selbst machen.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.11.2007, 17:50
Beitrag #25

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.695
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Tastendruck mit LV simulieren!?
Guckst du jetzt.

Wenn die Tasten nicht mehr losgelassen werden sollen, dann den Mode "Loslassen" wegnehmen. Nichtsdestoweniger kann man eine Taste an eine Applikation senden alleine nur indem man sie drückt und nicht mehr loslässt.

Aber Vorsicht:
Man kann mit SendInput (und was anderes gibts - von mir - nicht) merkwürdige Effekte erziehlen, wenn die Taste nicht mehr losgelassen wird. Das geht soweit, dass im Explorer das Markieren nicht mehr funktioniert.


Angehängte Datei(en)
Sonstige .zip  MyWin32API_071101.zip (Größe: 205,98 KB / Downloads: 275)

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.11.2007, 18:29
Beitrag #26

mctommson Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 99
Registriert seit: Mar 2007

8.6
2007
de

1210
Oesterreich
Tastendruck mit LV simulieren!?
' schrieb:Guckst du jetzt.

Wenn die Tasten nicht mehr losgelassen werden sollen, dann den Mode "Loslassen" wegnehmen. Nichtsdestoweniger kann man eine Taste an eine Applikation senden alleine nur indem man sie drückt und nicht mehr loslässt.

Aber Vorsicht:
Man kann mit SendInput (und was anderes gibts - von mir - nicht) merkwürdige Effekte erziehlen, wenn die Taste nicht mehr losgelassen wird. Das geht soweit, dass im Explorer das Markieren nicht mehr funktioniert.

Hm, sobald ich einen Wert in die Ring-Konstante zB C1 hinzufügen will (Rechte Maustaste - Eigenschaften - Objektbearbeiten - Wert hinzufügen - Name: VK_F5 - Wert: 74 (laut Link) und auf OK klicke stürzt mir das Programm ab...is der Fehler bekannt? Wie kann ich den umgehen?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.11.2007, 19:41 (Dieser Beitrag wurde zuletzt bearbeitet: 01.11.2007 19:43 von IchSelbst.)
Beitrag #27

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.695
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Tastendruck mit LV simulieren!?
' schrieb:Hm, sobald ich einen Wert in die Ring-Konstante zB C1 hinzufügen will (Rechte Maustaste - Eigenschaften - Objektbearbeiten - Wert hinzufügen - Name: VK_F5 - Wert: 74 (laut Link) und auf OK klicke stürzt mir das Programm ab...is der Fehler bekannt?
LV in Version 8.2.0 stürzt ab? Ja, dieser Fehler ist bekannt. Kuckst du hier im Forum.

Zitat:Wie kann ich den umgehen?
Updaten auf LV8.2.1
Solange du noch kein LB8.2.1 hast, lässt du den Ring einfach weg und gibtst den Wert 74 (beachte: 74 Hex oder 74 decimal) direkt an.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.11.2007, 17:45
Beitrag #28

mctommson Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 99
Registriert seit: Mar 2007

8.6
2007
de

1210
Oesterreich
Tastendruck mit LV simulieren!?
OK, also ich kriegs jetzt hin zB F5 an eine Anwendung (je nachdem welche aktiv ist) zu senden. Im Texteditor beispielsweise wird alle 10ms F5 gedrückt und so ein Zeitstempel eingefügt. Aber ich erkenne keinen unterschied zwischen Mode_none und Mode_loslassen. Wenn ich Mode_none ausgewählt habe, müsste eigentlich egal sein, was für ne Zeit in der Ereignisstrukur drinnen steht und er müsste mir zumindest einmal permanent auf F5 drücken, sodass sehr schnell viele Zeitstempel eingefügt werden. Dem ist aber nicht so...schreib ich 1000ms in die Ereignisstruktur, dann macht er jede Sekunden einen Zeitstempel, schreib ich 10ms rein, alle 10ms...aber das permanente Drücken der Taste bleibt aus, da ich das zumindest bei 1000ms registrieren sollte, dass er auf der Taste F5 bleibt, denn da werden die Zeitstempel normalerweise viel schneller eingefügt als jede Sekunden einer...

Klar was ich meine? ^_^

Nochmal vielleicht was ich eigentlich benötige:
Es soll an eine Anwendung alle 10ms für genau 3,5sec. der Tastendruck (ALT und F4) geschickt werden. Die Anwendung schließt sich dadurch nicht, deshalb soll das in einer Endlosschleife stattfinden.
Also:
0ms: ALT-F4 wird gedrückt
3500ms: ALT-F4 wird losgelassen (dazwischen darf es keine Unterbrechung geben)
3510ms: ALT-F4 wird gedrückt
7010ms: ALT-F4 wird losgelassen
usw.

Vielleicht sitz ich auch einfach nur auf der Leitung ^^ Kann sein, nach 3 Monaten LabVIEW Entzug ^^

Sorry, dass ich so rumnerveWink

Danke auf jeden Fall für deine Hilfe!
Lg,
Tommy!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.11.2007, 19:31
Beitrag #29

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.695
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Tastendruck mit LV simulieren!?
' schrieb:Aber ich erkenne keinen unterschied zwischen Mode_none und Mode_loslassen.
Da wirst du auch keinen Unterschied feststellen. Und zwar deswegen:
Das mit dem "eine Taste eingeben in einer Anwendung" funktioniert ungefähr so: Beim Drücken der Taste wird eine Windows-Message an die aktuelle Anwendung (das ist für gewöhlich die, deren Titelleiste aktiviert ist) gesendet, mit dem Inhalt "Taste X gedrückt" (WM_KeyDown). Bleibt die Taste gedrückt, wird nichts gesendet. Wird die Taste wieder losgelassen, sendet das Betriebssystem WM_KeyUp an die Anwendung. Die Anwendung stellt also im Normalfall nicht selbstständig fest, ob eine Taste noch immer als gedrückt gilt. Zwar gibt es auch hierfür Möglichkeiten (GetAsyncKeyState, GetKeyboardState etc.), aber die benutzt wahrscheinlich keine Anwendung.
Wenn du meinst, dass eine Taste ständig an die Anwendung gesendet wird, solange sie gedrückt bleibt, dann tritt hier die Key-Pepeat-Funktion des Betriebsystems ein. Dann wird eben in einem bestimmten Raster WM_KeyDown (und möglicherweise WM_KeyUp) vom Betriebssystem an die Anwendung gesendet.

Zitat:Wenn ich Mode_none ausgewählt habe, müsste eigentlich egal sein, was für ne Zeit in der Ereignisstrukur drinnen steht und er müsste mir zumindest einmal permanent auf F5 drücken
Eben so ist es nicht. Die von mir verwendete Funktion SendInput habe ich bisher nicht so programmiert, dass die automatische Repeatfunktion aktiviert ist. Selbst wenn ich das machen würde, müsstest du nach 3500ms die Taste loslassen. Du kommst also nicht umhin entweder alle 10ms zu senden mit eine Pause nach 3500 oder zum Zeitpunkt 3500 einmal Loslassen und 10ms stäter wieder drücken. Sollte sowas eine DLL machen, müsste die mehr Eigenintelligenz haben als die, die ich geschrieben habe.

Zitat:Es soll an eine Anwendung alle 10ms für genau 3,5sec. der Tastendruck (ALT und F4) geschickt werden.
Dass die Sache mit 10ms pro Tastendruck so funktioniert, da hab ich doch so meine Zweifel.

Zitat:0ms: ALT-F4 wird gedrückt
3500ms: ALT-F4 wird losgelassen (dazwischen darf es keine Unterbrechung geben)
3510ms: ALT-F4 wird gedrückt
7010ms: ALT-F4 wird losgelassen
usw.
Wie stellt denn deine Anwendung fest, dass die Taste für 3500ms gedrückt ist?
Das würde sie nur mittes GetAsyncKeyState etc machen können - und zwar mit einem Abtastraster von z.B. 1ms. Alleine durch feststellen, dass im Raster von z.B. 10ms eine Taste ankommt kann prinzipiell nicht festgetsellt werden, ob die Taste dauernd gedrückt ist, ober ob sie im Raster von 10ms gedrückt und wieder losgelassen wird. Du schreibst, dass die Taste im Bereich von 3500 bis 3510 losgelassen ist. Bei einem gerasterten Senden alle 10ms kann dieses Loslassen aber nicht festgestellt werden. So wie du das hier schreibst, solltest du mit der bisheriegen Funktionalität meiner DLL auskommen. Ich gehe aber davon aus, dass deine Anwendung die gedrückten Tasten registriert und nicht den Tastaturstatus abfragt.

Möglicherweise funktioniert deine Anwendung wie folgt: Sie erwartet ganz einfach alle 10ms (+-5ms) einen Tastendruck. Damit entsteht ein Raster von 10ms. Nach 3500ms fehlt nun genau ein Rasterpunkt - dadurch wird der von dir gewünschte Effekt - Pause zwischen 3500ms und 3510ms - erreicht.

Du hast jetzt folgende Möglichkeiten:
1) Mach ein SubVI mit hoher Priorität. Durch die hohe Priorität wird das Raster von 10ms garantiert eingehalten. Im SubVI sendet du alle 10ms einen Tastendruck Alt-F4 - einschließlich loslassen. Nach 3500ms - also nach 350 gesendeten Tasten - lässt du einmal Senden aus.
2) Du kuckst bei ni.com ob du was entsprechendes findest.
3) Du wartest, bis mir was eingefallen ist.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.11.2007, 20:25
Beitrag #30

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.695
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Tastendruck mit LV simulieren!?
Ich schlage von die Methode mit dem hoch-priorisierten SubVI zu verwenden. Das mit dem Parameter Time bei SendInput (guckst du PSDK) geht irgendwie nicht auf Anhieb. Ich hab dir jetzt eine Funktion reingemacht, damit kannst du allen machen, was mit SendInput möglich ist (außer ExtraInfo, was nicht geht, weils ein Pointer ist).


Angehängte Datei(en)
Sonstige .zip  MyWin32API_071102.zip (Größe: 215,26 KB / Downloads: 400)

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Tastendruck simulieren david126 2 3.635 19.03.2019 13:58
Letzter Beitrag: david126
  Case ausführen bei Tastendruck david126 7 5.661 14.02.2019 22:50
Letzter Beitrag: david126
  Wert per Tastendruck übernehmen NoWay 3 4.645 25.02.2015 11:48
Letzter Beitrag: NoWay
  Einfügen eines Strings bei Tastendruck im aktiven Feld dali4u 2 3.858 21.08.2014 05:51
Letzter Beitrag: sccompu
  Tastendruck aus dem VI in eine Liste umleiten twols 1 3.120 21.11.2012 22:29
Letzter Beitrag: GerdW
  Boolesche Elemente parallel per Tastendruck steuern Goerkjen 6 8.574 20.10.2011 16:54
Letzter Beitrag: fabqu

Gehe zu: