Function IsKeyPressed (ASYNCKEY) Funzt nich...

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

ReLeNtLeSS

Betreff: Function IsKeyPressed (ASYNCKEY) Funzt nich...

BeitragDo, Sep 06, 2007 14:09
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo leute,

ersma ein ENTSCHULDIGUNG an D2006 und weitere wegen meinen ersten Posts. Die wissen schon was ich meine Wink

Nun, kommen wir zu meinem Problem, ich hab versucht etwas zu Proggen, das im Hintergrund läuft und auf tastenmdrücke reagiert

nun habe ich die iskeypressed function von david genommen, und die so eingebaut:

Code: [AUSKLAPPEN]

Const VK_F11% = $7A
Const VK_F12% = $7B


If IsKeyPressed( VK_F11 ) Then lpstrCommand$="Set CDaudio door open" mciExecute (lpstrCommand$)
If IsKeyPressed( VK_F12 ) Then lpstrCommanda$="Set CDaudio door closed" mciExecute (lpstrCommanda$)

Function IsKeyPressed( vKey% )
   Return ( GetAsyncKeyState( vKey ) Shr 16 ) And 1
End Function


Funktioniert auch, aber nur, wenn ich IM Fenster des Proggys bin, aber es soll ja auch ausserhalb probieren... kann mir BITTE wer helfen?[/b][/u]
 

Dreamora

BeitragDo, Sep 06, 2007 14:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Mit hooks.

normaler BlitzCode bleibt stehen wenn das fenster net aktiv is, wie sich das für Anwendungen gehört.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

ChristianK

BeitragDo, Sep 06, 2007 14:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Dreamora hat Folgendes geschrieben:
normaler BlitzCode bleibt stehen wenn das fenster net aktiv is

Warum sollte das so sein?

Das Beispiel funktioniert nämlich einwandfrei, wenn man die Tastenabfrage in eine Schleife tun würde.
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT
 

Dreamora

BeitragDo, Sep 06, 2007 14:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Stimmt, ohne Grafikfenster reagiert BM nicht auf den Suspend Event.
Mein Fehler, vergesse immer ma wieder das ein Grossteil der automatischen Eventreaktionen an das Graphics Fenster gebunden sind.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

BladeRunner

Moderator

BeitragDo, Sep 06, 2007 16:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Suchst Du das jetzt für Blitzmax oder Blitzbasic. Einmal fragst Du hier, dann wieder dort... Es wäre gut wenn Du das klären würdest.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

ReLeNtLeSS

BeitragDo, Sep 06, 2007 18:27
Antworten mit Zitat
Benutzer-Profile anzeigen
sry is für blitzplus gemeint...

probiers ma mit schleife

/edit:

mein gesamter code:
Code: [AUSKLAPPEN]

AppTitle "DVDHotkey"

Const VK_F11% = $7A
Const VK_F12% = $7B

window=CreateWindow("DVDHotkey",0,0,80,100)
button1=CreateButton("Quit",0,0,80,20,window,1)


Repeat
If IsKeyPressed( VK_F11 ) Then lpstrCommand$="Set CDaudio door open" mciExecute (lpstrCommand$)
If IsKeyPressed( VK_F12 ) Then lpstrCommanda$="Set CDaudio door closed" mciExecute (lpstrCommanda$)

 ereignis=WaitEvent()
 If ereignis=$401 And EventSource()=button1 Then End
Forever

Function IsKeyPressed( vKey% )
   Return ( GetAsyncKeyState( vKey ) Shr 16 ) And 1
End Function


funzt nich .... Sad
 

ChristianK

BeitragDo, Sep 06, 2007 18:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Kann auch gar nicht gehen, weil

Code: [AUSKLAPPEN]
ereignis=WaitEvent()

das Programm anhält, bis BlitzPlus ein Event schickt. Die Tastaturabfrage muss aber ständig ausgeführt werden.
Um das Problem zu lösen, könntest du einen Timer erstellen und immer wenn er tickt, die IsKeyPressed-Funktion ausführen.
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT
 

Dreamora

BeitragDo, Sep 06, 2007 18:54
Antworten mit Zitat
Benutzer-Profile anzeigen
verschoben da falsches Board.
BM ist für BM net für die alten Blitz
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

ReLeNtLeSS

BeitragDo, Sep 06, 2007 19:07
Antworten mit Zitat
Benutzer-Profile anzeigen
ProGamer.Coder hat Folgendes geschrieben:
Kann auch gar nicht gehen, weil

Code: [AUSKLAPPEN]
ereignis=WaitEvent()

das Programm anhält, bis BlitzPlus ein Event schickt. Die Tastaturabfrage muss aber ständig ausgeführt werden.
Um das Problem zu lösen, könntest du einen Timer erstellen und immer wenn er tickt, die IsKeyPressed-Funktion ausführen.


Moment, wenn es daran liegt könnte ich den button auch einfach entfernen, der is nich notwendig... ich sag bescheit ob es klappt!

Silver_Knee

BeitragDo, Sep 06, 2007 19:31
Antworten mit Zitat
Benutzer-Profile anzeigen
mach doch einfach Waitevent(100) das generiert nach 100 millisekunden automatisch ein $0 event
 

ChristianK

BeitragDo, Sep 06, 2007 19:40
Antworten mit Zitat
Benutzer-Profile anzeigen
@Silver_Knee
Ich wusste nicht, dass sowas geht. Hab nämlich nur MaxGUI. Smile

@ReLeNtLeSS
Du musst WaitEvent trotzdem benutzen, wenn du das Fenster weiterhin behalten willst.
Wenn du WaitEvent nicht benutzt, werden auch die windowseigenen Nachrichten nicht verarbeitet und das Fenster wird unbrauchbar.
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT

ReLeNtLeSS

BeitragDo, Sep 06, 2007 21:52
Antworten mit Zitat
Benutzer-Profile anzeigen
jojo^^

aber das fenster is unütz^^ es funzt es alles so wie ich es haben wollte... programm läuft nur als task und nich fenster/tray, und nimmt die keys an^^

danke nochmal

mfg

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group