Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Cambio risoluzione monitor secondario

    Buongiorno a tutti!
    Ho un portatile con LCD e un video CRT esterno collegato alla porta VGA del portatile stesso.

    Sono diversi giorni che sto cercando, da programma VB6, di attivare attivare il video CRT, e di cambiargli risoluzione. Ho cercato su internet ovunque, ma non ho trovato alcun articolo in merito.

    Per il momento ho fatto una serie di prove con le API "EnumDisplaySettings", "EnumDisplaySettingsEx" e "ChangeDisplaySettingsEx", ma tutte le volte agiva sempre sull'LCD del portatile.

    Queste sono le informazioni sui miei monitor:
    Monitor n.1
    - Handle : 261292679
    - Device String : Plug and Play Monitor
    on Mobile Intel(R) 945GM Express Chipset Family
    - Device Name : \\.\DISPLAY1\Monitor1
    - Primario : True
    - Dimensione : 1024x768

    Monitor n.2
    - Handle : 10028731
    - Device String : PHILIPS BRILLIANCE 107(17inch/CM8800)
    on Mobile Intel(R) 945GM Express Chipset Family
    - Device Name : \\.\DISPLAY2\Monitor1
    - Primario : False
    - Dimensione : 1024x768

    Qualcuno è in grado di aiutarmi?

    Grazie

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Hai detto di aver utilizzato la

    ChangeDisplaySettingsEx

    Ma cosa hai inserito nel primo argomento (lpszDeviceName) ?

    Mostra le dichiarazioni delle API e il codice usato ...

  3. #3
    L'ultimo tentativo che ho fatto è questo.

    Declare Function EnumDisplaySettings Lib "user32" Alias "EnumDisplaySettingsA" (ByVal lpszDeviceName As String, ByVal iModeNum As Long, lpDevMode As Any) As Boolean

    Declare Function EnumDisplaySettingsEx Lib "user32" Alias "EnumDisplaySettingsExA" (ByVal lpszDeviceName As String, ByVal iModeNum As Long, lpDevMode As DEVMODE, dwFlags As Long) As Long

    Dim DevM As DEVMODE

    DevM.dmSize = Len(DevM)
    DevM.dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT ' Or DM_BITSPERPEL

    DevM.dmPelsWidth = 800
    DevM.dmPelsHeight = 600

    EnumDisplaySettings "\\.\DISPLAY2", ENUM_CURRENT_SETTINGS, DevM
    iEsito = ChangeDisplaySettingsEx(ByVal 0&, DevM, ByVal 0&, CDS_TEST, ByVal 0&)

    Se nella ChangeDisplaySettingsEx vado ad impostare come primo parametro DevM.dmDeviceName, la funzione ritorna DISP_CHANGE_BADPARAM.

    Grazie mille per l'aiuto.

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Hai provato ad inserire nel primo parametro della ChangeDisplaySettingsEx

    "\\.\DISPLAY2"

  5. #5
    Utilizzando l'indicazione data:
    iEsito = ChangeDisplaySettingsEx("\\.\DISPLAY2", DevM, ByVal 0&, CDS_TEST, ByVal 0&)

    continua a dare DISP_CHANGE_BADPARAM: "An invalid parameter was passed in. This can include an invalid flag or combination of flags."

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Probabilmente (non vedendo la dichiarazione che usi per la API) devi scrivere

    iEsito = ChangeDisplaySettingsEx(ByVal "\\.\DISPLAY2", DevM, ByVal 0&, CDS_TEST, ByVal 0&)

  7. #7
    La dichiarazione è questa:

    Declare Function ChangeDisplaySettingsEx Lib "user32" Alias "ChangeDisplaySettingsExA" (lpszDeviceName As Any, lpDevMode As Any, ByVal hwnd As Long, ByVal dwFlags As Long, lParam As Any) As Long

    Adesso la ChangeDisplaySettingsEx esce con esito ok, ma al video non capita nulla, rimane della risoluzione iniziale 1024x78 e non 800x600 come impostato da codice.

    DevM.dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT
    DevM.dmPelsWidth = 800
    DevM.dmPelsHeight = 600

    Grazie

  8. #8
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,465

    Moderazione

    Di quale linguaggio parliamo? Letto il Regolamento? :master:
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  9. #9
    Adesso è ok.

    Ho spostato la valorizzazione della risoluzione dopo la EnumDisplaySettings e adesso funziona.

    EnumDisplaySettings "\\.\DISPLAY2", ENUM_CURRENT_SETTINGS, DevM

    DevM.dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT
    DevM.dmPelsWidth = 800
    DevM.dmPelsHeight = 600

    Grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.