2015-06-09 19 views
11

Sto usando Windows 7. Quando collego un nuovo monitor quando il PC è in esecuzione, il monitor non viene rilevato automaticamente. Devo andare su Display-> Screen Resolution e fare clic sul pulsante Detect per rilevare il monitor con la configurazione del registro.Rileva tutti i monitor connessi usando l'API di Windows

Sto cercando un modo per fare lo stesso a livello di programmazione utilizzando l'API di Windows. Quindi mi piacerebbe scrivere un programma che rilevi tutti i monitor collegati che riproducono il pulsante Rileva. Ho provato a utilizzare ChangeDisplaySettingEx ma con risultati negativi. Eventuali suggerimenti?

+0

Forse http://stackoverflow.com/questions/5981520/detect-external-display-being-connected-or-removed-under-windows-7 può essere d'aiuto? –

+2

Hai già perso troppo tempo su questo. Basta sostituire la scheda video. –

+0

Questo articolo di Project Code potrebbe essere d'aiuto: http://www.codeproject.com/Articles/119168/Hardware-Change-Detection Anche se sono d'accordo con @HansPassant che sembra un problema di hardware che non vale la pena provare per risolvere il problema con una correzione software! – beercohol

risposta

1

Non è una soluzione API, ma è possibile utilizzare l'utilità DevCon di MS sulla riga di comando per cercare il nuovo hardware.

https://support.microsoft.com/en-us/kb/311272

scaricarlo da questa pagina, poi basta eseguire questo da una finestra cmd:

devcon.exe rescan 

è possibile creare facilmente un file bat o .cmd per eseguire questo da un collegamento.

+0

Per completezza, è possibile trovare il codice sorgente di devcon https://github.com/Microsoft/Windows-driver-samples per includere solo la funzionalità necessaria al progetto senza utilizzare .bat o .cmd file – DOFHandler

0

Si consiglia di leggere this se si desidera conoscere le app compatibili con la visualizzazione.

+0

Com'è pertinente? – CodeCaster

+0

Perché quando un nuovo display viene collegato/rimosso, Windows invia il messaggio WM_DISPLAYCHANGE all'app; Io ricordo. – AraneaSerket6848

+0

Non sono molto sicuro – AraneaSerket6848

1
Non

davvero un Winapi ma provate questo programma di utilità:

C: \ Windows \ System32 \ DisplaySwitch.exe

DisplaySwitch.exe /internal - Switch to Primary only 
DisplaySwitch.exe /external - Switch to Secondary only 
DisplaySwitch.exe /clone - Clone desktop on both screens (Not HDCP compliant!) 
DisplaySwitch.exe /extend - Extend desktop to both screens 

In particolare, provare/estendere l'interruttore, si dovrebbe eseguire il rilevamento internamente.

Problemi correlati