Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
LostTime
Anmeldungsdatum: 23.04.2005 Beiträge: 13 Wohnort: Hannover
|
Verfasst am: 03.06.2007, 12:05 Titel: Tastaturdruck simulieren und unter Windows weiter verwenden |
|
|
Moin
Zu aller erst:
[x] Ich habe die Suchfunktion genutzt
[x] Ich habe das FAQ genutzt
[ ] Ich bin mir sicher, alle Möglichkeiten ausprobiert zu haben
Ich möchte mit einem QB-Programm die Cursor-Tasten simulieren, um z.B. eine PowerPoint-Folie weiter zuschalten.
Dazu hab ich die Tastatur-Simulations-Routine aus dem Monster-FAQ in KOmbination mit den Scancodes für "Links" und "Rechts"ausprobiert - ohne Erfolg.
Bzw. teilweisem Erfolg, es mag sein, dass in dem Programm die die Tastatureingabe simuliert wird, aber ich möchte sie auch unter Windows nutzen können, so dass Windows etwas damit anzufangen weiss.
Ich hatte hier irgendwo gelesen, dass In-den-Keybuffer-Schreiben und Taste-Drücken ein Unterschied besteht, doch irgendwei muss es doch gehen
Vielen Dank und schönen Sonntag,
LostTime _________________ Datensalat enthält Vitamin C++ |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
|
Nach oben |
|
 |
LostTime
Anmeldungsdatum: 23.04.2005 Beiträge: 13 Wohnort: Hannover
|
Verfasst am: 03.06.2007, 12:46 Titel: |
|
|
Hm.. eigentlich doof, aber ich probiers mal..
Jetzt muss ich nur noch rausfinden
- Wie ich unter FB mit dem COM-Port umgehe
- Wie ich unter FB auf den Windows-Tastaturpuffer zugreifen kann
wünscht mir Glück  _________________ Datensalat enthält Vitamin C++ |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 03.06.2007, 13:06 Titel: |
|
|
Ich hatte letztes Jahr für einen Vereinsanlass, wo es darum ging, in PowerPoint Inhalte dynamisch zu erzeugen. Konkret war dies eine Anzeigetafel wie in Fernseh-Ratespielsendungen für die Punkte.
Lösung war die Verwendung der ActiveX-Automatisierungsschnittstelle, wie sie alle Microsoft Office-Produkte bieten mit einem .vbs für den Windows Script Host.
Da Du ins QB-Forum postet, lautet die Lösung sonst, dieses .vbs dynamisch zu erzeugen und mit SHELL aufzurufen.
Mein Fall war letztes Jahr so, dass die Folienpräsentation ganz normal bedient wurde und der Script im Hintergrund jeweils genau definierte Foliennummern abgewartet hat, worauf dann eine spezielle kleine auf InputBox() basierende Bedienoberfläche (Begriffe mussten erraten und aufgedeckt werden, Reihefolge nicht vorausbestimmbar) erschienen ist. Sobald die Raterunde fertig war, liess ich per Script eine Folie weiterschalten und der Script "parkierte" wieder in die Warteschleife bir zur nächsten Raterunde.
Alternativ könnte man auch mit SendKeys() arbeiten.
Script müsste ich allerdings erst wieder auffindbar machen, dann erst könnte ich einen Beispielcode dazu geben. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
LostTime
Anmeldungsdatum: 23.04.2005 Beiträge: 13 Wohnort: Hannover
|
Verfasst am: 03.06.2007, 13:36 Titel: |
|
|
Naja, so kompliziert solls garnicht werden
Konkret mein Plan:
Ich hab ne Alte Maus umgebaut, die je nach Tastendruck CTS oder DCD Hi schaltet. Und wenn man eine Taste drückt, soll "auf der Tastatur" => oder <= "gedrückt" werden, um die Folien zu wechseln. Das sollte aber nciht nur in PowerPoint, sondern auch in z.B. Diashows funktionieren
Hab jetzt mal etwas mit FB rumgebastelt und den Teil zum COM abfragen übernommen.. aber das funktioniert noch nicht ganz.. eigentlich gar nicht
Code: |
cwahl: CLS
PRINT "COM-Port ausw„hlen:"
PRINT "1:", "COM1"
PRINT "2:", "COM2"
PRINT "3:", "COM3"
PRINT "4:", "COM4"
INPUT cport
IF cport = 1 THEN
ba = &H3F8
END IF
IF cport = 2 THEN
ba = &H2F8
END IF
IF cport = 3 THEN
ba = &H3E8
END IF
IF cport = 4 THEN
ba = &H2E8
END IF
IF (cport < 1) OR (cport > 4) THEN GOTO cwahl
CLS
OUT (ba + 4), 1
warten:
IF (INP(ba + 6) AND 16) = 16 THEN
PRINT "CTS: <="
Do
Loop until INP(ba + 6) AND 16 = 0
Endif
IF (INP(ba + 6) AND 128) = 128 THEN
PRINT "DCD: =>"
Do
Loop until INP(ba + 6) AND 128 = 0
Endif
goto warten
|
Sobald ich einen COM-Port gewählt habe, zeigt er nur einmal "CTS: <=" und das wars dann...
Die Tastatur-Simulation hab ich erstmal weggelassen, um die verusch ich mich zu kümmern, wenn das obige läuft
Vielen Dank  _________________ Datensalat enthält Vitamin C++ |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 03.06.2007, 13:47 Titel: |
|
|
Schreib an den Anfang mal Folgendes und probier es dann noch mal:
Code: | DIM AS INTEGER cport, ba |
Du solltest außerdem sicherstellen, dass du mindestens FreeBasic 0.17 und nicht irgendeine veraltete Version von freebasic.de verwendest.
Welche Version du hast, kannst du ermitteln, indem du in der Eingabeaufforderung Folgendes eingibst:
Code: | X:\PfadZuFreeBasic\fbc -version<enter> |
_________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
 |
