Hier ist eine
NICHT funktionierende Version mit Deinem Hook Vorschlag.
Es funktioniert
NICHT oder ich mache es falsch.
Den Hook habe ich ausgeschaltet damit die
IDE heile bleibt.
Delphi-Quellcode:
constructor TShowPath.Create;
begin
inherited Create;
// Application.HookMainWindow(MessageHook);
// Application.OnMessage := AppMessage;
// fHWnd := AllocateHWnd(WndMethod);
end;
destructor TShowPath.Destroy;
begin
// Application.UnhookMainWindow(MessageHook);
// DeallocateHWnd(fHWnd);
inherited Destroy;
end;
die // Zeichen entfernen damit der Hook wirksam wird.
Delphi-Quellcode:
function TShowPath.MessageHook(var Msg: TMessage): Boolean;
begin
Result := False;
if (Msg.Msg = WM_SETTEXT) then
begin
(BorlandIDEServices as IOTAMessageServices).AddTitleMessage(
'WM_SETTEXT', MyGroup);
if ((NewTitle <> '') and (NewTitle <> Application.MainForm.Caption))
then Application.MainForm.Caption := NewTitle;
Msg.Result := 0;
Result := True;
end;
end;
procedure TShowPath.AppMessage(var Msg: TMsg; var Handled: Boolean);
begin
Handled := False;
if (Msg.Message = WM_SETTEXT) then
begin
(BorlandIDEServices as IOTAMessageServices).AddTitleMessage(
'WM_SETTEXT', MyGroup);
if ((NewTitle <> '') and (NewTitle <> Application.MainForm.Caption))
then Application.MainForm.Caption := NewTitle;
Msg.message := 0;
Handled := True;
end;
end;
procedure TShowPath.WndMethod(var Msg : TMessage);
var
Handled: Boolean;
begin
Handled := True;
case Msg.Msg of
WM_SETTEXT: if ((NewTitle <> '') and (NewTitle <> Application.MainForm.Caption))
then Application.MainForm.Caption := NewTitle;
else
Handled := False;
end;
if Handled then
Msg.Result := 0
else
Msg.Result := DefWindowProc(fHWnd, Msg.Msg,
Msg.WParam, Msg.LParam);
end;
Das sind die eigentliche Hooks, funktioniert so nicht oder ich habe da gänzlich was falsch gemacht.
Ps: In dieser Version habe ich die Messages ein klein wenig verändert, nun werden Sie nicht mehr in den Vordergrund forciert.
Ich bin mit meinem Latein am Ende.
edit
Dieser Anhang ist nur für experimentier freudige!
Habe den Anhang aktualisiert mit drei Hook Varianten, alle sind ausgeklammert beim kompilieren da es nicht das gewünschte Resultat bietet.
Die Timer Methode kann man im initialization & finalization anschalten.
Mehr Hook Methoden fallen mir wirklich nicht mehr ein. Wie Uwe sagte, es klappt so nicht da dafür keine Notification existiert.