IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Delphi Discussion :

Récupérer le résultat directement dans deux TEdit plutôt que dans un TMemo !


Sujet :

Delphi

  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 421
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 421
    Points : 1 325
    Points
    1 325
    Par défaut Récupérer le résultat directement dans deux TEdit plutôt que dans un TMemo !
    D6 et Windows 10

    Bonjour à toutes et à tous,

    Avec cette commande Wmi, je récupère les information dans un TMemo (MVideoController.text ) dont la propriété visible est à false.

    Ensuite je récupère les deux lignes du TMemo dans deux TEdit avec la fonction "copy".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    try
      //'Select * from Win32_videocontroller'
        MVideoController.text:='';
        MVideoController.Lines.BeginUpdate;
        Enum := CoSWbemLocator.Create.ConnectServer(Server, 'root\cimv2', '',
          '', '', '', 0, nil).ExecQuery('Select CurrentHorizontalResolution, CurrentVerticalResolution from Win32_videocontroller', 'WQL',
          wbemFlagBidirectional, nil)._NewEnum as IEnumVariant;
        while (Succeeded(ADsEnumerateNext(Enum, 1, varArr, lNumElements))) and
          (lNumElements > 0) do
        begin
          DumpWMI_Process(IUnknown(varArr) as SWBemObject);
        end;
      finally
        MVideoController.Lines.EndUpdate;
    Existerait t'il la possibilité avec ce code d'afficher directement les informations sans utiliser le TMemo ?

    Si oui, merci d'avance,

    @+,

    cincap

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 452
    Points : 24 863
    Points
    24 863
    Par défaut
    Le code présenté n'utilise pas MVideoController.Lines sauf si c'est ce que contient DumpWMI_Process qui doit être issu d'ici

    Une TStringList locale et ajout de cette variable comme paramètre de DumpWMI_Process

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    procedure DumpWMI_Process(Process: SWBemObject; AList: TStrings);

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    var
      SL: TStrings;
    begin 
      SL := TStringList.Create();  
      try
      //'Select * from Win32_videocontroller'
        Enum := CoSWbemLocator.Create.ConnectServer(Server, 'root\cimv2', '',
          '', '', '', 0, nil).ExecQuery('Select CurrentHorizontalResolution, CurrentVerticalResolution from Win32_videocontroller', 'WQL',
          wbemFlagBidirectional, nil)._NewEnum as IEnumVariant;
        while (Succeeded(ADsEnumerateNext(Enum, 1, varArr, lNumElements))) and
          (lNumElements > 0) do
        begin
          DumpWMI_Process(IUnknown(varArr) as SWBemObject, SL);
        end;
     
        // Exploiter SL[0] et SL[1] vers deux TEdit.Text
      finally
        SL.Free()
      end;
    Triviale ! N'est-ce pas ?


    et je dirais qu'une TList<TSWbemPropertyRec> serait bien plus intéressante
    A la limite une TStringList contenant des Names=Values voire même exploitant Objects[] dans de vieux Delphi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    type
      TSWbemPropertyRec = record 
        PropName: string;
        PropType: string;
        PropValue: string;
      end;
      TSWbemPropertyRecList = TList<TSWbemPropertyRec>
    ;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    procedure DumpWMI_Process(Process: SWBemObject; AList: TSWbemPropertyRecList);

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    var
      SL: TSWbemPropertyRecList;
    begin 
      SL := TSWbemPropertyRecList.Create();  
      try
      //'Select * from Win32_videocontroller'
        Enum := CoSWbemLocator.Create.ConnectServer(Server, 'root\cimv2', '',
          '', '', '', 0, nil).ExecQuery('Select CurrentHorizontalResolution, CurrentVerticalResolution from Win32_videocontroller', 'WQL',
          wbemFlagBidirectional, nil)._NewEnum as IEnumVariant;
        while (Succeeded(ADsEnumerateNext(Enum, 1, varArr, lNumElements))) and
          (lNumElements > 0) do
        begin
          DumpWMI_Process(IUnknown(varArr) as SWBemObject, SL);
        end;
     
        // Exploiter SL[0].PropValue et SL[1].PropValue vers deux TEdit.Text
      finally
        SL.Free()
      end;
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 036
    Points : 40 941
    Points
    40 941
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    moi je dirais qu'il suffit de réduire le résultat à un seul élément, par exemple si j'utilise
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    Select CurrentHorizontalResolution, CurrentVerticalResolution from Win32_videocontroller
    j'ai sur mon pc 2 contrôleurs pour accéder à un seul il faudra donc ajouter la clause WHERE, sinon, dans mon cas, selon le code de ShaiLeTroll c'est les lignes 2 et 3 qu'il me faut utiliser

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    Select CurrentHorizontalResolution, CurrentVerticalResolution from Win32_videocontroller WHERE DeviceID='VideoController2'
    me donne accès à ce qui est recherché

    ensuite il "suffit" de ne pas utiliser la boucle while

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        if lNumElements =1  then 
        begin
          Edit1.text:=Enum.CurrentHorizontalResolution;
          Edit2.text:=Enum.CurrentVerticalResolution;
        end;
    comme je n'écris pas comme cela les utilisations de wmi j'ai des doutes sur le enum.currentxxxxxx
    je préfère quelque chose de plus "décomposé" comme le propose Delphi WMI Code Creator

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    const
      WbemUser            ='';
      WbemPassword        ='';
      WbemComputer        ='localhost';
      wbemFlagForwardOnly = $00000020;
    var
      FSWbemLocator : OLEVariant;
      FWMIService   : OLEVariant;
      FWbemObjectSet: OLEVariant;
      FWbemObject   : OLEVariant;
      oEnum         : IEnumvariant;
      iValue        : LongWord;
    begin;
      FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
      FWMIService   := FSWbemLocator.ConnectServer(WbemComputer, 'root\CIMV2', WbemUser, WbemPassword);
      FWbemObjectSet:= FWMIService.ExecQuery('SELECT * FROM Win32_VideoController WHERE DeviceID=''VideoController2''','WQL',wbemFlagForwardOnly);
      oEnum         := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;
      if oEnum.Next(1, FWbemObject, iValue) = 0 do
      begin
        Edit1.Text:=FWbemObject.CurrentHorizontalResolution;
        Edit2.text:=FWbemObject.CurrentVerticalResolution;
      end;
    ...
    end;
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 421
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 421
    Points : 1 325
    Points
    1 325
    Par défaut
    Bonsoir à toutes et à tous,

    @ SergioMaster et @ ShaiLeTroll, merci pour votre intervention.

    En effet, j'utilisais la procédure "DumpWMI_Process" qui était proposée sur un autre site et qui est la même décrite depuis le lien.

    C'est donc à partir de ce code que la modification pour éviter l'utilisation du TMemo était pertinente et non le 1er code que j'avais communiqué.

    Malheureusement je n'ai pas sut intégrer les excellentes propositions dans mon application.

    Je continue à tester.

    @+,

    cincap

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 421
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 421
    Points : 1 325
    Points
    1 325
    Par défaut
    Bonsoir à toutes et à tous,

    J'ai chaque fois une exception "Indice de liste hors limites(0)".

    Peut être une erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    var
     Server: string;
      Enum: IEnumVARIANT;
      varArr: OleVariant;
      lNumElements: ULong;
      AName: array[0..255] of Char;
      ASize: DWORD;
      PropValue, s: string;
      SL: TStrings;
    begin
      SL := TStringList.Create();
      try
      //'Select * from Win32_videocontroller'
        Enum := CoSWbemLocator.Create.ConnectServer(Server, 'root\cimv2', '',
          '', '', '', 0, nil).ExecQuery('Select CurrentHorizontalResolution, CurrentVerticalResolution from Win32_videocontroller', 'WQL',
          wbemFlagBidirectional, nil)._NewEnum as IEnumVariant;
        while (Succeeded(ADsEnumerateNext(Enum, 1, varArr, lNumElements))) and
          (lNumElements > 0) do
        begin
          DumpWMI_Process(IUnknown(varArr) as SWBemObject, SL);
        end;
     
        // Exploiter SL[0] et SL[1] vers deux TEdit.Text
     
        EdWidth.text := SL[0];
     
        EdHeight.text := SL[1];
      finally
        SL.Free()
      end;
    Merci de votre aide.

    @+,

    cincap

  6. #6
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 344
    Points : 3 122
    Points
    3 122
    Par défaut
    Bonjour,

    avant les Edit, tu peux tester le nombre d'éléments de SL pour voir.

    A+
    Charly

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 421
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 421
    Points : 1 325
    Points
    1 325
    Par défaut
    Bonjour à toutes et à tous.

    @ Charly910, merci de ta suggestion, j'avais aussi testé mais peut être pas à la bonne place, soit je n'avais rien dans le message soit j'avais une exception.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     SL.add(propvalue);
        // Exploiter SL[0] et SL[1] vers deux TEdit.Text
       for i := 0 to SL.count - 1 do
        begin
        ShowMessage(SL.Strings[i]);
    Je devrai peut être le faire dans la procédure "procedure DumpWMI_Process(Process: SWBemObject; AList: TStrings);" à la place du TMemo ?

    @+,

    cincap

  8. #8
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 036
    Points : 40 941
    Points
    40 941
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    j'ai testé ceci sur une autre machine D7/Windows Vista cela fonctionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, comobj, activex, StdCtrls;
     
    type
      TForm1 = class(TForm)
        Edit1: TEdit;
        Edit2: TEdit;
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.Button1Click(Sender: TObject);
    const
      WbemUser            ='';
      WbemPassword        ='';
      WbemComputer        ='localhost';
      wbemFlagForwardOnly = $00000020;
    var
      FSWbemLocator : OLEVariant;
      FWMIService   : OLEVariant;
      FWbemObjectSet: OLEVariant;
      FWbemObject   : OLEVariant;
      oEnum         : IEnumvariant;
      iValue        : LongWord;
    begin;
      FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
      FWMIService   := FSWbemLocator.ConnectServer(WbemComputer, 'root\CIMV2', WbemUser, WbemPassword);
      FWbemObjectSet:= FWMIService.ExecQuery('SELECT * FROM Win32_VideoController','WQL',wbemFlagForwardOnly);
      oEnum         := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;
      if oEnum.Next(1, FWbemObject, iValue) = 0 then
        begin
         Edit1.Text:=String(FWbemObject.CurrentHorizontalResolution);
         Edit2.Text:=String(FWbemObject.CurrentVerticalResolution);
        end;
      FWbemObject:=Unassigned;
     
    end;
     
    end.
    Le hic c'est s'il y a plusieurs contrôleurs (sur ce poste, pas de soucis c'est le premier qui nous intéresse)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      FWbemObjectSet:= FWMIService.ExecQuery('SELECT * FROM Win32_VideoController WHERE DeviceId=''VideoController1''','WQL',wbemFlagForwardOnly);
    on obtient la même chose mais encore faut-il avoir le DeviceID
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  9. #9
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 421
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 421
    Points : 1 325
    Points
    1 325
    Par défaut
    @ SergioMaster, merci de ton aide.

    J'ai refait un module de test en effaçant le code souvent modifié pour coder suivant ta modification.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, Strutils,comobj, activex;
     
    type
      TForm1 = class(TForm)
        Bgo: TButton;
        EdWidth: TEdit;
        EdHeight: TEdit;
        Breset: TButton;
        procedure BgoClick(Sender: TObject);
        procedure BresetClick(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
     
    procedure TForm1.BgoClick(Sender: TObject);
    const
      WbemUser            ='';
      WbemPassword        ='';
      WbemComputer        ='localhost';
      wbemFlagForwardOnly = $00000020;
    var
      FSWbemLocator : OLEVariant;
      FWMIService   : OLEVariant;
      FWbemObjectSet: OLEVariant;
      FWbemObject   : OLEVariant;
      oEnum         : IEnumvariant;
      iValue        : LongWord;
    begin;
      FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
      FWMIService   := FSWbemLocator.ConnectServer(WbemComputer, 'root\CIMV2', WbemUser, WbemPassword);
      FWbemObjectSet:= FWMIService.ExecQuery('SELECT * FROM Win32_VideoController WHERE DeviceId=''VideoController1''','WQL',wbemFlagForwardOnly);
      oEnum         := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;
      if oEnum.Next(1, FWbemObject, iValue) = 0 then
        begin
         EdWidth.text :=String(FWbemObject.CurrentHorizontalResolution);
         EdHeight.text :=String(FWbemObject.CurrentVerticalResolution);
        end;
      FWbemObject:=Unassigned;
     
    end;
     
    procedure TForm1.BresetClick(Sender: TObject);
    begin
     EdWidth.text := '';
     
     EdHeight.text := '';
    end;
     
    end.
    J'obtiens toujours une exception à la compilation soit "Conversion de type variant incorrecte".

    Je ne vois pas ou est l'erreur.

    @+,

    cincap

  10. #10
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 036
    Points : 40 941
    Points
    40 941
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    Oui mais as-tu vérifié qu'il s'agissait du bon DeviceID ? Sur mon poste Vista il s'agit bien de VideoController1 mais sur mon poste W10 c'était VideoController2
    d'où ma remarque
    Citation Envoyé par SergioMaster
    mais encore faut-il avoir le DeviceID
    Un autre moyen de tester :
    rechercher dans les différents contrôleurs jusqu'à ce que les valeurs soient renseignées ?
    Changer la clause en WHERE CurrentHorizontalResolution IS NOT NULL
    Mais je ne sais pas ce qu'il en serait s'il y a deux écrans, je tenterais un peu plus tard dans la journée
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  11. #11
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 421
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 421
    Points : 1 325
    Points
    1 325
    Par défaut
    Bonjour à toutes et à tous,

    @ SergioMaster, tu as raison c'était bien cela, sur la version avec le TMemo il indiquait

    "VideoController1
    1920
    1080
    VideoController2"

    Donc je devais utiliser le "VideoController2" dans mon cas.

    Je pense que le nom du DeviceID est toujours "VideoController" plus le chiffre si il y en a plusieurs.

    Ce topic a à nouveau eu une solution extrêmement simplifiée et peut être fermé.

    Merci à tous.

    @+,

    cincap

  12. #12
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 036
    Points : 40 941
    Points
    40 941
    Billets dans le blog
    62
    Par défaut
    Je pense que le nom du DeviceID est toujours "VideoController" plus le chiffre si il y en a plusieurs.
    Je pense que c'est plus compliqué que ça.

    Cela dit, il faudra m'expliquer, je pense qu'il doit y avoir une raison, pourquoi l'utilisation de EdWidth.text :=InttoStr(Screen.Width) et EdHeight.text:=inttostr(Screen.Height) n'était pas aussi simple, sans besoin du "marteau pilon wmi"
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  13. #13
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 421
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 421
    Points : 1 325
    Points
    1 325
    Par défaut
    @ SergioMaster :

    Cela dit, il faudra m'expliquer, je pense qu'il doit y avoir une raison, pourquoi l'utilisation de EdWidth.text :=InttoStr(Screen.Width) et EdHeight.text:=inttostr(Screen.Height) n'était pas aussi simple, sans besoin du "marteau pilon wmi"
    Tout simplement pour tous les codes concernant la résolution de l'écran que j'ai testé fonctionnent correctement si l'échelle de Windows est à 100% (click sur le bureau puis paramètres d'affichage ensuite panneau de configuration et mise à l'échelle et disposition).

    Même "EdWidth.text :=InttoStr(Screen.Width) et EdHeight.text:=inttostr(Screen.Height)" donne 1536 x 864 avec l'échelle 125%

    Mais sur mon Pc l'échelle est à 125 % (recommandé par défaut) et seul un code dans un fichier .bat (que je peus communiquer) fonctionnait ou Wmi simplifié qui donne la bonne résolution de mon écran par défaut soit 1920 x 1080 (125%).

    Encore merci.

    @+,

    cincap

  14. #14
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 421
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 421
    Points : 1 325
    Points
    1 325
    Par défaut
    Bonjour à toutes et à tous,

    Rectification du chemin :

    (click sur le bureau puis paramètres d'affichage ensuite panneau de configuration et mise à l'échelle et disposition).
    Par :

    (click droit sur le bureau puis paramètres d'affichage ensuite sur panneau d'affichage, mise à l'échelle et disposition).
    @+,

    cincap

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 13/07/2017, 14h19
  2. Récupérer un résultat String dans un tableau
    Par btissam2012 dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 01/10/2012, 08h17
  3. Réponses: 2
    Dernier message: 23/01/2011, 16h23
  4. [1.x] Exécuter et récupérer résultat directement dans action.class
    Par Mainmich dans le forum Débuter
    Réponses: 5
    Dernier message: 09/01/2011, 23h03
  5. Réponses: 1
    Dernier message: 04/11/2007, 15h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo