Standby verhindern

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Standby verhindern

    Moin !

    ich habe ein kleines Programm das mittels Timer immer etwas ausfuhrt.

    Die Aktion ist alle 60 Sekunden

    Dennoch habe ich den Eindruck, dass das Laptop in der Nacht in Standby gegangen ist..

    Kann man per Programm den Standby verhindern, wenn das Programm läuft?

    Jan
    @jan99 Wie lautet die Fehlermeldung?
    Eigentlich sind die paar Zeilen Code so easy, dass Du sie allein übersetzen können müsstest.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    der Source ist

    C#-Quellcode

    1. static class WinApi
    2. {
    3. [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
    4. public static extern EXECUTION_STATE SetThreadExecutionState(EXECUTION_STATE flags);
    5. [Flags]
    6. public enum EXECUTION_STATE : uint
    7. {
    8. ES_AWAYMODE_REQUIRED = 0x00000040,
    9. ES_CONTINUOUS = 0x80000000,
    10. ES_DISPLAY_REQUIRED = 0x00000002,
    11. ES_SYSTEM_REQUIRED = 0x00000001
    12. }
    13. }


    die Meldung ist

    Spoiler anzeigen



    Error message:

    CONVERSION ERROR: Conversion for SimpleBaseType not implemented, please report this issue in 'uint' at character 235

    at ICSharpCode.CodeConverter.VB.NodesVisitor.DefaultVisit(SyntaxNode node)

    at Microsoft.CodeAnalysis.CSharp.CSharpSyntaxVisitor`1.VisitSimpleBaseType(SimpleBaseTypeSyntax node)

    at Microsoft.CodeAnalysis.CSharp.Syntax.SimpleBaseTypeSyntax.Accept[TResult](CSharpSyntaxVisitor`1 visitor)

    at Microsoft.CodeAnalysis.CSharp.CSharpSyntaxVisitor`1.Visit(SyntaxNode node)

    at ICSharpCode.CodeConverter.VB.CommentConvertingNodesVisitor.DefaultVisit(SyntaxNode node)

    at Microsoft.CodeAnalysis.CSharp.CSharpSyntaxVisitor`1.VisitSimpleBaseType(SimpleBaseTypeSyntax node)

    at Microsoft.CodeAnalysis.CSharp.Syntax.SimpleBaseTypeSyntax.Accept[TResult](CSharpSyntaxVisitor`1 visitor)

    at ICSharpCode.CodeConverter.VB.NodesVisitor.VisitEnumDeclaration(EnumDeclarationSyntax node)

    at Microsoft.CodeAnalysis.CSharp.Syntax.EnumDeclarationSyntax.Accept[TResult](CSharpSyntaxVisitor`1 visitor)

    at Microsoft.CodeAnalysis.CSharp.CSharpSyntaxVisitor`1.Visit(SyntaxNode node)

    at ICSharpCode.CodeConverter.VB.CommentConvertingNodesVisitor.DefaultVisit(SyntaxNode node)

    at Microsoft.CodeAnalysis.CSharp.CSharpSyntaxVisitor`1.VisitEnumDeclaration(EnumDeclarationSyntax node)

    at Microsoft.CodeAnalysis.CSharp.Syntax.EnumDeclarationSyntax.Accept[TResult](CSharpSyntaxVisitor`1 visitor)

    at ICSharpCode.CodeConverter.VB.NodesVisitor.<VisitClassDeclaration>b__23_0(MemberDeclarationSyntax m)

    at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()

    at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)

    at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)

    at ICSharpCode.CodeConverter.VB.NodesVisitor.VisitClassDeclaration(ClassDeclarationSyntax node)

    at Microsoft.CodeAnalysis.CSharp.Syntax.ClassDeclarationSyntax.Accept[TResult](CSharpSyntaxVisitor`1 visitor)

    at Microsoft.CodeAnalysis.CSharp.CSharpSyntaxVisitor`1.Visit(SyntaxNode node)

    at ICSharpCode.CodeConverter.VB.CommentConvertingNodesVisitor.DefaultVisit(SyntaxNode node)

    at Microsoft.CodeAnalysis.CSharp.CSharpSyntaxVisitor`1.VisitClassDeclaration(ClassDeclarationSyntax node)

    at Microsoft.CodeAnalysis.CSharp.Syntax.ClassDeclarationSyntax.Accept[TResult](CSharpSyntaxVisitor`1 visitor)

    at ICSharpCode.CodeConverter.VB.NodesVisitor.<VisitCompilationUnit>b__15_1(MemberDeclarationSyntax m)

    at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()

    at Microsoft.CodeAnalysis.SyntaxList`1.CreateNode(IEnumerable`1 nodes)

    at Microsoft.CodeAnalysis.SyntaxList`1..ctor(IEnumerable`1 nodes)

    at Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.List[TNode](IEnumerable`1 nodes)

    at ICSharpCode.CodeConverter.VB.NodesVisitor.VisitCompilationUnit(CompilationUnitSyntax node)

    at Microsoft.CodeAnalysis.CSharp.Syntax.CompilationUnitSyntax.Accept[TResult](CSharpSyntaxVisitor`1 visitor)

    at Microsoft.CodeAnalysis.CSharp.CSharpSyntaxVisitor`1.Visit(SyntaxNode node)

    at ICSharpCode.CodeConverter.VB.CommentConvertingNodesVisitor.DefaultVisit(SyntaxNode node)

    at Microsoft.CodeAnalysis.CSharp.CSharpSyntaxVisitor`1.VisitCompilationUnit(CompilationUnitSyntax node)

    at Microsoft.CodeAnalysis.CSharp.Syntax.CompilationUnitSyntax.Accept[TResult](CSharpSyntaxVisitor`1 visitor)

    at ICSharpCode.CodeConverter.VB.CSharpConverter.ConvertCompilationTree(CSharpCompilation compilation, CSharpSyntaxTree tree)

    at ICSharpCode.CodeConverter.VB.CSToVBConversion.SingleFirstPass(Compilation sourceCompilation, SyntaxTree tree)

    at ICSharpCode.CodeConverter.Shared.ProjectConversion.SingleFirstPass(SyntaxTree tree, String treeFilePath)

    at ICSharpCode.CodeConverter.Shared.ProjectConversion.FirstPass()





    Jan

    user32.dll => kernel32dll

    @jan99 Ja, der kommt da iwie nicht klar. Probier mal diesen hier:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System.Runtime.InteropServices
    2. Public Class Form1
    3. <Flags>
    4. Private Enum EXECUTION_STATE
    5. ES_AWAYMODE_REQUIRED = &H40
    6. ES_CONTINUOUS = &H80000000
    7. ES_DISPLAY_REQUIRED = &H2
    8. ES_SYSTEM_REQUIRED = &H1
    9. End Enum
    10. <DllImport("kernel32dll")>
    11. Private Shared Function SetThreadExecutionState(ByVal flags As EXECUTION_STATE) As EXECUTION_STATE
    12. End Function
    13. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    14. SetThreadExecutionState(EXECUTION_STATE.ES_CONTINUOUS Or EXECUTION_STATE.ES_SYSTEM_REQUIRED Or EXECUTION_STATE.ES_DISPLAY_REQUIRED)
    15. End Sub
    16. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    17. SetThreadExecutionState(EXECUTION_STATE.ES_CONTINUOUS)
    18. End Sub
    19. End Class
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „RodFromGermany“ ()

    Moin!

    danke erst einmal.

    Zwei Dinge in diesem Zusammenhang. Was die beiden Buttons betrifft.

    Nur für den Screensave ermöglichen ist in dem Beispiel

    C#-Quellcode

    1. WinApi.SetThreadExecutionState(EXECUTION_STATE.ES_CONTINUOUS | EXECUTION_STATE.ES_SYSTEM_REQUIRED);


    Der Button2 ist aber nicht genau so definiert?!?! Da muss ich noch etwas anhängen - richtig?

    Dann steht oben

    <Flags>


    Was bedeutet das? Oder ist das hier nur zur Ordnung?

    Gruß jan

    bekomme folgende Fehlermeldung:


    Muss ich noch etwas einbinden?

    Jetzt sieht es so aus

    Spoiler anzeigen


    VB.NET-Quellcode

    1. Imports System.Runtime.InteropServices
    2. Public Class Form1
    3. <Flags>
    4. Private Enum EXECUTION_STATE
    5. ES_AWAYMODE_REQUIRED = &H40
    6. ES_CONTINUOUS = &H80000000
    7. ES_DISPLAY_REQUIRED = &H2
    8. ES_SYSTEM_REQUIRED = &H1
    9. End Enum
    10. <DllImport("user32")>
    11. Private Shared Function SetThreadExecutionState(ByVal flags As EXECUTION_STATE) As EXECUTION_STATE
    12. End Function
    13. Private _LastOnlineStatus As Integer = 0 ' -1 ... offline / 0 ... kein Status / 1 .... online
    14. Private _lastPingChange As Date
    15. Private _StartApp As Date
    16. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    17. _StartApp = Date.Now
    18. _lastPingChange = _StartApp
    19. End Sub
    20. Private Sub CheckOnline()
    21. Dim Zeitpunkt As Date = Now
    22. Dim sZeitpunkt As String = Zeitpunkt.ToString("yyyy-MM-dd HH:mm:ss")
    23. Dim IsOnlineStatus As Integer = IsOnline()
    24. Select Case IsOnlineStatus
    25. Case -1
    26. If _LastOnlineStatus <> IsOnlineStatus Then
    27. WritePingLog(String.Format("{0} - offline", sZeitpunkt), Zeitpunkt)
    28. _lastPingChange = Zeitpunkt
    29. End If
    30. _LastOnlineStatus = -1
    31. Case 0
    32. If _LastOnlineStatus <> IsOnlineStatus Then
    33. WritePingLog(String.Format("{0} - ?????", sZeitpunkt), Zeitpunkt)
    34. _lastPingChange = Zeitpunkt
    35. End If
    36. _LastOnlineStatus = 0
    37. Case 1 ' online
    38. If _LastOnlineStatus <> IsOnlineStatus Then
    39. WritePingLog(String.Format("{0} - online", sZeitpunkt), Zeitpunkt)
    40. _lastPingChange = Zeitpunkt
    41. End If
    42. _LastOnlineStatus = 1
    43. End Select
    44. txt_logging.ScrollToCaret()
    45. Label1.Text = "Letzter Pingzeitpunkt: " & Zeitpunkt
    46. End Sub
    47. ''' <summary>
    48. ''' Schreiben der LogMeldung
    49. ''' </summary>
    50. ''' <param name="Message">Text für die Ausgabe</param>
    51. Private Sub WritePingLog(Message As String, PingZeit As Date)
    52. Dim Teiler As Long = 1000
    53. Dim Dauer As Long = CLng(DateDiff(DateInterval.Second, _lastPingChange, PingZeit) / Teiler)
    54. If _StartApp = _lastPingChange Then
    55. txt_logging.AppendText(Message & Environment.NewLine)
    56. Exit Sub
    57. End If
    58. If Dauer > ndown_Interval.Value Then
    59. Dim Diff As String = CStr(Dauer) & " Sekunden"
    60. txt_logging.AppendText(Message & " - " & Diff & Environment.NewLine)
    61. Else
    62. txt_logging.AppendText(Message & Environment.NewLine)
    63. End If
    64. End Sub
    65. Private Sub timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs)
    66. CheckOnline()
    67. End Sub
    68. Function IsOnline() As Integer
    69. Try
    70. If My.Computer.Network.IsAvailable AndAlso My.Computer.Network.Ping("www.google.de", 1000) = True Then Return 1
    71. Catch ex As System.Exception
    72. With txt_logging
    73. .AppendText(ex.ToString & Environment.NewLine)
    74. Return 0
    75. End With
    76. Return -1
    77. End Try
    78. Return -1
    79. End Function
    80. Private Sub Button1_Click(sender As Object, e As EventArgs)
    81. CheckOnline()
    82. End Sub
    83. ''' <summary>
    84. ''' Starten der Auswertung
    85. ''' </summary>
    86. Private Sub bt_start_Click(sender As Object, e As EventArgs) Handles bt_start.Click
    87. ' SetThreadExecutionState(EXECUTION_STATE.ES_CONTINUOUS)
    88. bt_start.Enabled = False
    89. ndown_Interval.Enabled = False
    90. Dim sDateStart As String = Now.ToString("yyyy-MM-dd HH:mm:ss")
    91. With lbl_StartZeitpunkt
    92. .Text = "Start des Loggers: " & sDateStart
    93. Visible = True
    94. End With
    95. With txt_logging
    96. .AppendText("Start: " & sDateStart & Environment.NewLine)
    97. .AppendText(String.Format("Interval {0} sek" & Environment.NewLine, ndown_Interval.Value.ToString))
    98. .AppendText(Environment.NewLine)
    99. .ScrollToCaret()
    100. End With
    101. Dim Sekunden As Integer = CInt(ndown_Interval.Value)
    102. Timer1.Interval = 1000 * Sekunden
    103. Timer1.Enabled = True
    104. AddHandler Me.Timer1.Tick, New System.EventHandler(AddressOf Me.timer1_Tick)
    105. End Sub
    106. End Class


    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „jan99“ ()

    @jan99 Fehler gefunden.
    Bei Dir im Code ist die falsche DLL zugeordnet: mach mal user.dll => kernel32dll.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!