Einzelnen Beitrag anzeigen

Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.685 Beiträge
 
Delphi 11 Alexandria
 
#26

AW: Projektpfad in der IDE-Titelzeile anzeigen?

  Alt 30. Jun 2018, 09:50
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.
Angehängte Dateien
Dateityp: 7z ShowPath_Hook.7z (2,9 KB, 2x aufgerufen)
Gruß vom KodeZwerg

Geändert von KodeZwerg (30. Jun 2018 um 16:07 Uhr)
  Mit Zitat antworten Zitat