AVI Datei in Fullscreen - Probleme mit Tasten
-
Hallo,
Ich habe vor kurzem begonnen mich mit C++ zu befassen.
Ich verwende Visual C++ 2010 Express Edition.Ich habe es zwar geschafft mittels mciSendString ein .AVI File abspielen zu lassen, aber nun bin ich auf das erste Problem gestoßen.
Konkret: Im Fullscreen Modus werden plötzlich nicht mehr Tastatureingaben ignoriert, d.h. durch Eingabe einer x-beliebigen Taste oder Mausklick, wird die Wiedergabe beendet.
Hier mein Code:
#include <windows.h> // für Sleep #include <conio.h> // für _getch #pragma comment(lib,"winmm.lib") //für MSV C++ int main() { mciSendString("open C:\\TEMP\\INTROTEST.avi", NULL, 0, NULL); // Versuch Tastatureingabe zu deaktivieren // int ilRetVal = 0; // SystemParametersInfo(SPI_SCREENSAVERRUNNING, true, &ilRetVal, NULL); mciSendString("set C:\\TEMP\\INTROTEST.avi file format avi", NULL, 0, NULL); mciSendString("set C:\\TEMP\\INTROTEST.avi time format ms", NULL, 0, NULL); mciSendString("set C:\\TEMP\\INTROTEST.avi video on", NULL, 0, NULL); mciSendString("set C:\\TEMP\\INTROTEST.avi speed 1000", NULL, 0, NULL); mciSendString("play C:\\TEMP\\INTROTEST.avi from 9000 to 22000 fullscreen", NULL, 0, NULL); Sleep(10000); // mciSendString("close C:\\TEMP\\INTROTEST.avi", NULL, 0, 0); }Das interessante dabei: Wenn ich in der Zeile
mciSendString("play C:\\TEMP\\INTROTEST.avi from 9000 to 22000 fullscreen", NULL, 0, NULL);den Text fullscreen entferne, habe ich die Probleme mit Tastatureingaben nicht mehr, aber dafür wird es nicht mehr im Vollbildschirmmodus abgespielt.
Ich habe auch mittels _getch versucht, das ganze irgendwie abzufangen, bin aber klaglos gescheitert. Einige weitere Versuche habe ich auch unternommen, aber habe auch dies nicht geschafft.
Ich habe auch in der MSDN gesucht, bin aber auch dort nicht fündig geworden.
http://msdn.microsoft.com/en-us/library/ms713255
http://msdn.microsoft.com/en-us/library/ms713412
http://msdn.microsoft.com/en-us/library/ms712587Vielleicht hat jemand einen Rat, wie man dies lösen könnte, ohne gleich eine andere Library (libvlc, ...) mit reinzubeziehen, denn da muss ich mit meinem bisherigen Wissen passen...
Grüße,
Moosi
-
Hallo,
ich habe eine Lösung gefunden, und möchte Sie Euch nicht vorenthalten.
Ich verwende BlockInput um sowohl Tastatur und Maus zu unterdrücken.Details siehe:
http://msdn.microsoft.com/en-us/library/ms646290Mein Code sieht nun folgendermaßen aus:
#include <windows.h> // für Sleep #include <conio.h> // für _getch #include <WinUser.h> // für BlockInput #pragma comment(lib,"winmm.lib") //für MSV C++ int main() { BOOL WINAPI BlockInput( __in BOOL fBlockIt ); mciSendString("open C:\\TEMP\\INTROTEST.avi", NULL, 0, NULL); // Versuch Tastatureingabe zu deaktivieren // int ilRetVal = 0; // SystemParametersInfo(SPI_SCREENSAVERRUNNING, true, &ilRetVal, NULL); mciSendString("set C:\\TEMP\\INTROTEST.avi file format avi", NULL, 0, NULL); mciSendString("set C:\\TEMP\\INTROTEST.avi time format ms", NULL, 0, NULL); mciSendString("set C:\\TEMP\\INTROTEST.avi video on", NULL, 0, NULL); mciSendString("set C:\\TEMP\\INTROTEST.avi speed 1000", NULL, 0, NULL); BlockInput(1); mciSendString("window C:\\TEMP\\INTROTEST.avi text penner", NULL, 0, NULL); mciSendString("play C:\\TEMP\\INTROTEST.avi fullscreen", NULL, 0, NULL); // mciSendString("play C:\\TEMP\\INTROTEST.avi from 9000 to 22000", NULL, 0, NULL); // intro(); Sleep(10000); BlockInput(0); mciSendString("close C:\\TEMP\\INTROTEST.avi", NULL, 0, NULL); }