globale Tastenkombinationen
Moderator: Moderatoren
-
- Rekursionen-Architekt
- Beiträge: 417
- Registriert: Mo, 17. Sep 2007 18:20
- Wohnort: Senftenberg
- Kontaktdaten:
globale Tastenkombinationen
Ich will mir mal einen eigenen Mp3-Player aufbauen.
Dazu eine Frage. Kann man in Xbase bzw. Xclass globaale Tastenkombinationen wie in Winamp erstellen?
Also man drückt bspw. Strg-Alt-Bild ab und dann wird nächste Titel abgespielt.
Gibts sowas auch in Xbase?
Dazu eine Frage. Kann man in Xbase bzw. Xclass globaale Tastenkombinationen wie in Winamp erstellen?
Also man drückt bspw. Strg-Alt-Bild ab und dann wird nächste Titel abgespielt.
Gibts sowas auch in Xbase?
Viele Grüße
Stevie
Stevie
- Jan
- Marvin
- Beiträge: 14651
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Hallo Stevie,
ich kenne Winamp nicht. Aber Du kannst in der Eventschleife abfragen, ob eine bestimmte Taste(nkombination) gedrückt wurde, und da eine Funktion mit aufrufen. Und da die Eventschleife im gesamten Programm (oder im Thread, jenachdem, was Du machst) sichtbar ist, sollte das dann auch von überall aus funktionieren.
Jan
ich kenne Winamp nicht. Aber Du kannst in der Eventschleife abfragen, ob eine bestimmte Taste(nkombination) gedrückt wurde, und da eine Funktion mit aufrufen. Und da die Eventschleife im gesamten Programm (oder im Thread, jenachdem, was Du machst) sichtbar ist, sollte das dann auch von überall aus funktionieren.
Jan
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: globale Tastenkombinationen
hi,
Ich habe WMP.OCX (Windows Media Player 9-11) benutzt um meinen
Player zu schreiben der sowohl Video als auch Audio kann.
Die "Tasten" des Player können nun "frei" definiert werden sodas ich die
auf meine "remote Control" anpassen kann.
und hier der Einstieg für WMP.OCX :
wenn du mehr Infos brauchst dann schau dir mal mein Referat von der
Devcon 2007 Berlin an.
womit willst du es machen ?stevie hat geschrieben: Ich will mir mal einen eigenen Mp3-Player aufbauen.
wieso ? eine Methode oPlayer:PLAY() kann man doch starten wie man will.stevie hat geschrieben: Dazu eine Frage. Kann man in Xbase bzw. Xclass globaale Tastenkombinationen wie in Winamp erstellen?
Also man drückt bspw. Strg-Alt-Bild ab und dann wird nächste Titel abgespielt.
Gibts sowas auch in Xbase?
Ich habe WMP.OCX (Windows Media Player 9-11) benutzt um meinen
Player zu schreiben der sowohl Video als auch Audio kann.
Die "Tasten" des Player können nun "frei" definiert werden sodas ich die
auf meine "remote Control" anpassen kann.
Code: Alles auswählen
// Alle XbParts werden in ein Array aufgenommen
AADD(aControls,oAnzeig) // control to keyhandler
...
// zuweisen des Keyhandler für jedes XbPart
bKeyHandler := {| nKey,uNIL,obj | MAINKEYS(nKey, ...)}
AEVAL(aControls,{| o | o:keyBoard := bKeyHandler})
STATIC PROCEDURE MAINKEYS(nKey ....
DO CASE
...
CASE nKey == SP_HIDkeys()[HID_PLAY] // WM9Play
SP_lOverWMP(.F.)
IF aoChild[CH_WMP]:PlayState = wmppsPlaying
PostAppEvent(xbeE_Pause)
ELSE
PostAppEvent(xbeE_Play)
PostAppEvent(xbeP_Resize,;
oMainDlg:CurrentSize(),;
oMainDlg:CurrentSize(),;
oMainDlg)
ENDIF
Code: Alles auswählen
bOldError := ERRORBLOCK({| e | BREAK(e)})
BEGIN SEQUENCE
// Create an ActiveX instance in the Form client area,
// and wrap it in an Xbase++ class instance
oWMP := XbpActiveXControl():new(oAnzeig,,{0,0},aSize,aPP)
//
// oWMP:CLSID := "WMPlayer.OCX.7"
//
oWMP:CLSID := "{6BF52A52-394A-11D3-B153-00C04F79FAA6}"
oWMP:create()
nOldVol := oWMP:Settings:volume
oWMP:Settings:enableErrorDialogs := .T.
RECOVER USING oError
IF oError:subCode == 6500
MsgBox("Error creating ActiveX Control."+CRLF+;
"Please make sure M$ Mediaplayer 9 Componends"+CRLF+;
"WMP.OCX and WMP.DLL are installed on your computer.",;
"WMPlayer Sample")
oWMP := NIL
QUIT
ENDIF
END SEQUENCE
ERRORBLOCK(bOldError)
AADD(aControls,oWMP) // control to keyhandler
Devcon 2007 Berlin an.
gruss by OHR
Jimmy
Jimmy
-
- Rekursionen-Architekt
- Beiträge: 417
- Registriert: Mo, 17. Sep 2007 18:20
- Wohnort: Senftenberg
- Kontaktdaten:
Re: globale Tastenkombinationen
Mit global meinte ich, dass man bspw. während eines Spiels ohne den Fokus auf den Player zu setzen, weiterschaltet, also aus jeder Anwendung heraus nächster Titel aufrufen. Den Player wollte ich in dieser Activexart machen.AUGE_OHR hat geschrieben:hi,womit willst du es machen ?stevie hat geschrieben: Ich will mir mal einen eigenen Mp3-Player aufbauen.
wieso ? eine Methode oPlayer:PLAY() kann man doch starten wie man will.stevie hat geschrieben: Dazu eine Frage. Kann man in Xbase bzw. Xclass globaale Tastenkombinationen wie in Winamp erstellen?
Also man drückt bspw. Strg-Alt-Bild ab und dann wird nächste Titel abgespielt.
Gibts sowas auch in Xbase?
Ich habe WMP.OCX (Windows Media Player 9-11) benutzt um meinen
Player zu schreiben der sowohl Video als auch Audio kann.
Die "Tasten" des Player können nun "frei" definiert werden sodas ich die
auf meine "remote Control" anpassen kann.
wenn du mehr Infos brauchst dann schau dir mal mein Referat von der
Devcon 2007 Berlin an.
Kennt jemand eventuell noch einen Link, wo es eine Dokumentation über sämtliche Activex-Mediaplayerbefehle gibt?
Viele Grüße
Stevie
Stevie
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: globale Tastenkombinationen
hi,
Anwendung den Focus hat ? Kennst du irgend eine M$ Anwendung die
ohne Focus einen Tastendruck etc. ausführen kann ?
...eine Ausnahme sind da evtl. "Multi Media Tastaturen" den die Tasten
erzeugen Events die ausserhalb der "normalen" Events liegen.
http://msdn2.microsoft.com/en-us/library/ms986368.aspx
http://msdn2.microsoft.com/en-us/library/bb248313.aspx
http://msdn2.microsoft.com/en-us/library/bb249350.aspx
http://msdn2.microsoft.com/en-us/library/bb249670.aspx
http://msdn2.microsoft.com/en-us/library/bb248464.aspx
... und wie schon gesagt mein Referat von der DevCon 2007 Berlin.
Wenn jemand das Referat (und Sample) haben möchte bitte kurz eine Msg
an mich wohin ich euch es schicken soll.
hm ... kann man das mit WinAMP oder WMP im original ohne das diestevie hat geschrieben: Mit global meinte ich, dass man bspw. während eines Spiels ohne den Fokus auf den Player zu setzen, weiterschaltet, also aus jeder Anwendung heraus nächster Titel aufrufen.
Anwendung den Focus hat ? Kennst du irgend eine M$ Anwendung die
ohne Focus einen Tastendruck etc. ausführen kann ?
...eine Ausnahme sind da evtl. "Multi Media Tastaturen" den die Tasten
erzeugen Events die ausserhalb der "normalen" Events liegen.
http://msdn2.microsoft.com/en-us/library/bb249259.aspxstevie hat geschrieben: Den Player wollte ich in dieser Activexart machen.
Kennt jemand eventuell noch einen Link, wo es eine Dokumentation über sämtliche Activex-Mediaplayerbefehle gibt?
http://msdn2.microsoft.com/en-us/library/ms986368.aspx
http://msdn2.microsoft.com/en-us/library/bb248313.aspx
http://msdn2.microsoft.com/en-us/library/bb249350.aspx
http://msdn2.microsoft.com/en-us/library/bb249670.aspx
http://msdn2.microsoft.com/en-us/library/bb248464.aspx
... und wie schon gesagt mein Referat von der DevCon 2007 Berlin.
Wenn jemand das Referat (und Sample) haben möchte bitte kurz eine Msg
an mich wohin ich euch es schicken soll.
gruss by OHR
Jimmy
Jimmy
-
- Rekursionen-Architekt
- Beiträge: 417
- Registriert: Mo, 17. Sep 2007 18:20
- Wohnort: Senftenberg
- Kontaktdaten:
Re: globale Tastenkombinationen
Winamp kann das ohne besondere Tastatur.AUGE_OHR hat geschrieben:hi,
hm ... kann man das mit WinAMP oder WMP im original ohne das die
Anwendung den Focus hat ? Kennst du irgend eine M$ Anwendung die
ohne Focus einen Tastendruck etc. ausführen kann ?
...eine Ausnahme sind da evtl. "Multi Media Tastaturen" den die Tasten
erzeugen Events die ausserhalb der "normalen" Events liegen.
... und wie schon gesagt mein Referat von der DevCon 2007 Berlin.
Wenn jemand das Referat (und Sample) haben möchte bitte kurz eine Msg
an mich wohin ich euch es schicken soll.
Da gibts ein Addon, was standardmäßig installiert wird. Dann kann man in den Einstellungen die globalen Tastenkombinationen anschalten und dann klappt das. Mit Windows selbst geht das ja auch. Lege eine Verknüpfung irgendwo an (aufm Desktop gehts auf jeden Fall), vergib eine Tastenkombination, rufe ein Programm im Vollbildmodus auf und benutze die Verknüpfung auf. Dann klappt das.
Viele Grüße
Stevie
Stevie
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: globale Tastenkombinationen
hi,
und nicht auf die "Buttons" innerhalb der Application.
Was ich meine ist WM_COMMAND, dies sind die "Multimedia Events".
Wenn man so eine "Multimedia" Tastatur hat sind doch Tasten für den
Player vorhanden. Diese können "alle" den M$ Mediaplayer bedienen egal
ob der WMP nun Focus hat oder nicht. Diese WM_COMMAND schicken
übrigens auch die "TV-remote Controls" wenn die nach X10 Standart
arbeiten sodas man innerhalb einer Xbase++ Anwendung per ActiveX
damit arbeiten kann wie ich es auf der Devcon vorgeführt habe.
Beim ersten Aufruf des WMPlayer wird WM9HID.EXE gestartet.
Hiermit werden die Tasten "belegt" wie man das nun gerne haben will.
Wenn man nun die "Multimedia" Tasten den Funktionen des Players
zuordnet dann werden die anscheinend von anderen Applicationen
"durchgelassen" und kommen somit auch bei der Xbase++ Application
"an".
Das geht aber mit "normalen" Tasten Kombinationen nicht den dazu muss
der WMPlayer in "FullScreen" Modus sein um den :Keypress Event
abfangen zu können (siehe Referat).
viel Spass mit dem WMPlayer
ah ja ... URL ?stevie hat geschrieben: Winamp kann das ohne besondere Tastatur.
Da gibts ein Addon, was standardmäßig installiert wird. Dann kann man in den Einstellungen die globalen Tastenkombinationen anschalten und dann klappt das.
ah sowas meinst du ... aber ein "Hotkey" geht ja nur auf eine Verknüpfungstevie hat geschrieben: Mit Windows selbst geht das ja auch. Lege eine Verknüpfung irgendwo an (aufm Desktop gehts auf jeden Fall), vergib eine Tastenkombination, rufe ein Programm im Vollbildmodus auf und benutze die Verknüpfung auf. Dann klappt das.
und nicht auf die "Buttons" innerhalb der Application.
Was ich meine ist WM_COMMAND, dies sind die "Multimedia Events".
Wenn man so eine "Multimedia" Tastatur hat sind doch Tasten für den
Player vorhanden. Diese können "alle" den M$ Mediaplayer bedienen egal
ob der WMP nun Focus hat oder nicht. Diese WM_COMMAND schicken
übrigens auch die "TV-remote Controls" wenn die nach X10 Standart
arbeiten sodas man innerhalb einer Xbase++ Anwendung per ActiveX
damit arbeiten kann wie ich es auf der Devcon vorgeführt habe.
Beim ersten Aufruf des WMPlayer wird WM9HID.EXE gestartet.
Hiermit werden die Tasten "belegt" wie man das nun gerne haben will.
Wenn man nun die "Multimedia" Tasten den Funktionen des Players
zuordnet dann werden die anscheinend von anderen Applicationen
"durchgelassen" und kommen somit auch bei der Xbase++ Application
"an".
Das geht aber mit "normalen" Tasten Kombinationen nicht den dazu muss
der WMPlayer in "FullScreen" Modus sein um den :Keypress Event
abfangen zu können (siehe Referat).
viel Spass mit dem WMPlayer
gruss by OHR
Jimmy
Jimmy
-
- Rekursionen-Architekt
- Beiträge: 417
- Registriert: Mo, 17. Sep 2007 18:20
- Wohnort: Senftenberg
- Kontaktdaten:
Re: globale Tastenkombinationen
WinampAUGE_OHR hat geschrieben:hi,
ah ja ... URL ?
Viele Grüße
Stevie
Stevie
-
- Rekursionen-Architekt
- Beiträge: 417
- Registriert: Mo, 17. Sep 2007 18:20
- Wohnort: Senftenberg
- Kontaktdaten:
Re: globale Tastenkombinationen
Für C habe ich beispielsweise das hier gefunden.
http://dotnet-snippets.de/dns/c-globale ... ID356.aspx
Entweder unter Xclass / Xbase gibts sowas auch oder wäre es evtl. möglich, das Xbase mit C zu verbinden?
http://dotnet-snippets.de/dns/c-globale ... ID356.aspx
Entweder unter Xclass / Xbase gibts sowas auch oder wäre es evtl. möglich, das Xbase mit C zu verbinden?
Viele Grüße
Stevie
Stevie
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: globale Tastenkombinationen
hi,
http://msdn.microsoft.com/en-us/library ... S.85).aspx
ein Beispiel mit WM_COMMANDs für WinAMP
http://www.activevb.de/tipps/vb6tipps/tipp0567.html
siehe dir die WA_* Konstanten doch mal genauer an wie du die per
WM_COMMAND an WinAMP schicken kannst.
ich denke was du suchst ist : "RegisterHotKey"stevie hat geschrieben: Für C habe ich beispielsweise das hier gefunden.
http://dotnet-snippets.de/dns/c-globale ... ID356.aspx
Entweder unter Xclass / Xbase gibts sowas auch oder wäre es evtl. möglich, das Xbase mit C zu verbinden?
http://msdn.microsoft.com/en-us/library ... S.85).aspx
ein Beispiel mit WM_COMMANDs für WinAMP
http://www.activevb.de/tipps/vb6tipps/tipp0567.html
siehe dir die WA_* Konstanten doch mal genauer an wie du die per
WM_COMMAND an WinAMP schicken kannst.
gruss by OHR
Jimmy
Jimmy
-
- Rekursionen-Architekt
- Beiträge: 417
- Registriert: Mo, 17. Sep 2007 18:20
- Wohnort: Senftenberg
- Kontaktdaten:
Re: globale Tastenkombinationen
Das sollte das sein, weißt du auch wie man das mit Xbase verbinden kann? Beispielsweise?AUGE_OHR hat geschrieben:hi,
ich denke was du suchst ist : "RegisterHotKey"
http://msdn.microsoft.com/en-us/library ... S.85).aspx
ein Beispiel mit WM_COMMANDs für WinAMP
http://www.activevb.de/tipps/vb6tipps/tipp0567.html
siehe dir die WA_* Konstanten doch mal genauer an wie du die per
WM_COMMAND an WinAMP schicken kannst.
Viele Grüße
Stevie
Stevie
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: globale Tastenkombinationen
hi,
enthalten die du für SendMessageA() und WM_Command benötigst.
Du must dir nur ein Handle der WinAMP Instanze holen, am besten aus
dem Taskmanager, und ihm die WA_* Konstante schicken und das war es.
aber das ganze ist nur rundimentär und kein Vergleich zu den
Möglichkeiten von WMP.OCX ( oder VLC ) den es fehlen ja die
Callback Slots z.b. Sliderbar für die Positions Anzeige etc. so das
du keine "Rückmeldung" für dein DLLCALL hast ... das müsstest du
dir alles "per Hand" zusammen stricken.
Ja wieso nicht, es sind doch alle Konstanten von WinAMP im VB Samplestevie hat geschrieben: Das sollte das sein, weißt du auch wie man das mit Xbase verbinden kann?
Beispielsweise?
enthalten die du für SendMessageA() und WM_Command benötigst.
Du must dir nur ein Handle der WinAMP Instanze holen, am besten aus
dem Taskmanager, und ihm die WA_* Konstante schicken und das war es.
Code: Alles auswählen
::oBack := XbpPushButton():new( ::oStat, , ...)
::oBack:caption := "Back"
::oBack:tabStop := .T.
::oBack:activate := {|| WA_SEND( WA_PREV) }
::oStop := XbpPushButton():new( ::oStat, , ...)
::oStop:caption := "Stop"
::oStop:tabStop := .T.
::oStop:activate := {|| WA_SEND( WA_STOP) }
::oPlay := XbpPushButton():new( ::oStat, , ...)
::oPlay:caption := "Play"
::oPlay:tabStop := .T.
::oPlay:activate := {|| WA_SEND( WA_PLAY) }
::oPause := XbpPushButton():new( ::oStat, , ...)
::oPause:caption := "Pause"
::oPause:tabStop := .T.
::oPause:activate := {|| WA_SEND( WA_PAUSE)}
::oNext := XbpPushButton():new( ::oStat, , ...)
::oNext:caption := "Next"
::oNext:tabStop := .T.
::oNext:activate := {|| WA_SEND( WA_NEXT) }
FUNCTION WA_SEND( nCommand )
LOCAL oDlg
LOCAL aTasklist
LOCAL aSize := { 0, 0 }
LOCAL aPos := { 0, 0 }
LOCAL lRunnin := .F.
LOCAL i
LOCAL nHwnd := 0
LOCAL cWind
LOCAL cNaam := "WINAMP"
oDlg := XbpDialog() :new( AppDesktop(),, aPos, aSize,, .F. )
oDlg:clipSiblings := .T.
oDlg:drawingArea:ClipChildren := .T.
oDlg:create()
setAppFocus( oDlg )
aTasklist := GetTaskList( oDlg:gethWnd( ) )
FOR i = 1 TO LEN( aTasklist )
cWind := TRIM( UPPER( SUBSTR( aTasklist[ i ], 9 ) ) )
cWind := SUBSTR( cWind, 1, LEN( cWind ) - 1 )
// suche nach "WINAMP" in der Taskliste
IF TRIM( UPPER( cNaam ) ) $ cWind
nHwnd := VAL( LEFT( aTasklist[ i ], 8 ) )
SendMessageA( nHwnd, WM_COMMAND, nCommand, 0 )
ENDIF
NEXT
RETURN nHwnd
Möglichkeiten von WMP.OCX ( oder VLC ) den es fehlen ja die
Callback Slots z.b. Sliderbar für die Positions Anzeige etc. so das
du keine "Rückmeldung" für dein DLLCALL hast ... das müsstest du
dir alles "per Hand" zusammen stricken.
gruss by OHR
Jimmy
Jimmy
-
- Rekursionen-Architekt
- Beiträge: 417
- Registriert: Mo, 17. Sep 2007 18:20
- Wohnort: Senftenberg
- Kontaktdaten:
Re: globale Tastenkombinationen
Deswegen soll das ja auch über den Mediaplayer laufen.
Nur wüsste ich nicht, wie ich dieses RegisterHotkey und die Eventabfrage in Xbase einbinden kann?
Nur wüsste ich nicht, wie ich dieses RegisterHotkey und die Eventabfrage in Xbase einbinden kann?
Viele Grüße
Stevie
Stevie
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: globale Tastenkombinationen
hi,
Tastatur erzeugt werden und "genormt" sind ? nimm doch die Events ...
wenn du nur deine "eigenen" definieren will und dich nicht durch die API
von "SendMessage" arbeiten willst dann verwende doch ein 3-party
Tool was dir deine Tastatur "belegen" kann ... dem würde ich nun wieder
die WM_COMMAND zu fressen geben ...
... oder besorge dir doch eine X10 USB Remote-Control die "lernfähig"
ist. Dort wird meisten auch passende Software mitgeliefert die für WMP,
WinAMP und andere Player etc. ein "Profil" schon mitbringen.
sagte ich nicht das die WMP Events für die Hotkeys über die "Multimedia"stevie hat geschrieben: Deswegen soll das ja auch über den Mediaplayer laufen.
Nur wüsste ich nicht, wie ich dieses RegisterHotkey und die Eventabfrage in Xbase einbinden kann?
Tastatur erzeugt werden und "genormt" sind ? nimm doch die Events ...
wenn du nur deine "eigenen" definieren will und dich nicht durch die API
von "SendMessage" arbeiten willst dann verwende doch ein 3-party
Tool was dir deine Tastatur "belegen" kann ... dem würde ich nun wieder
die WM_COMMAND zu fressen geben ...
... oder besorge dir doch eine X10 USB Remote-Control die "lernfähig"
ist. Dort wird meisten auch passende Software mitgeliefert die für WMP,
WinAMP und andere Player etc. ein "Profil" schon mitbringen.
gruss by OHR
Jimmy
Jimmy
Re: globale Tastenkombinationen
Ich rufe das hier mal ins leben zurück.
Ich will zwar nichts mit dem WMP machen und ich will auch keinen MP3 Player bauen, aber ich würde mir gerne einen globalen Hotkey regestrieren.
Ich habe schon mehrere aufrufe für die Funktion RegisterHotKey probiert. Mit handel vom Fenster / Prozess und auch mit der Id die mir GlobalAddAtom
zurück gibt.
Ich hab es soweit gelöst das ich folegenden code habe:
In meiner Main methode warte ich nun auf das Event was theoretisch von windows kommen sollte mit dem Code 786 :
Nur leider kommt dieses Event nie an. Kennt jemand da eine Lösung für ?
Ich will zwar nichts mit dem WMP machen und ich will auch keinen MP3 Player bauen, aber ich würde mir gerne einen globalen Hotkey regestrieren.
Ich habe schon mehrere aufrufe für die Funktion RegisterHotKey probiert. Mit handel vom Fenster / Prozess und auch mit der Id die mir GlobalAddAtom
zurück gibt.
Ich hab es soweit gelöst das ich folegenden code habe:
Code: Alles auswählen
nHwd := FindWindowA( , 'Hauptmenü' )
*nHwd := apiGetWindowThreadProcessId( nHwd)
nRet := GlobalAddAtomA( cID)
IF .NOT. nRet == 0
nRegister := RegisterHotKey( , nRet, 2, 123)
IF nRegister == 0
* fehler
nEr := GetLastError()
altd()
*Fehlercodes hier finden
*http://www.pc-library.com/errors/error-code/1408-0x580/
ELSE
* kein fehler
altd()
ENDIF
ENDIF
Code: Alles auswählen
DO WHILE nEvent <> xbeP_Close
* Eventhandler
IF nEvent == 786
altd()
ENDIF
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: globale Tastenkombinationen
hi,
Du willst "in" Xbase++ Events "empfangen" ?
Bei disem Thread ging es aber um das "senden" per RegisterHotkey() oder SendMessageA() an das "Handle" eine "anderen" Fenster.
Man kann nicht "so" einfach Events aus der Windows Queue per Xbase++ "entnehmen" ... diese werden, wenn es nicht Xbase++ betrifft "ausgefiltert"
wenn du eine activeX hast muss du :subscribeEvent() benutzen oder dir einen COMeventHandler() schreiben.
ansonsten kannst du dir ja man das YUKON Project ansehen. Hannes hat genau an der Stelle angesetzt.
Du willst "in" Xbase++ Events "empfangen" ?
Bei disem Thread ging es aber um das "senden" per RegisterHotkey() oder SendMessageA() an das "Handle" eine "anderen" Fenster.
Man kann nicht "so" einfach Events aus der Windows Queue per Xbase++ "entnehmen" ... diese werden, wenn es nicht Xbase++ betrifft "ausgefiltert"
wenn du eine activeX hast muss du :subscribeEvent() benutzen oder dir einen COMeventHandler() schreiben.
ansonsten kannst du dir ja man das YUKON Project ansehen. Hannes hat genau an der Stelle angesetzt.
gruss by OHR
Jimmy
Jimmy
Re: globale Tastenkombinationen
Also nochmal : Ich regestrier mit der API Funktion RegisterHotkey bei windows für mein Programm ein HotKey. Wird dieser nun gedrückt sendet windows ein Event an mein Programm ( Laut API beschreibung in der MSDN) nur leider kommt das Event nicht in meiner Schleife an. Kann es sein das es verworfen wird oder ähnliches ?
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: globale Tastenkombinationen
sage ich doch, Xbase++ kann nicht "so" (einfach) aus der Windows Event Queue "empfangen".C.Muehle hat geschrieben:... nur leider kommt das Event nicht in meiner Schleife an. Kann es sein das es verworfen wird oder ähnliches ?
siehe dir mal YUKON an http://www.knowlexbase.com/en/index.html, Hannes hat sich mal mit sowas beschäftigt
gruss by OHR
Jimmy
Jimmy
Re: globale Tastenkombinationen
Okay da scheint es eine Lösung dirn zu geben, aber ist es nicht auch ohne diese Zusatz Software möglich irgendwie dieses Event durch zubekommen ? Kann man nicht ein neues Event bei Xbase regestrieren damit es empfangen wird ?
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: globale Tastenkombinationen
"pure" Xbase++ kann, ausser bei activeX mit :subscribeEvent(), nur seine "eigenen" Events empfangen.C.Muehle hat geschrieben:Okay da scheint es eine Lösung dirn zu geben, aber ist es nicht auch ohne diese Zusatz Software möglich irgendwie dieses Event durch zubekommen ? Kann man nicht ein neues Event bei Xbase regestrieren damit es empfangen wird ?
gruss by OHR
Jimmy
Jimmy
-
- Rekursionen-Architekt
- Beiträge: 315
- Registriert: Mo, 16. Okt 2006 13:04
- Wohnort: Region Stuttgart
Re: globale Tastenkombinationen
Hallo,
in http://www.xbaseforum.de/viewtopic.php? ... &sk=t&sd=a findest du ein kleines .obj-Modul, subclass.obj, mit dem du genau das erreichen kannst. Ein Codeschnipsel, der zeigt wie, folgt später!
Gruß,
Günter
in http://www.xbaseforum.de/viewtopic.php? ... &sk=t&sd=a findest du ein kleines .obj-Modul, subclass.obj, mit dem du genau das erreichen kannst. Ein Codeschnipsel, der zeigt wie, folgt später!
Gruß,
Günter
Re: globale Tastenkombinationen
Danke für die antwort Günter.
Da bin ich mal gespannt auf den Codeshnipsel der noch folgt
Da bin ich mal gespannt auf den Codeshnipsel der noch folgt
-
- Rekursionen-Architekt
- Beiträge: 315
- Registriert: Mo, 16. Okt 2006 13:04
- Wohnort: Region Stuttgart
Re: globale Tastenkombinationen
Hallo C.,
du findet ihn in der Wissensbasis unter http://www.xbaseforum.de/viewtopic.php?f=16&t=4078.
Gruß,
Günter
du findet ihn in der Wissensbasis unter http://www.xbaseforum.de/viewtopic.php?f=16&t=4078.
Gruß,
Günter