SwitchScreen: Skift Primær Screen
Jeg har for nyligt anskaffet mig en splinter ny computer til at spille Left 4 Dead på! Så sker der det at min søster kommer forbi for at se nogle serier på min fine projektor og jeg sidder og leder efter fn+f8 knappen, der er på min laptop til at skifte til projektoren.
Det viser sig selvfølgelig at sådan en knap ikke findes på en stationær pc og der ikke er en nem måde at skifte til projektoren fordi NVIDIA ikke har lavet nView til Vista og man derfor ikke kan bruge det til at binde en Hotkey til at skifte skærm, så jeg måtte ind i NVIDIA Control Panel for at vælge min projektor fra en drop-down boks…
Det gik mig selvfølgelig på under hele besøget, så da Sine var ude af døren fyrede jeg op for Visual Studio 2008, startede et C# projekt og kastede mig over klassen Screen, den har jo en PrimaryScreen attribute… Den er bare kun get, så deadend. Så jeg gik på google, og til min overraskelse var der ikke rigtig nogen, der havde løst det problem særligt specifikt.
Jeg fandt først MSDN artiklen om ChangeDisplaySettingsEx, på dette tidspunkt havde jeg givet op på C#, orkede ikke at lave alt det P/Invoke og der var jo ingen, der havde gidet at gøre arbejdet for mig.
Så med C++ under armen og artiklen samt denne forum post og det fine eksempel kode der er linket der, kogte jeg et lille konsol program sammen der finder primary screen, samt den første secondary screen og bytter rundt på de 2.
Hvis du har lyst til at vide præcist hvordan skidtet virker, så send mig en mail eller skriv en kommentar. Hvis du skal bruge det i .NET så kig på P/Invoke og sig til hvis du har brug for hjælp. (Det er lidt en rodet omgang)
Slut på rant. Det er sent og du vil jo bare have programmet (og/eller kildekoden):
Oh ye, P.S: Lige et hurtigt tak til Progressive Media for at kaste mig ud i C++ hos dem, har jeg fået så meget erfaring ved at jeg hurtigt og smertefrit fik sat et C++ projekt op og var i gang med at kode C, som også nu virker noget mindre farligt ^^