Einschalten des Bildschirms (Event?)

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von BjöNi.

    Einschalten des Bildschirms (Event?)

    Hallo,
    ich möchte ein Event bekommen, sobald der Bildschirm eingeschaltet wird. Damit meine ich nicht, wenn am Bildschirm selber die Powertaste gedrückt wird, sondern ob Windows ein Signal an den Bildschirm sendet oder eben nicht. Zur Not würde es auch eine Funktion tun, die mir zurückgibt, ob der Bildschirm an oder aus ist.
    Ich habe es bereits über die Funktionen get_Power und get_Status der Quartz.dll probiert, die es laut MSDN gibt, da hatte ich aber das Problem, dass die Einstiegspunkte get_Power und get_Status nicht gefunden werden können.
    Ich weiß auch, wie man den Bildschirm per SendMessage an- und ausschaltet, aber das nützt mir leider nichts.
    Wäre schön, wenn mir jemand helfen könnte... :thumbup:
    Thx + Mfg, BjöNi :)
    Wie meinst du das? Habe mich halbtot gesucht und dazu auch auf MSDN einen Artikel gefunden, der allerdings nur die SystemInformation-Klasse behandelt (Eigenschaften wie z.B. der Batteriestatus)... ?(
    Danke, aber ich bin scheinbar einfach zu blöd dazu (habe es mir runtergeladen):
    C#-Code

    C-Quellcode

    1. /// <summary>
    2. /// Overloaded System Windows Handler.
    3. /// </summary>
    4. /// <param name="m">Message <see cref="Message"/> structure</param>
    5. protected override void WndProc(ref Message m)
    6. {
    7. switch (m.Msg)
    8. {
    9. case WM_POWERBROADCAST:
    10. switch (m.WParam.ToInt32())
    11. {
    12. //value passed when system is going on standby / suspended
    13. case PBT_APMQUERYSUSPEND:
    14. List<string> arr = Properties.Settings.Default.StandDownApps.Split(',').ToList();
    15. foreach (string item in arr)
    16. {
    17. foreach (Process p in System.Diagnostics.Process.GetProcessesByName(item))
    18. {
    19. try
    20. {
    21. //Exiting the applications when going into standby
    22. p.Kill();
    23. p.WaitForExit(3600000); // 1 min timeout
    24. }
    25. catch
    26. {
    27. // process was terminating or can't be terminated - deal with it
    28. }
    29. }
    30. }
    31. break;
    32. //value passed when system is resumed after suspension.
    33. case PBT_APMRESUMESUSPEND:
    34. arr = Properties.Settings.Default.StandUpApps.Split(',').ToList();
    35. foreach (string item in arr)
    36. {
    37. //Starting the applications when coming up from standby
    38. System.Diagnostics.Process.Start(item);
    39. }
    40. break;
    41. //value passed when system Suspend Failed
    42. case (PBT_APMQUERYSUSPENDFAILED):
    43. //value passed when system is suspended
    44. case (PBT_APMSUSPEND):
    45. //value passed when system is resumed automatically
    46. case (PBT_APMRESUMEAUTOMATIC):
    47. //value passed when system is resumed from critical suspension possibly caused by a battery failure
    48. case (PBT_APMRESUMECRITICAL):
    49. //value passed when system is low on battery
    50. case (PBT_APMBATTERYLOW):
    51. //value passed when system power status changed from battery to AC power or vice-a-versa
    52. case (PBT_APMPOWERSTATUSCHANGE):
    53. //value passed when OEM Event is fired. Not sure what that is??
    54. case (PBT_APMOEMEVENT):
    55. break;
    56. }
    57. break;
    58. default:
    59. break;
    60. }
    61. base.WndProc(ref m);
    62. }
    Das in VB umzuetzen wäre vmtl. auch kein großes Problem, die Konstanten sind weiter oben in der Klasse definiert.
    Leider sehe ich beim besten Willen keinen Zusammenhang mit meiner Fragestellung da ich nirgendwo eine Konstante à la "PBT_SCREENTURNEDON = ???" finde... ;(