Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Spegnere monitor
Forum - C/C++ - Spegnere monitor

Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 19:10
Mercoledì, 15/07/2009
Ho un pc con win xp e una scheda video con una sola uscita vga
Per poter usare due monitor ho collegato al pc un cavo ad y che parte dalla scheda e si attacca ai due monitor.
Il problema è che devo spegnerne uno senza dover schiacciare manualmente il pulsantino di accensione.

Quindi avevo pensato una cosa del genere:

Codice sorgente - presumibilmente C++

  1. #include <windows.h>
  2. #include <iostream>
  3. #include <vector>
  4.  
  5. using namespace std;
  6.  
  7. int main()
  8. {
  9.         BOOL bRet = FALSE;
  10.         DWORD dwNum =0;
  11.                 HDC hDC;
  12.         vector< DISPLAY_DEVICE> dispVec;
  13.  
  14.         do {
  15.                 DISPLAY_DEVICE disp;
  16.                 disp.cb = sizeof( DISPLAY_DEVICE );
  17.                 bRet = EnumDisplayDevices(NULL,dwNum,&disp,0);
  18.                 if( bRet)
  19.                         dispVec.push_back(disp);
  20.                 dwNum++;
  21.         } while(bRet);
  22.  
  23.         vector<DISPLAY_DEVICE>::iterator it = dispVec.begin();
  24.         vector<DISPLAY_DEVICE>::iterator it_end = dispVec.end();
  25.  
  26.         for ( ; it != it_end ; it++ )
  27.         {
  28.              if((*it).DeviceName[11], '2')
  29.              {
  30.  
  31.                 hDC = CreateDC("DISPLAY",(*it).DeviceName, NULL, NULL);
  32.                 HWND hwnd = WindowFromDC(hDC);
  33.                 SendMessage(hwnd, WM_SYSCOMMAND, SC_MONITORPOWER, 2);
  34.                 SendMessage(hwnd, WM_SYSCOMMAND, SC_MONITORPOWER, -1);
  35.               }
  36.          }
  37. }



il problema però deve essere nella trasformazione da hdc a hwnd visto che non funziona nemmeno con un solo monitor:D

potete aiutarmi?


EDIT: mi sono accorto dopo che l'avevo scritto in c++ :rotfl::rotfl::rotfl:
dai, non fa niente, fate come se fosse c puro :D (tanto a parte la vector non cambia niente)

Ultima modifica effettuata da lorenzo il 15/07/2009 alle 19:21


"There's no point in being exact about something if you don't even know what you're talking about."

JOHN VON NEUMANN


Siamo italiani NO??
Allora scriviamo in ITALIANO!!!!
PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 20:55
Mercoledì, 15/07/2009
Un monitor lo spegni semplicemente con questa riga

SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, 2);

Il fatto che la tua scheda non abbia le uscite per i due monitor e che tu abbia semplicemente collegato i due monitor con un cavo ad Y, mi fa pensare che non si possano comandare indipendentemente ...


- Se le mie risposte non vi soddisfano, ignoratele, altrimenti un "grazie" e' molto gradito ...

"Dai un pesce (programma) a un uomo e lo nutrirai per un giorno. Insegnagli a pescare (programmare) e lo nutrirai per tutta la vita." (niente pappa pronta)
PM Quote
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 21:12
Mercoledì, 15/07/2009
Conoscevo già quel metodo, che però mi spegnerebbe tutti e due i monitor credo...non ho ancora potuto provarlo.

pensavo però che ottenendo le periferiche e ricavando l'hwnd di uno specifico monitor si potesse fare...


"There's no point in being exact about something if you don't even know what you're talking about."

JOHN VON NEUMANN


Siamo italiani NO??
Allora scriviamo in ITALIANO!!!!
PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 21:58
Mercoledì, 15/07/2009
Il problema e', secondo me, che il circuito di controllo dell'alimentazione del monitor e' uno solo. Il connettore a Y splitta il segnale, non fornisce un secondo monitor.

Tanto e' vero che non penso tu possa "estendere" il desktop da un monitor all'altro ...


- Se le mie risposte non vi soddisfano, ignoratele, altrimenti un "grazie" e' molto gradito ...

"Dai un pesce (programma) a un uomo e lo nutrirai per un giorno. Insegnagli a pescare (programmare) e lo nutrirai per tutta la vita." (niente pappa pronta)
PM Quote
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 22:37
Mercoledì, 15/07/2009
vero, però questo dipende dai driver della scheda video, non dal cavo al quale sono collegati i monitor

comunque anche io pensavo che il cavetto ad Y fornisse un solo circuito...fa niente, mi arrangerò a spegnerlo a manina.

Grazie :k:


"There's no point in being exact about something if you don't even know what you're talking about."

JOHN VON NEUMANN


Siamo italiani NO??
Allora scriviamo in ITALIANO!!!!
PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 23:01
Mercoledì, 15/07/2009
Testo quotato

Postato originariamente da lorenzo:

vero, però questo dipende dai driver della scheda video, non dal cavo al quale sono collegati i monitor



No ... dipende dall'hardware della scheda video.

Se i circuiti video in uscita nella scheda sono due, allora avrai la possibilità di gestire singolarmente i due monitor.

Ma se la circuiteria (RGB + Sync) è una sola e l'uscita è una sola, nè il cavo ad Y (che distribuisce solamente i segnali), nè il driver (che non può inventarsi circuiti che non esistono) potranno fare nulla ...



- Se le mie risposte non vi soddisfano, ignoratele, altrimenti un "grazie" e' molto gradito ...

"Dai un pesce (programma) a un uomo e lo nutrirai per un giorno. Insegnagli a pescare (programmare) e lo nutrirai per tutta la vita." (niente pappa pronta)
PM Quote