2016-01-27 21 views
5

ChangeDisplaySettingsExで無効になっているモニタを有効にしています。私はそれがロケット科学ではないと思うが、掘り下げた後はまだ不可能に見える。 hereというMicrosoftのコードサンプルに基づいて、すべてのセカンダリディスプレイを無効にする方法が見つかりました。作業には基本的な微調整だけが必要でしたが、再付着は決して働きませんでした。私は何をしようとしていたことだった。WinAPIでディスプレイデバイスを無効にする

1.初期DisplayDevice

BOOL   FoundSecondaryDisp = FALSE; 
DWORD   DispNum = 0; 
DISPLAY_DEVICE DisplayDevice; 
LONG   Result; 
TCHAR   szTemp[200]; 
int    i = 0; 
DEVMODE defaultMode; 
ZeroMemory(&DisplayDevice, sizeof(DisplayDevice)); 
DisplayDevice.cb = sizeof(DisplayDevice); 

2.すべてのデバイス

while (EnumDisplayDevices(NULL, DispNum, &DisplayDevice, 0)) 
{ 
    ZeroMemory(&defaultMode, sizeof(DEVMODE)); 
    defaultMode.dmSize = sizeof(DEVMODE); 
    //point 3 goes here 
} 

3.検出デタッチデバイスを探す

if (!(DisplayDevice.StateFlags & DISPLAY_DEVICE_ATTACHED_TO_DESKTOP)) 

4.最終ポイント

DEVMODE DevMode; 
ZeroMemory(&DevMode, sizeof(DevMode)); 
DevMode.dmSize = sizeof(DevMode); 
DevMode.dmFields = DM_POSITION | DM_PELSWIDTH | DM_PELSHEIGHT; 
DevMode.dmPelsWidth = 1920; 
DevMode.dmPelsHeight = 1080; 
Result = ChangeDisplaySettingsEx(DisplayDevice.DeviceName, &DevMode, NULL, CDS_UPDATEREGISTRY, NULL); 
ChangeDisplaySettingsEx(NULL, NULL, NULL, NULL, NULL); 

デバイスを有効にしDISP_CHANGE_FAILEDコードを返し、それが任意の表示を有効にしません。誰かに似たような経験がありましたか?

+0

を入力いただき、ありがとうございます!モニタ**は 'ChangeDisplaySettingsEx()'で無効になっていました。私のフルテストプログラムはセカンダリディスプレイを無効にし、 'ChangeDisplaySettingsEx()'を使ってそれらを有効にしようとします。 – Artur

答えて

1

ChangeDisplaySettingsExへの最初の呼び出しにCDS_NORESETを追加してみてください。

この1つは動作します:

ChangeDisplaySettingsEx((LPCWSTR)DisplayDevice.DeviceName, &DevMode, NULL, CDS_UPDATEREGISTRY | CDS_NORESET, NULL); 
ChangeDisplaySettingsEx(NULL, NULL, NULL, 0, NULL); 

この1つは動作しません:

ChangeDisplaySettingsEx((LPCWSTR)DisplayDevice.DeviceName, &DevMode, NULL, CDS_UPDATEREGISTRY | CDS_RESET, NULL); 
ChangeDisplaySettingsEx(NULL, NULL, NULL, 0, NULL); 

この1つはまた、動作しません:

ChangeDisplaySettingsEx((LPCWSTR)DisplayDevice.DeviceName, &DevMode, NULL, CDS_UPDATEREGISTRY, NULL); 
ChangeDisplaySettingsEx(NULL, NULL, NULL, 0, NULL); 
+0

あなたの答えをありがとう!私は2年前のようなディスプレイを自動化していましたが、もう一度それを必要とするかもしれません;)誰かがそれをいつか必要とするでしょう! – Artur

関連する問題