Jak odchytit příkaz na hibernaci a zrušit ho?   otázka

VB.NET

Zdravím,

mám takový problém. Když připojím ke svému PC externí disk přes eSata a během jeho připojení počítač uspím do hibernace tak následně počítač nenaběhne. Je to asi problém FW, ale to není podstatný.

O co mi jde. Chtěl bych odchytávat příkaž na hibernaci (ať už příkazem z tlačítka na klávesnici nebo příkazem z nějakého programu) a pokud by přišel takový příkaz tak bych si zkontroloval zda-li je disk připojen. Pokud by byl připojen tak bych chtěl tento příkaz zrušit a PC nechat zapnuté.

Poradí prosím někdo jak na to? Hledal jsem a zatím jsem nic nenašel :c(

Předem moc děkuji za jakékoliv rady.

Martin

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Vyřešte příčinu problému, ne jeho následky.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Rád bych našel příčinu a odstranil jí, ale zatím se mi to nepodařilo. Nicméně toto řešení co jsem tady nastínil bych použil i jako ochranu toho když např. pomocí WMC nahrávám pořad z TV a omylem stisknu klávesu na hibernaci tak PC se prostě vypne. Mrkvosoft jaksi tuto ochranu sám nezapracoval tak bych to zároveň použil i jako ochranu proti nechtěnému vypnutí během nahrávání...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Můžete odchytit událost PowerModeChanged třídy SystemEvents:

AddHandler Microsoft.Win32.SystemEvents.PowerModeChanged,
  Sub(sender2 As Object, e2 As Microsoft.Win32.PowerModeChangedEventArgs)
    Select Case e2.Mode
      Case Microsoft.Win32.PowerModes.Resume
        ' Počítač se obnovuje z režimu spánku
      Case Microsoft.Win32.PowerModes.StatusChange
        ' Připojen/odpojen zdroj, stav baterie atd.
      Case Microsoft.Win32.PowerModes.Suspend
        ' Počítač přechází do režimu spánku
    End Select
  End Sub

Zdroje:

http://msdn.microsoft.com/en-us/library/... - SystemEvents na MSDN

http://msdn.microsoft.com/en-us/library/... - PowerModeChanged na MSDN

http://msdn.microsoft.com/en-us/library/... - PowerModes na MSDN

nahlásit spamnahlásit spam 0 / 2 odpovědětodpovědět

No tak odchytit okamžik vypnutí by šel tedy takto

    Private Sub PowerModeChanged(ByVal sender As System.Object, ByVal e As Microsoft.Win32.PowerModeChangedEventArgs)
        Select Case e.Mode
            Case Microsoft.Win32.PowerModes.Resume
                'windows is resuming from sleep
            Case Microsoft.Win32.PowerModes.Suspend
                'goodnite windows
        End Select
    End Sub

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        AddHandler Microsoft.Win32.SystemEvents.PowerModeChanged, AddressOf PowerModeChanged
    End Sub

Teď ale jak tomu vypnutí zabránit??? To jsem tam zatím nenašel????

Děkuji za nakopnutí :c)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Jak zabránit přechodu do režimu hibernace nevím, takže obávám se, že s tím Vám bohužel neporadím. Rozhodně to půjde pomocí P/Invoke, ale nebude to jen tak a bohužel si nemohu dovolit věnovat tolik času hledání a testování funkčního řešení.

Nicméně přicházím s alternativním řešením Vašeho problému. Počítač uspat klidně nechte, ale abyste předešel Vašemu problému, během přechodu do režimu spánku externí disk odpojte. Mluvím tady o tom, co se ve Windows označuje jako "Bezpečně vyjmout zařízení". Na CodeProjectu je článek se zdrojovým kódem a ukázkovým programem, který by Vám mohl pomoci.

http://www.codeproject.com/Articles/1353...

Přečtěte si také příspěvky pod článkem, jsou tam nějaké modifikace kódu, které mají pomoci lepší funkčnosti na 64bitové edici Windows 7.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Zjistit přechod do režimu spánku/hibernace problém není, zabránit mu problém je. Pomocí .NET Frameworku ani Windows API Code Packu to nejde, takže jedině pomocí P/Invoke, nebo vůbec.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Já se omlouvám pokud jsem byl špatně pochopen, ale jsem na toto docela alergický, protože na různých nejmenovaných fórech různí lidé nadávají MS do Mrkvosoftu(a rozhodně by to nepříjde jako normální název), ale nevadí jim používat nelegální Windows. Takže se omlouvám.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

No puberťák jste buď vy nebo jen těžce zakomplexovaný člověk, ale to je Váš problém. Buď přispějte k tématu nebo se radši nevyjadřujte když to neumíte. Zde není prostor na honění něčího ega. Děkuji

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Nějaký nakopnutí směrem k P/Invoke by nebylo... ???

Předem díky

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Daná problematika se řeší zde:

http://stackoverflow.com/questions/82393...

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Děkuji prostuduji...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak bohužel moje programátorské znalosti nejsou na tuto problematiku dostatečné takže na to prdím. Zkoušel jsem nějaké ty příkladu z odkazu i ten program Insomnia, ale nic z toho nefunguje. Prostě když zmačknu na klávesnici pro hibernaci tak se proste vypne a nic mu v tom nezabrání... Holt si budu muset dávat i nadále pozor..

Jinak děkuji Všem za konstruktivní rady :c)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Není možnost nastavení v systému? Nevím, který máte a jsou rozdíly mezi verzemi Windows XP, Vista a 7. Mám Windows XP - na klávesnici u stolního PC nemám klávesu k uspání, tak to nezkusím, ale na notebooku se po stisku uspávací klávesy Windows (XP Home) napřed slušně zeptají - nabídnou možnosti uspat, vypnout, storno.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Mám Win7 x64 bohužel po stisku klávesy rovnou zhasíná obrazovka a systém jde do hajan :c(

nahlásit spamnahlásit spam 0 odpovědětodpovědět

A ponechat možnost hibernace je požadováno? Úplně vypnout možnost hibernace jde v registru nebo v zásadách skupiny.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

No hibernaci používám stále, ale právě jsem chtěl aby v okamžiku kdy přijde požadavek na hibernaci tak se zkontrolovalo zda-li je připojen disk pokud ano zrušil by hibernaci..

Ale zkusím zítra mrknout na tu variantu s odpojením disku při hibernaci otázka jestli se to stihne odpojit když už bude hibernace v chodu...

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback