Q&A

  • 패널 2개를 어떻게 후킹 해야 하죠?
수고하시네요.

WindowProc를 이용한  컴포넌트 후킹 방식으로
panel1 에 발생하는 메세지를 후킹해서 사용하고 있습니다.

그런데 panel 2개를 폼에 올리고
2개의 패널에 대해서 각각 후킹 할수 있는 방법은 없나요?

2개의 패널에 대해서 각각 후킹할 수 있는 방법이 있으면 알려주세요.

감사합니다.




procedure TForm1.FormCreate(Sender: TObject);
begin
  WndMethod := Panel1.WindowProc;
  Panel1.WindowProc := HandleMessage;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
   Panel1.WindowProc := WndMethod;
end;

procedure TForm1.HandleMessage(var msg : TMessage);
begin
  case msg.Msg of
    WM_KEYDOWN:
    begin
      showmessage('panel1 keydown');
    end;
  end;
end;
3  COMMENTS
  • Profile
    모영철 2005.06.29 04:29
    제가 질문을 잘못 이해 한건지는 몰라도..


    WndMethod1 := Panel1.WindowProc;
    Panel1.WindowProc := HandleMessage1;

    WndMethod2 := Panel2.WindowProc;
    Panel2.WindowProc := HandleMessage2;

    이럼 되지 않나요??

  • Profile
    이현진 2005.06.29 23:27

    저도 그러면 될줄 알았는데 그럴경우 panel2 없어져 버리네요.
    후킹때문에 충돌이 나는것 같기도 한데..
    그처리를 모르겠더군요..

  • Profile
    모영철 2005.06.30 01:54
    저는 아래 처럼 했는데요.

    원하시는게 이것이 맞는지..


    unit Unit1;

    interface

    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ExtCtrls;

    type
      TForm1 = class(TForm)
        Panel1: TPanel;
        Panel2: TPanel;
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
        procedure FormCreate(Sender: TObject);
      private
        WndMethod1 : TWndMethod;
        WndMethod2 : TWndMethod;
        procedure HandleMessage1(var msg : TMessage);
        procedure HandleMessage2(var msg : TMessage);
      public
        { Public declarations }
      end;

    var
      Form1: TForm1;

    implementation
    {$R *.dfm}



    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
    //  Panel1.WindowProc := WndMethod1;
    //  Panel2.WindowProc := WndMethod2;

      Action := Cafree;
    end;

    procedure TForm1.FormCreate(Sender: TObject);
    begin
      WndMethod1 := Panel1.WindowProc;
      Panel1.WindowProc := HandleMessage1;

      WndMethod2 := Panel2.WindowProc;
      Panel2.WindowProc := HandleMessage2;
    end;

    procedure TForm1.HandleMessage1(var msg : TMessage);
    begin
      WndMethod1(msg);

      case msg.Msg of
        WM_LBUTTONDOWN:
        begin
          showmessage('panel1 Ldown');
        end;
      end;


    end;

    procedure TForm1.HandleMessage2(var msg : TMessage);
    begin
      WndMethod2(msg);

      case msg.Msg of
        WM_LBUTTONDOWN:
        begin
          showmessage('panel2 Ldown');
        end;
      end;


    end;

    end.

    • 송인화
    • 2005.06.29 03:41
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 천희택
      2005.07.02 08:20
      <!--CodeS--> procedure TForm1.RichEdit2KeyDown(Sender: TObject; var Key: Word;   S...
    • 무심코
      2005.06.29 05:32
      별 도움이 안되는 답변이지만... 저도 예전이 이런 문제에 봉착해서 고생을 했는데 결국 외부 컴포넌트(R...
    • 실크맨
      2005.06.30 23:37
      델파이 IDE의 메뉴중 Component -> Install Package 에서 "Borland Intergrated Translation Environme...
    • 이현진
    • 2005.06.29 01:00
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 모영철
      2005.06.29 04:29
      제가 질문을 잘못 이해 한건지는 몰라도.. WndMethod1 := Panel1.WindowProc; Panel1.WindowProc := ...
    • 이현진
      2005.06.29 23:27
      저도 그러면 될줄 알았는데 그럴경우 panel2 없어져 버리네요. 후킹때문에 충돌이 나는것 같기도 한데.....
    • 모영철
      2005.06.30 01:54
      저는 아래 처럼 했는데요. 원하시는게 이것이 맞는지.. unit Unit1; interface uses  ...
    • 최지훈
    • 2005.06.29 00:41
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 김병윤
      2005.06.29 01:03
      <!--CodeS--> var   li_CNT: Integer; begin   li_CNT := 1;  &n...
    • 권태훈
      2005.06.29 07:25
      if  li_CNT IN[1..5] then 1에서 5까지 참 문자도 됩니다. 섞어 쓰기도됩니다. [1..5, 7.....
    • 복숭아
    • 2005.06.28 22:20
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 모영철
      2005.06.29 04:38
      7.0하고 5.0 거의 차이가 없을듯 싶은데요.. 5.0으로 되있는 소스를 7.0에서 컴파일하시려면 약간 수정...
    • 이종민
    • 2005.06.28 20:46
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 장유경
    • 2005.06.28 19:41
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 주웰
      2005.06.29 00:00
      procedure TForm1.Button1Click(Sender: TObject); var   FirstStr: string;   Sec...
    • 서영택
      2005.06.28 20:05
      edit3.text:=IntToStr(StrToInt(edit1.text)+StrToInt(edit2.text));
    • 장유경
      2005.06.28 20:32
      제가 질문을 잘못한거 같네여... 그런답을 원한게 아니라 edit3 box에 edit1.text+edit2.text라고 쳤을...
    • 서영택
      2005.06.28 21:13
      소스가 무식하지만 답변이 맞는지 모르겠네요 procedure TForm1.Edit3KeyPress(Sender: TObject; var Ke...
    • 서영택
    • 2005.06.28 19:14
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 박현식
    • 2005.06.28 02:59
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이규하
      2005.06.28 16:22
      Quickrep uninstall 하신다음에, %systemroot% 밑에 %system32% 에서 QRxxxx.bpl 을 삭제 하신다음에, 다시...
    • 노승현
    • 2005.06.28 02:21
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 모영철
      2005.06.28 18:18
      어제 제컴에서 해보니 (XP sp2 인데요..) 게시자를 확인할수 없어서 ActiveX를 차단했다? 라고 나왓나 ...
    • 노승현
      2005.06.28 19:27
      우선 답변 달아주신데 감사드립니다. 그 경우엔..보안설정에서 안정하지 않은 파일 및 서명안된 파일인 경...
    • 모영철
      2005.06.28 22:19
      그럼 레지스트리를 확인해보는건 어떨까요.. 한번 다운 받았던 곳이라면 \..............아니겠지만.......
    • 메니아
    • 2005.06.28 01:11
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 모영철
      2005.06.29 04:46
      그기능을 하려면 먼저 특정 문자만 색깔이 바뀌어야 할거 같네요.. 그리고 특정 위치에서 이벤트가 ...
    • 정희돈
      2005.06.27 22:29
      글쎄요 Access violation 에러의 경우 너무 많은 경우 발생한수 있어서 딱히 답을 드리기가 어렵습니다. ...
    • 델팡
    • 2005.06.27 18:55
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 홍성락
      2005.06.28 00:20
      //hsr 검색해보시면 많아요 예로 "ListView에서 '열(col)'에 칼라를 주고싶어요" ListView의 속성 Ow...
    • 양은기
    • 2005.06.27 17:57
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 송인화
    • 2005.06.27 10:35
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 송인화
    • 2005.06.27 09:59
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 서기원
    • 2005.06.27 01:06
    • 1 COMMENTS
    • /
    • 0 LIKES
    • nilriri™
      2005.06.27 19:27
      var    Limit : double; begin    Limit := 2;    Limit := Limit * 10...
    • 노기웅
    • 2005.06.26 07:42
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김민식
      2005.06.26 22:20
      모뎀 관련 코딩한지 십여년이 넘어서 기억이 가물가물 하네요.. 간단히 기억나는걸 요약하면.. 먼...
    • 박기웅
    • 2005.06.26 00:03
    • 1 COMMENTS
    • /
    • 0 LIKES
    • nilriri™
      2005.06.27 18:29
      webbrowser나 javascript로 검색해 보세요.