Q&A

  • 노트패드 캡션바꾸기~~~


procedure TMain.Source_menuClick(Sender: TObject);

begin

ShellExecute(Handle,'open','NotePad',PChar('c:a.txt'),'',SW_SHOWNORMAL);

Timer1.Enabled := true;

end;



procedure TMain.Timer1Timer(Sender: TObject);

var

NoteHWND : HWND;

S : array[0..255] of Char;

begin

StrPCopy(S, Form1.Caption);

NoteHWND := GetForegroundWindow;

SetWindowText(NoteHWND, @S);

Timer1.Enabled := False; ---------------------------- ⓐ

end;



ⓐ 노트패드를 실행한후 MainForm의 Caption을 노트패드의 Caption바에 넣으려고하는데

저는 실행시 타이머를 실행해서 최상위폼의 핸들을 구해서 Caption을 바꿨습니다.



그런데 ⓐ에서 Timer1.Enabled := False를 하면 이상하게

Caption이 'C:a.txt - 메모장'으로 바껴버리던데.. 왜그런지 모르겠어요.

Timer1.Enabled := True로 해놓자니 Interval마다 깜빡이네요..



노트패드 캡션 바꾸는 법좀 알려주세요..

고수님들 부탁드립니다~~~~~~~~~~





1  COMMENTS
  • Profile
    sk3958 2001.11.14 01:13
    델프리 wrote:

    >

    > procedure TMain.Source_menuClick(Sender: TObject);

    > begin

    > ShellExecute(Handle,'open','NotePad',PChar('c:a.txt'),'',SW_SHOWNORMAL);

    > Timer1.Enabled := true;

    > end;

    >

    > procedure TMain.Timer1Timer(Sender: TObject);

    > var

    > NoteHWND : HWND;

    > S : array[0..255] of Char;

    > begin

    > StrPCopy(S, Form1.Caption);

    > NoteHWND := GetForegroundWindow;

    > SetWindowText(NoteHWND, @S);

    > Timer1.Enabled := False; ---------------------------- ⓐ

    > end;

    >

    > ⓐ 노트패드를 실행한후 MainForm의 Caption을 노트패드의 Caption바에 넣으려고하는데

    > 저는 실행시 타이머를 실행해서 최상위폼의 핸들을 구해서 Caption을 바꿨습니다.

    >

    > 그런데 ⓐ에서 Timer1.Enabled := False를 하면 이상하게

    > Caption이 'C:a.txt - 메모장'으로 바껴버리던데.. 왜그런지 모르겠어요.

    > Timer1.Enabled := True로 해놓자니 Interval마다 깜빡이네요..

    >

    > 노트패드 캡션 바꾸는 법좀 알려주세요..

    > 고수님들 부탁드립니다~~~~~~~~~~

    >

    >



    지금 올리신 코딩대로 해도 제 컴에서는 이상없이 실행이 되는군요..

    단지 핸들값을 구하는 부분에서 Timer를 써서 GetForegroundWindow로 핸들값을 구하는 것은 조금 안전하지 않은 것 같군요..

    FindWindow('Notepad', nil)로 찾으시는 것이 나을 듯 합니다...