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마다 깜빡이네요..
노트패드 캡션 바꾸는 법좀 알려주세요..
고수님들 부탁드립니다~~~~~~~~~~
>
> 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)로 찾으시는 것이 나을 듯 합니다...