So deaktivieren Sie einen monitor mit VB.NET code
Wie schalte ich einen monitor mit VB.NET code? OK, eigentlich fand ich die C# - Lösung. Aber ich brauche das VB.NET Lösung. Ich habe versucht ein online-C# VB.NET Konverter, aber der Konverter beschwert sich, dass es Fehler in ihm.
Wie kann der folgende C# - code übersetzt werden VB.NET?
using System.Runtime.InteropServices; //to DllImport
public int WM_SYSCOMMAND = 0x0112;
public int SC_MONITORPOWER = 0xF170; //Using the system pre-defined MSDN constants that can be used by the SendMessage() function .
[DllImport("user32.dll")]
private static extern int SendMessage(int hWnd, int hMsg, int wParam, int lParam);
//To call a DLL function from C#, you must provide this declaration.
private void button1_Click(object sender, System.EventArgs e)
{
SendMessage( this.Handle.ToInt32() , WM_SYSCOMMAND , SC_MONITORPOWER ,2 );//DLL function
}
UPDATE:
Ich die online-Entwickler-Fusion-Konverter.
- Welche Fehler haben Sie?
- Der Konverter wahrscheinlich beschwert sich, weil es gibt keine Klasse-Konstrukt in diesem code. Versuchen Sie das einwickeln alles nach den using-Anweisung nach der letzten Zeile in diese:
class MonitorShutdown { ...code here }
. - Beachten Sie, dass sowohl die C# - code und den übersetzten code-mäßig schrecklich. Ein
hWnd
sollte einIntPtr
, nicht einint
. Und das eine Magische Konstante (2
) im code ist auch nicht so eine gute Idee. - Rudolph: ich weiß nicht, C# oder Win32-API. Wenn Sie die perfekte Antwort, dann tun Sie es bitte. Es wird mir helfen und alle zukünftigen Besucher.
- versuchen Sie, out codechanger.com - entfernte ich die Kommentare im code und es perfekt umgesetzt;)
- In Bezug auf die überprüfung der aktuellen monitor-Zustand, dies kann relevant sein stackoverflow.com/questions/203355/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen, diese
Ja, die Erklärungen in der akzeptierten Antworten sind nicht korrekt. Zufällige Fehler möglich ist auf einem 64-bit-version von Windows, da werden die übergebenen Argumente haben die falsche Größe. Sie sollte wie folgt Aussehen:
Könnte man hinzufügen, ein prüfen auf den Rückgabewert von SendMessage(), sollte es wieder IntPtr.Null. Nicht so sicher, ob es sinnvoll ist, wird es ziemlich offensichtlich für den Benutzer, der den Befehl hat nicht funktioniert, für einige reason.
Me.Handle.ToInt32()
zuMe.Handle
. Aber ist es notwendig, cast/convertSC_MONITORPOWER
undMonitorShutoff
zuIntPtr
?IntPtr
- Konstruktor anstelle der expliziten Konvertierung etwas übersichtlicher? alsoNew IntPtr(SC_MONITORPOWER)
ich denke, die 3 weniger charachters (+1 oder so)dieser funktioniert auf Windows 7 mit VB 2008.
und keine sorgen über, drehen Sie den monitor wieder ein, denn dies ist genau wie bei "Bildschirm ausschalten" in den Energieoptionen.
schaltet sich der monitor aus-und wieder einschalten, müssen Sie entweder drücken Sie eine beliebige Taste auf der Tastatur oder bewegen Sie Ihre Maus.