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

Composants VCL Delphi Discussion :

saisie dans une fenetre de service


Sujet :

Composants VCL Delphi

  1. #1
    Membre habitué Avatar de gord's
    Inscrit en
    Avril 2003
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 115
    Points : 127
    Points
    127
    Par défaut saisie dans une fenetre de service
    j'ai un probleme tout con à ennoncer :
    mon service NT peut etre amené à afficher des fenetres de saisies (il est de type interactif et tourne sous localSystem).
    Mais apparemment windows n'envoie pas les keypress aux services, seulement keydown, keyUp.
    Résultat : aucune saisie possible dans des TEdit.

    Quelqu'un a-t'il trouvé comment contourner ça ?
    La prochaine révolution informatique : les machines qui font ce qu'on veut, au lieu de faire ce qu'on leur demande...
    Grand Vizir du Grand Gourou - Trois-quart aile gauche du TRFC et intendant de 3ème mi-temps - Papy fait de la résistance

  2. #2
    Membre habitué Avatar de gord's
    Inscrit en
    Avril 2003
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 115
    Points : 127
    Points
    127
    Par défaut
    bon, finalement je vais me regénerer les keypress à partir des keydown/keyUp.

    juste une question : comment passe-t'on des codes passés dans keyDown à un caracteres, et comment filtrer les touches qui doivent donner lieu à un keypress ?
    La prochaine révolution informatique : les machines qui font ce qu'on veut, au lieu de faire ce qu'on leur demande...
    Grand Vizir du Grand Gourou - Trois-quart aile gauche du TRFC et intendant de 3ème mi-temps - Papy fait de la résistance

  3. #3
    Membre confirmé Avatar de heid
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Mai 2002
    Messages : 388
    Points : 597
    Points
    597
    Par défaut
    je comprend pas tu veux pouvoir savoir quelle touche est frappée et la filtrer le cas échéant c'est ca?

  4. #4
    Membre habitué Avatar de gord's
    Inscrit en
    Avril 2003
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 115
    Points : 127
    Points
    127
    Par défaut
    sur keyDown, windaube envoie aussi keyPress, mais seulement pour une appli, pas pour un service.
    c'est pour ça que je veux regénérer les keypress.
    or, tous les keydown ne donnent pas lieu à des keypress, d'où mon besoin de filtrage.

    de plus, la conversion du keycode+shiftState de keydown n'est pas facilement traduisible en char (par ex, pour & et 1, on recoit le code ascii de 1)
    La prochaine révolution informatique : les machines qui font ce qu'on veut, au lieu de faire ce qu'on leur demande...
    Grand Vizir du Grand Gourou - Trois-quart aile gauche du TRFC et intendant de 3ème mi-temps - Papy fait de la résistance

  5. #5
    Membre habitué Avatar de gord's
    Inscrit en
    Avril 2003
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 115
    Points : 127
    Points
    127
    Par défaut
    j'ai trouvé !!!
    tournée générale !
    joie et allegresse !!
    Pardonnez l'emphase, mais je traine ce truc depuis deux ans, en m'y remettant de temps à autres.

    Le truc : faire un composant dérivé de TEdit, capturer le WM_KeyDown pour faire un translateMessage. Et c'est tout !

    détails: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/userinput/keyboardinput/aboutkeyboardinput.asp

    le composant :
    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
    unit cmp_svcEdit;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls;
     
    type
      TsvcEdit = class(TEdit)
      private
        fService: boolean;
        procedure WMKeyDown(var Message: TWMKeyDown);  message WM_KEYDOWN;
      public
        constructor Create(AOwner: TComponent); override;
      published
        property NTservice: boolean read fService write fService;
      end;
     
    procedure Register;
     
    implementation
     
    constructor TsvcEdit.Create(AOwner: TComponent);
    begin
      inherited;
      fService := false;
    end;
     
    procedure TsvcEdit.WMKeyDown(var Message: TWMKeyDown);
    var
       msg: TMsg;
    begin
      if fService then begin
        msg.hwnd := self.Handle;
        msg.message := message.Msg;
        msg.wParam := message.CharCode;
        msg.lparam := message.KeyData;
        translateMessage(msg);
      end;
      inherited;
    end;
     
    procedure Register;
    begin
      RegisterComponents('MesComp', [TsvcEdit]);
    end;
     
    end.
    La prochaine révolution informatique : les machines qui font ce qu'on veut, au lieu de faire ce qu'on leur demande...
    Grand Vizir du Grand Gourou - Trois-quart aile gauche du TRFC et intendant de 3ème mi-temps - Papy fait de la résistance

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

Discussions similaires

  1. [applet] ouvrir une applet dans une fenetre
    Par rohel dans le forum Applets
    Réponses: 4
    Dernier message: 19/02/2005, 00h57
  2. Réponses: 2
    Dernier message: 17/02/2005, 00h00
  3. [debutant]dessins dans une fenetre
    Par drosophile dans le forum 2D
    Réponses: 4
    Dernier message: 04/11/2004, 14h55
  4. [BPW]Raccourcis clavier dans une fenêtre enfant
    Par Alcatîz dans le forum Turbo Pascal
    Réponses: 2
    Dernier message: 18/02/2004, 20h07
  5. gérer les jpg dans une fenetre directdraw???
    Par Anonymous dans le forum DirectX
    Réponses: 1
    Dernier message: 14/06/2002, 13h39

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