W programie C++ uruchomionym na Win7, czy istnieje sposób na sfałszowanie ruchu myszy lub coś w tym stylu, tylko po to, aby wygaszacz ekranu nie został uruchomiony, a system nie przeszedł w stan uśpienia? Szukam minimalnego podejścia i wolę nie używać .NET. Dzięki, -niedzielaJak mogę zapobiec wygaszaczom ekranu i zasypianiu podczas wykonywania mojego programu?
Odpowiedz
Nie zadzieraj z ustawieniami wygaszacza ekranu, użyj SetThreadExecutionState. Jest to API do informowania okien na fakt, że aplikacja jest aktywny:
umożliwia aplikacji do poinformowania systemu z że jest w użyciu, co zapobiegając system przed wejściem snu lub wyłączenie wyświetlacza podczas gdy aplikacja jest uruchomiona.
i
aplikacje multimedialne, takie jak wideo graczy i zastosowań prezentacyjnych, musi używać ES_DISPLAY_REQUIRED kiedy wyświetlania wideo na długie okresy czasu bez interwencji użytkownika
Funkcja SetThreadExecutionState() doskonale nadaje się do kontrolowania systemu i wyświetlania stanu uśpienia, ale * nie * zapobiega uruchamianiu wygaszacza ekranu. Przynajmniej funkcja doc mówi, że tak nie będzie. – naor
Korekta: chociaż strona MSDN dla tej funkcji stwierdza, że "Ta funkcja nie zatrzymuje wykonywania wygaszacza ekranu." Wywołanie z ES_DISPLAY_REQUIRED w rzeczywistości uniemożliwia uruchomienie wygaszacza ekranu. – naor
jest to również sposób na przejście (przez p/invoke), jeśli używasz .NET - http://pinvoke.net/default.aspx/kernel32.SetThreadExecutionState –
Nie jestem pewien, dlaczego musisz się do tego odwołać. Proste wyłączenie tych opcji w ustawieniach zasilania zrobi.
Co próbujesz osiągnąć, robiąc to. Czy twoja aplikacja jest usługą. Jeśli tak jest, nie musisz się tym martwić.
Jeśli twoja aplikacja jest aplikacją interfejsu użytkownika, również nie mogę myśleć o ważnym przypadku użycia.
W każdym razie potrzebujemy więcej informacji.
Powiedz, że jest to długie autoodtwarzanie do grania w grę, w której wprowadzanie użytkownika nie jest wymagane, nie chcesz, aby wygaszacz ekranu przeszkadzał użytkownikowi – gldraphael
Zazwyczaj jest to szczególnie pomysł zły. Pulpit należy do użytkownika aplikacji, , a nie.
Jeśli uruchomiłem aplikację, która wyłączyła mój wygaszacz ekranu (lub poruszałem się po ikonach na pulpicie lub dodałem się do moich różnych pasków narzędzi szybkiego dostępu) bez mojej zgody, to zostanie ono rzucone całkiem szybko na ucho.
A jeśli jesteś użytkownik, , nie zrób to w swojej aplikacji. Zmienić go ręcznie jak reszta z nas :-)
Jeśli musi zrobić (i zachęcam, aby nie, ale może czuć się swobodnie zignorować), nie sądzę sposób zmieniła się od NT. Używasz SystemParametersInfo
z SPI_SETSCREENSAVEACTIVE
, aby zmienić zachowanie. Są one w pamięci user32.dll
.
Ale mam mgliste wspomnienie widząc problemy zgłoszone z użyciem tej metody pod Win7 i myślę, że rozwiązaniem była zmiana rejestru, ustawienie ScreenSaveActive
pod HKEY_CURRENT_USER\Control Panel\Desktop
do 0
(iz powrotem do 1
kiedy skończysz).
powiedzieć, że jest to długi * autoodtwarzanie *, który może być odtwarzany podczas gry, w której wprowadzanie użytkownika nie jest wymagane. nie chcesz, żeby wygaszacz ekranu przeszkadzał Twojemu użytkownikowi – gldraphael
Zły pomysł? a co z odtwarzaczami multimedialnymi? –
To nie jest zły pomysł, każdy przyzwoity odtwarzacz multimedialny to robi ... Poszukaj funkcji SystemParametersInfo(SPI_SETSCREENSAVEACTIVE ...)
w api Win32, powinno to wystarczyć.
Nie to robią odtwarzacze multimediów. Zobacz moją odpowiedź. –
- 1. Jak zapobiec zasypianiu systemu Windows podczas budowania rozwiązania?
- 2. Jak mogę sprawdzić DBNull podczas wykonywania mojego polecenia tylko raz?
- 3. Jak zapobiec uszkodzeniu mojego gita?
- 4. Wykryj, kiedy użytkownicy robią zrzuty ekranu mojego programu
- 5. Jak mogę zapobiec przepełnieniu stosu funkcji mojego Ackermana?
- 6. Jak programowo zapobiegać zasypianiu komputera z systemem Linux lub włączaniu wygaszacza ekranu?
- 7. Drukowanie kodu źródłowego podczas wykonywania programu
- 8. Jak zapobiec automatycznemu obracaniu ekranu na tablecie?
- 9. W WPF, w jaki sposób mogę zapobiec nadpisaniu mojego stylu?
- 10. Jak mogę uruchomić inną aplikację w panelu mojego programu C#?
- 11. Jak mogę przeprowadzić test mutacji mojego programu Java?
- 12. Czy mogę zapobiec zawieszeniu się telefonu na stronie internetowej?
- 13. Jak zapobiec błędowi przekroczenia limitu czasu podczas wykonywania procedury składowania przy użyciu polecenia SqlCommand?
- 14. Błąd podczas wykonywania aapt: Nie można uruchomić programu
- 15. Snoop nie rozpoznaje mojego programu
- 16. Jak mogę uzyskać stan programu?
- 17. W jaki sposób mogę utworzyć diagram przepływu mojego programu?
- 18. Jak mogę ustawić ccshared = -fPIC podczas wykonywania ./configure?
- 19. Nieobowiązkowe przełączniki kontekstowe: jak mogę im zapobiec?
- 20. Czarne zdjęcia podczas robienia zrzutów ekranu za pomocą programu PrintWindow
- 21. Jak zmienić katalog roboczy dla mojego programu?
- 22. com.google.zxing.NotFoundException wyjątek pojawia się podczas wykonywania podstawowego programu java?
- 23. Jak mogę wyłączyć wyświetlanie Centrum powiadomień podczas rozwijania ekranu?
- 24. Jak mogę uzyskać tryb paredit podczas wykonywania wyrażenia eval?
- 25. Jak zapobiec eksportowaniu niektórych metod HTTP z mojego MongoRepository?
- 26. Automatyczne wykonywanie zrzutów ekranu okna programu
- 27. Jak zapobiec pliku przekierowanie z danymi programu do VirtualStore \ ProgramData
- 28. zapobiec przechwytywaniu ekranu w aplikacjach na Androida
- 29. Jak mogę zapobiec ładowaniu pakietu przez R.?
- 30. Wysyłanie danych do mojego widżetu (ekranu głównego)
dlaczego nie zmieniasz ustawienia wygaszacza ekranu ani ustawienia zasilania systemu? –
Jako użytkownik twojego programu _I_ chcę sam zdecydować, czy chcę, aby wykonanie jakiegoś programu zostało spowolnione przez niektóre wygaszacze ekranu. Jeśli jesteś swoim własnym użytkownikiem, zawsze możesz zmienić ustawienia systemu samodzielnie. – sbi
Właściwie to jest poprawne pytanie. Wydaje mi się, że Windows Media Player robi to podczas odtwarzania wideo, a następnie jest uzasadniony (nie chcesz stać co pięć minut i przesuwać myszy tylko po to, aby cieszyć się swoim filmem, nie wyłączając również wygaszacza ekranu tylko po to, aby obejrzeć film jest przesadny). – Tomek