LostTime
Anmeldungsdatum: 23.04.2005 Beiträge: 13 Wohnort: Hannover
|
Verfasst am: 03.06.2007, 13:50 Titel: |
|
|
Klappt immer noch nicht
Laut dem About-Fenster hab ich Version 0.4.4
So langsam gehört das vllt. in das FreeBasic-Forum
edit:
Nein ich hab Compiler 0.15  _________________ Datensalat enthält Vitamin C++ |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
 |
LostTime
Anmeldungsdatum: 23.04.2005 Beiträge: 13 Wohnort: Hannover
|
Verfasst am: 03.06.2007, 14:06 Titel: |
|
|
So, hab jetzt beides installiert, IDE ist auf 0.4.6 und Compiler 0.17, aber es gibt keine Veränderung  _________________ Datensalat enthält Vitamin C++ |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
|
Nach oben |
|
 |
LostTime
Anmeldungsdatum: 23.04.2005 Beiträge: 13 Wohnort: Hannover
|
Verfasst am: 03.06.2007, 17:49 Titel: |
|
|
Öhm.. dadurch wirds auch nicht einfacher..
Ich wollt grad mal wieder Delphi installieren, aber da funktioniert das Update 2 nicht
Ich gebs auf _________________ Datensalat enthält Vitamin C++ |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 12.08.2007, 19:32 Titel: PowerPoint aus QB heraus ansteuern |
|
|
Ferienzeit sei Dank, konnte inzwischen ein einfaches Beispiel erstellen, wie man PowerPoint grundsätzlich aus QB heraus ansteuern kann:
http://beilagen.dreael.ch/QB/POWERPNT.BAS
In diesem Beispiel ist der Code ganz einfach gehalten: Jede Folie für 3 Sekunden anzeigen, wofür mit einem kleinen Trick die Anzahl Folien ermittelt wird. Ansonsten sind von der Methodik her überhaupt keine simulierte Tastendrücke notwendig, sondern die Ansteuerung erfolgt professionell über die VBA-Methoden, wie sie auch für Makros verwendet werden.
Der VBS-Teil wird synchron aufgerufen, d.h. das QB-Programm "schläft" solange, bis nach Beendigung der Präsentation ihm die Kontrolle wieder zurückgegeben wird!
Falls QB im Hintergrund aktiv sein sollte, müsste man den VBS-Prozess als Hintergrundtask starten und auf Basis von kleinen Dateien eine primitive Kommunikation entwickeln. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
St_W

Anmeldungsdatum: 22.07.2007 Beiträge: 956 Wohnort: Austria
|
Verfasst am: 20.08.2007, 12:27 Titel: |
|
|
@HerbertSoftware: Das ist nur der Tastaturpuffer von DOS, der von Windows ist (meinem Wissen nach) davon unabhängig.
Oder irre ich mich da...  |
|
Nach oben |
|
 |
Skilltronic

Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
Verfasst am: 20.08.2007, 12:57 Titel: |
|
|
Mit dieser Methode hat man volle Kontrolle und kann alles machen, was man will, unabhängig vom Betriebssystem  _________________ Elektronik und QB? www.skilltronics.de ! |
|
Nach oben |
|
 |
|