Event an Windows senden
Moderator: Moderatoren
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2517
- Registriert: Mi, 28. Jul 2010 17:16
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 77 Mal
Event an Windows senden
Hallo zusammen
gib es eine möglichkeit einen Tastencode zb. ALT+W an das Windows System zu senden?
In einem aktiven XBase Part soll der Tastendruck ALT-W nicht als Event in der Xbase Event Queue erscheinen und verarbeitet werden sondern soll von Windows verarbeitet bezw. an Windows gesendet werden.
Cu Carlo
gib es eine möglichkeit einen Tastencode zb. ALT+W an das Windows System zu senden?
In einem aktiven XBase Part soll der Tastendruck ALT-W nicht als Event in der Xbase Event Queue erscheinen und verarbeitet werden sondern soll von Windows verarbeitet bezw. an Windows gesendet werden.
Cu Carlo
Valar Morghulis
Gruss Carlo
Gruss Carlo
- AUGE_OHR
- Marvin
- Beiträge: 12909
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Event an Windows senden
Frage : was soll ALT-W bewirken ? das ist doch kein Windows Hotkey, oder ?ramses hat geschrieben:gib es eine möglichkeit einen Tastencode zb. ALT+W an das Windows System zu senden?
In einem aktiven XBase Part soll der Tastendruck ALT-W nicht als Event in der Xbase Event Queue erscheinen und verarbeitet werden sondern soll von Windows verarbeitet bezw. an Windows gesendet werden.
zum senden benötige ich den Empfänger ... also welches Teil von Windows ?
gruss by OHR
Jimmy
Jimmy
- Herbert
- Der Entwickler von "Deep Thought"
- Beiträge: 1991
- Registriert: Do, 14. Aug 2008 0:22
- Wohnort: Gmunden am Traunsee, Österreich
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: Event an Windows senden
Ja und in diesem Fall ist das Empfängerprogramm zuständig und müsste aktiv auf Alt-W lauschen wie z.B Alt-Tab, wenn nicht....AUGE_OHR hat geschrieben:Frage : was soll ALT-W bewirken ? das ist doch kein Windows Hotkey, oder ?
zum senden benötige ich den Empfänger ... also welches Teil von Windows ?
...Alt- und Buchstabe Standard in allen Windows-Dialogen wäre und ist (das berühmte Unterstrichzeichen im Text bei einem Control), um eben mit Alt-und passendem Buchstaben genau direkt dorthin zu gelangen.
Also eigentlich nicht möglich.
Grüsse Herbert
Immer in Bewegung...
Immer in Bewegung...
- Werner_Bayern
- Der Entwickler von "Deep Thought"
- Beiträge: 2126
- Registriert: Sa, 30. Jan 2010 22:58
- Wohnort: Niederbayern
- Hat sich bedankt: 30 Mal
- Danksagung erhalten: 75 Mal
Re: Event an Windows senden
sendkey macht sowas, schau einfach hier im Forum.
es grüßt
Werner
<when the music is over, turn off the lights!>
Werner
<when the music is over, turn off the lights!>
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2517
- Registriert: Mi, 28. Jul 2010 17:16
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 77 Mal
Re: Event an Windows senden
Hi
auf dem PC ist ein Dienst installiert welcher auf ALT-W reagiert. Dieser prüft ob sich an der aktuellen Cursorstelle (Part mit dem Focus) oder in einem Markierten Text eine Nummer befinden die den Aufbau einer Telefonnummer hat. Wenn ja wird diese an das Arbeitsplatz Telefon gesendet. Das Abtippen einer Telefonnummer vom Bildschirm entfällt so. Der Dienst ist ein Ascotel-Wählprogramm.
Aus andern Programmen wie Word, Excel, Firefox und viele viele anderen funktioniert dies Problemlos. Nur mit Xbase Programmen eben nicht. Fatalerweise sind gerade in diesem alle Telefonnummern gespeichert was für grossen Frust beim Anwender führt. Dieser versteht nicht wieso es in unserem Programm nicht geht, vermutet Absicht .........
Cu Carlo
auf dem PC ist ein Dienst installiert welcher auf ALT-W reagiert. Dieser prüft ob sich an der aktuellen Cursorstelle (Part mit dem Focus) oder in einem Markierten Text eine Nummer befinden die den Aufbau einer Telefonnummer hat. Wenn ja wird diese an das Arbeitsplatz Telefon gesendet. Das Abtippen einer Telefonnummer vom Bildschirm entfällt so. Der Dienst ist ein Ascotel-Wählprogramm.
Aus andern Programmen wie Word, Excel, Firefox und viele viele anderen funktioniert dies Problemlos. Nur mit Xbase Programmen eben nicht. Fatalerweise sind gerade in diesem alle Telefonnummern gespeichert was für grossen Frust beim Anwender führt. Dieser versteht nicht wieso es in unserem Programm nicht geht, vermutet Absicht .........
Cu Carlo
Valar Morghulis
Gruss Carlo
Gruss Carlo
- Herbert
- Der Entwickler von "Deep Thought"
- Beiträge: 1991
- Registriert: Do, 14. Aug 2008 0:22
- Wohnort: Gmunden am Traunsee, Österreich
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: Event an Windows senden
Ich empfehle dir, neben der Tel. Nr einen Telefonbutton zu platzieren und dort dahinter den Aufruf zu diesem mysteriösen Programm zu setzen. Dem Button gibst du dann Alt-W als Shortcut.
Grüsse Herbert
Immer in Bewegung...
Immer in Bewegung...
- AUGE_OHR
- Marvin
- Beiträge: 12909
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Event an Windows senden
ein Dienst hat kein "Fenster" ... hm ...ramses hat geschrieben:auf dem PC ist ein Dienst installiert welcher auf ALT-W reagiert.
ist es ein VIO oder GUI Programm ?ramses hat geschrieben:Dieser prüft ob sich an der aktuellen Cursorstelle (Part mit dem Focus) oder in einem Markierten Text eine Nummer befinden die den Aufbau einer Telefonnummer hat. Wenn ja wird diese an das Arbeitsplatz Telefon gesendet. Das Abtippen einer Telefonnummer vom Bildschirm entfällt so. Der Dienst ist ein Ascotel-Wählprogramm.
unter GUI solltest du es mit den "virtuellen" Keys versuchen. hier ein Demo
Code: Alles auswählen
#define VK_SHIFT 0x10
#define VK_CONTROL 0x11 // STRG
#define VK_MENU 0x12 // ALT
#define VK_RMENU 0xA5 // ALT GR
#define KEYEVENTF_KEYUP 0x0002
// Tasten drücken
keybd_event( VK_CONTROL, 0, 0, 0)
keybd_event( VK_MENU, 0, 0, 0)
keybd_event( asc("F"), 0, 0, 0)
// Tasten wieder loslassen
keybd_event( asc("F"), 0, KEYEVENTF_KEYUP, 0)
keybd_event( VK_MENU, 0, KEYEVENTF_KEYUP, 0)
keybd_event( VK_CONTROL, 0, KEYEVENTF_KEYUP, 0)
Code: Alles auswählen
FUNCTION keybd_event( nVk, nScan, nFlags, nExtraInfo )
STATIC keybd_event
IF keybd_event = NIL
keybd_event := DllPrepareCall( "user32.dll", ;
DLL_STDCALL, "keybd_event" )
ENDIF
RETURN DllExecuteCall( keybd_event, nVk,;
nScan, nFlags, nExtraInfo )
FUNCTION GetVirtualKeyCode( cChar, lShift, lCtrl, lAlt, lAltGR )
LOCAL nCode, nHiByte
STATIC VkKeyScan
IF VkKeyScan = NIL
VkKeyScan := DllPrepareCall( "user32.dll", DLL_STDCALL, "VkKeyScanA" )
ENDIF
nCode := DllExecuteCall( VkKeyScan, asc( cChar ) )
nHiByte := HiByte( nCode )
lShift := ( nHiByte = 1 )
lCtrl := ( nHiByte = 2 )
lAlt := ( nHiByte = 4 )
lAltGR := ( nHiByte = 6 )
RETURN LowByte( nCode )
// -------------------
FUNCTION LowByte( n )
RETURN bAnd( n, 0xFF )
// -------------------
FUNCTION HiByte( n )
RETURN int( bAnd( n, 0xFF00 ) / 0x100 )
gruss by OHR
Jimmy
Jimmy
- Wolfgang Ciriack
- Der Entwickler von "Deep Thought"
- Beiträge: 2936
- Registriert: Sa, 24. Sep 2005 9:37
- Wohnort: Berlin
- Hat sich bedankt: 13 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Event an Windows senden
Warum denn nicht mal versuchen, mit einem Tapi-Aufruf direkt die Nummer wählen ?
Code: Alles auswählen
DLLFUNCTION tapiRequestMakeCall(v_n,c1,c2,c3) USING STDCALL FROM TAPI32
************************************************************************************************
procedure w32_TapiCall(nummer)
local v_n:=alltrim(charrem(" -/()",nummer))
if !empty(v_n)
tapiRequestMakeCall(v_n,"","","")
elseif empty(v_n)
Meldung("Keine Nummer vorhanden !",ERROR)
else
Meldung("Tapi-Schnittstelle nicht aktiv !",HINWEIS)
endif
return
Viele Grüße
Wolfgang
Wolfgang
- Werner_Bayern
- Der Entwickler von "Deep Thought"
- Beiträge: 2126
- Registriert: Sa, 30. Jan 2010 22:58
- Wohnort: Niederbayern
- Hat sich bedankt: 30 Mal
- Danksagung erhalten: 75 Mal
Re: Event an Windows senden
Servus Wolfgang,
da stimmt was im Code nicht, die Meldung Tapi-Schnittstelle nicht aktiv wird wohl nie kommen?
da stimmt was im Code nicht, die Meldung Tapi-Schnittstelle nicht aktiv wird wohl nie kommen?
es grüßt
Werner
<when the music is over, turn off the lights!>
Werner
<when the music is over, turn off the lights!>
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9367
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Event an Windows senden
TAPI ist nur eingeschränkt empfehlenswert, aber ausprobieren sollte man es in jedem Fall. Wenn es sich um eine Anlagensteuerung mit Nebenplätzen handelt, genügt es in aller Regel nicht, einen einfachen TapiRequest auszulösen. Vermutlich lässt sich dieses ominöse Wählprogramm mit Parametern aufrufen. Wenn das der Fall ist, wäre das Mittel der Wahl, den Wählbutton neben den jeweiligen Nummern mit RunShell() und einem entsprechenden Aufruf auszustatten. Alles Nähere sollte die entsprechende Doku hergeben.
Vermutlich versucht dieses Wählprogramm, Ziffernfolgen in Eingabefeldern (SLEs, MLEs) zu erkennen. Ich würde empfehlen, mal alle möglichen Arten der Zahlendarstellung in einem kleinen Xbase-Beispielprogramm durchzuspielen und zu schauen, wann es reagiert. Also Statics, SLEs, MLEs, Tabellen usw.
Vermutlich versucht dieses Wählprogramm, Ziffernfolgen in Eingabefeldern (SLEs, MLEs) zu erkennen. Ich würde empfehlen, mal alle möglichen Arten der Zahlendarstellung in einem kleinen Xbase-Beispielprogramm durchzuspielen und zu schauen, wann es reagiert. Also Statics, SLEs, MLEs, Tabellen usw.
Herzlich,
Tom
Tom
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2517
- Registriert: Mi, 28. Jul 2010 17:16
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 77 Mal
Re: Event an Windows senden
Hi
vielen Dank für eure Tips. Ich bin nun einen Schritt weitergekommen.
- Der TAPI Aufruf funktioniert nicht.
- Das Wählprogramm lässt sich nicht per Parameter aufrufen. Eine Doku gibt es auch nicht. Nur eine Installationsanweisung.
Ich war gestern den ganzen Tag beim Kunden um eine Lösung zu finden.
Geholfen hat zum Schluss im Hauptprogramm per Button "Wählen" ein kleines Fenster zu öffnen. In diesem sind in 1-6 SLE's die jeweils die vorhandenen Nummern des Kunden/Lieferanten anzeigen z.B. "Tel. Chef: 01222" usw. und ein Ende-Button.
Der User kann nun auf das SLE mit der gewünschten Nummer klicken dass der Cursor im SLE steht und dann ALT-W drücken.
So funktioniert das Wählen. (Auch wenn noch Tel. Chef: im Feld steht) . Kommen andere xbase Elemente (z.B MLE's) in diesem Fenster dazu ist sofort Schluss und es passiert nichts mehr.
Es ist wie Tom vermutet hat. Das Wählprogramm versucht Ziffern in aktiven Eingabefeldern zu suchen, wobei die Suche nicht allzu clever oder umfangreich ist.....
Jedenfalls der Kunde ist damit zufrieden. 2 Klick's und 1 Tastendruck und die Nummer ist im Telefon.
Cu Carlo
vielen Dank für eure Tips. Ich bin nun einen Schritt weitergekommen.
- Der TAPI Aufruf funktioniert nicht.
- Das Wählprogramm lässt sich nicht per Parameter aufrufen. Eine Doku gibt es auch nicht. Nur eine Installationsanweisung.
Ich war gestern den ganzen Tag beim Kunden um eine Lösung zu finden.
Geholfen hat zum Schluss im Hauptprogramm per Button "Wählen" ein kleines Fenster zu öffnen. In diesem sind in 1-6 SLE's die jeweils die vorhandenen Nummern des Kunden/Lieferanten anzeigen z.B. "Tel. Chef: 01222" usw. und ein Ende-Button.
Der User kann nun auf das SLE mit der gewünschten Nummer klicken dass der Cursor im SLE steht und dann ALT-W drücken.
So funktioniert das Wählen. (Auch wenn noch Tel. Chef: im Feld steht) . Kommen andere xbase Elemente (z.B MLE's) in diesem Fenster dazu ist sofort Schluss und es passiert nichts mehr.
Es ist wie Tom vermutet hat. Das Wählprogramm versucht Ziffern in aktiven Eingabefeldern zu suchen, wobei die Suche nicht allzu clever oder umfangreich ist.....
Jedenfalls der Kunde ist damit zufrieden. 2 Klick's und 1 Tastendruck und die Nummer ist im Telefon.
Cu Carlo
Valar Morghulis
Gruss Carlo
Gruss Carlo