boomboomben
Goto Top

Alternative zum Mausklick

Ich simuliere in meinem Programm (c#) einen Mausklick um den Bildschirm zu wecken. Funktioniert soweit gut.
Wenn allerdings nun eine Anwendung geöffnet ist, kann das zu Problemen führen. Zusätzlich plaziere ich schon vorher den Mauszeiger an den. Bildschirmrand. Aber das gefällt mir nicht.

Gegoogelt habe ich bereits wie wild. Auch mit verschiedene Möglichkeiten der Displaysettings experimentiert. Kein Erfolg.

Alternativ würde mir auch genügen wenn der Mauszeiger immer in der Bildschirmmitte positioniert wird, da dort immer vorab ein Fenster geöffnet wird. Jedoch dann Auflösungsunabhängik...
Gibt es hier vieleicht eine relative Positionierung wie "center" anstelle x/y Absolutangaben?

Content-Key: 318842

Url: https://administrator.de/contentid/318842

Printed on: April 26, 2024 at 11:04 o'clock

Mitglied: 131223
Solution 131223 Oct 23, 2016 updated at 07:26:16 (UTC)
Goto Top
Wieso ein Mausklick zum wecken des Bildschirms ?? Das braucht es nicht, dafür gibt es native Funktionen die den Bildschirm aus dem Standby holen!
Via Win32-Funktion SendMessage(). lässt sich dies machen.
Lenovo X1 Cabon 2015 Touch display per batch abschalten
[DllImport("user32.dll")]  
public static extern IntPtr SendMessage(IntPtr hWnd, Int32 Msg, Int32 wParam, Int32 lParam);

// ....
SendMessage(-1,0x112,0xF170,-1)
Außerdem würde auch schon das Verschieben des Mauszeigers um ein Pixel genügen, da braucht es keinen Klick. Zudem solltest du das nur machen wenn sich die Position der Maus in einem Zeitraum X nicht verändert hat.

Aber besser ist es allemal die native Aufweckfunktion zu nutzen.
Member: BoomBoomBen
BoomBoomBen Oct 23, 2016 at 11:02:07 (UTC)
Goto Top
Native Funktionen sind mir natürlich auch lieber.

bei der von dir beschriebenen Variante habe ich das Problem, dass der Bildschirm zwar angeht, jedoch sofort wieder aus.
Nachdem was ich gelesen habe, ist das Problem die Energieeinstellung. Sobald ein automatisches Aus nach Zeit eingestellt ist, funktioniert diese Art wohl nicht mehr, oder ?
Mitglied: 131223
Solution 131223 Oct 23, 2016 updated at 13:39:36 (UTC)
Goto Top
Zitat von @BoomBoomBen:

Native Funktionen sind mir natürlich auch lieber.

bei der von dir beschriebenen Variante habe ich das Problem, dass der Bildschirm zwar angeht, jedoch sofort wieder aus.
Dann lass die Maus 1 Pixel verschieben, dann wacht die Grafik auch wieder auf.
Nachdem was ich gelesen habe, ist das Problem die Energieeinstellung. Sobald ein automatisches Aus nach Zeit eingestellt ist, funktioniert diese Art wohl nicht mehr, oder ?
Doch den Monitor kannst du damit immer aus dem Sleep holen, für das Aufwecken der Graka reicht das o.g. Verschieben der Mausposition um ein Pixel.

Frage ist doch eigentlich, zu was soll das bei dir tatsächlich dienen?
Member: BoomBoomBen
BoomBoomBen Oct 23, 2016 at 14:06:57 (UTC)
Goto Top
Bewirken soll, dass bei einer Meldung welche in einem Popup dargestellt wird auch eben der Bildschirm an geht.

Um den Zeiger um ein Pixel zu verschieben muss ich vermutlich zuerst die Position ermitteln und dann die neue Absolute senden. Oder gehts auch noch anders?
Member: BoomBoomBen
BoomBoomBen Oct 23, 2016 at 15:27:03 (UTC)
Goto Top
Ich habe es hinbekommen.
Mit einem Pixel funktioniert super.
Vielen Dank. Du hast mir sehr geholfen !!
Member: BoomBoomBen
BoomBoomBen Oct 23, 2016 at 15:36:27 (UTC)
Goto Top
Okay, Pustekuchen. Funktioniert doch nicht.
So sieht mein Code nun aus:
int xPos = System.Windows.Forms.Cursor.Position.X;
int yPos = System.Windows.Forms.Cursor.Position.Y;
System.Windows.Forms.Cursor.Position = new System.Drawing.Point(x: xPos + 1, y: yPos + 1); 
Zusätzlich:
 SendMessage(-1, 0x112, 0xF170, -1);

Wenn der Bildschirm nun wenige Sekunden aus ist, kann ich Ihn Problemlos wecken.
Wenn ich nun ca 15-20 Sekunden warte, geht er wieder nur kurz an und dann wieder aus....grrrrr....