AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi mit dem Programmname an den Fenstertitel heran kommen?
Thema durchsuchen
Ansicht
Themen-Optionen

mit dem Programmname an den Fenstertitel heran kommen?

Ein Thema von smart · begonnen am 25. Aug 2007 · letzter Beitrag vom 26. Aug 2007
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von smart
smart

Registriert seit: 19. Dez 2004
Ort: Bochum
1.266 Beiträge
 
Delphi 2007 Professional
 
#1

mit dem Programmname an den Fenstertitel heran kommen?

  Alt 25. Aug 2007, 09:49
Hallo Alle!

Wie kann ich an Hand des Dateinamens ein Programm mit Fenster in den Fordergrund bringen? Wie man ein Fenster in den Fordergrund bringt ist mir bekannt. Dafür brauche ich den Fenstertitel. Nur wie komme ich mit dem Programmname an den Fenstertitel heran?

Gruß
Heike
Heike Kretschmann
Viele Grüße aus Bochum

kaum denkt man alles ist fertig, da fängt man wieder von Vorn an.
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.757 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: mit dem Programmname an den Fenstertitel heran kommen?

  Alt 25. Aug 2007, 11:06
Hallo Heike,

vielleicht findest Du hier und hier ein paar Ansätze.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Mark90
(Gast)

n/a Beiträge
 
#3

Re: mit dem Programmname an den Fenstertitel heran kommen?

  Alt 25. Aug 2007, 11:17
Schau dir mal das an! So in der Art wird es gehen.

Delphi-Quellcode:
function GetStatusText(wndWindow: THandle;
  StatusBarClassName: string;
  PanelIndex: Byte): string;
var
  WndStatusBar: THandle;
  StatusBarText: array[0..$FFF] of Char;
begin
  Result := '';
  WndStatusBar := FindWindowEx(wndWindow, 0, PChar(StatusBarClassName), nil);
  if WndStatusBar <> 0 then
  begin
    if PanelIndex = 0 then
      SendMessage(WndStatusBar, WM_GETTEXT, $FFF, Longint(@StatusBarText))
    else
      SendMessage(WndStatusBar, SB_GETTEXT, PanelIndex, Longint(@StatusBarText));
    Result := StrPas(StatusBarText);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  // Read statustext from Internet Explorer
  label1.Caption := GetStatusText(FindWindow('IEFrame', nil), 'msctls_statusbar32', 0);
  // Also works with a TStatusBar
  Label2.Caption := GetStatusText(Form1.Handle, 'TStatusBar', 0);
end;




uses
  CommCtrl, uProcessMemMgr { from Download };


function GetStatusBarText(hStatusBarHandle: HWND; PanelNumber: Integer): string;
var
  PMM: TProcessMemMgr;
  NumberOfPanels, Len: Integer;
  PrcBuf: PChar;
  PartText: string;
begin
  if hStatusBarHandle = 0 then Exit;
  PMM := CreateProcessMemMgrForWnd(hStatusBarHandle);
  try
    NumberOfPanels := SendMessage(hStatusBarHandle, SB_GETPARTS, 0, 0);
    if PanelNumber < NumberOfPanels then
    begin
      Len := LOWORD(SendMessage(hStatusBarHandle, SB_GETTEXTLENGTH, PanelNumber, 0));
      if Len > 0 then
      begin
        PrcBuf := PMM.AllocMem(Len + 1);
        SendMessage(hStatusBarHandle, SB_GETTEXT, PanelNumber, Longint(PrcBuf));
        Result := PMM.ReadStr(PrcBuf);
        PMM.FreeMem(PrcBuf);
      end
      else
      begin
        Result := '';
      end;
    end;
  finally
    PMM.Free;
  end;
end;

// Example to read the statusbar text of the explorer.exe
// Beispiel, um den Statusbar text des explorers auszulesen
procedure TForm1.Timer1Timer(Sender: TObject);
var
  hWindow, hStatusBarHandle: HWND;
begin
  hWindow := FindWindow('ExploreWClass', nil);
  if FensterHandle = 0 then Exit;
  hStatusBarHandle := FindWindowEx(hWindow, 0, 'msctls_statusbar32', nil);
  label1.Caption := GetStatusBarText(hStatusBarHandle, 2);
end;
  Mit Zitat antworten Zitat
Benutzerbild von smart
smart

Registriert seit: 19. Dez 2004
Ort: Bochum
1.266 Beiträge
 
Delphi 2007 Professional
 
#4

Re: mit dem Programmname an den Fenstertitel heran kommen?

  Alt 25. Aug 2007, 13:31
Hallo.

ich habe mir mal folgendes zusammen gebaut:
Delphi-Quellcode:
function GetText(Wnd: HWND): string;
var
  textlength: Integer;
  Text: PChar;
begin
  textlength := SendMessage(Wnd, WM_GETTEXTLENGTH, 0, 0);
  if textlength = 0 then Result := ''
  else
  begin
    GetMem(Text, textlength + 1);
    SendMessage(Wnd, WM_GETTEXT, textlength + 1, Integer(Text));
    Result := Text;
    FreeMem(Text);
  end;
end;
Aufruf mit
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  hWindow: HWND;
begin
  hWindow := FindWindow('notepad', nil);
  Label2.Caption := GetText(hWindow);

end;
mit dem Programm notepad klappt die ganze Sache aber mit anderen Programmen nicht. Was mache ich falsch?

Gruß
Heike
Heike Kretschmann
Viele Grüße aus Bochum

kaum denkt man alles ist fertig, da fängt man wieder von Vorn an.
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: mit dem Programmname an den Fenstertitel heran kommen?

  Alt 25. Aug 2007, 19:34
Zitat von smart:
mit dem Programm notepad klappt die ganze Sache aber mit anderen Programmen nicht. Was mache ich falsch?
Hi,

das war wohl eher Zufall, da bei Notepad der Klassenname des Fensters mit dem Programmnamen übereinstimmt. Hier gab es mal so einen ähnlichen Beitrag dazu. Ein Programm kann allerdings auch noch mehrere Fenster besitzen, dann müsste mann auch noch das Richtige davon finden.
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
Benutzerbild von smart
smart

Registriert seit: 19. Dez 2004
Ort: Bochum
1.266 Beiträge
 
Delphi 2007 Professional
 
#6

Re: mit dem Programmname an den Fenstertitel heran kommen?

  Alt 25. Aug 2007, 20:10
Zitat von bitsetter:
Hi,

das war wohl eher Zufall, da bei Notepad der Klassenname des Fensters mit dem Programmnamen übereinstimmt. Hier gab es mal so einen ähnlichen Beitrag dazu. Ein Programm kann allerdings auch noch mehrere Fenster besitzen, dann müsste mann auch noch das Richtige davon finden.
Hi,

vielen Dank auch, der Tipp war klasse. Genau sowas hatte ich gesucht.

Gruß
Heike
Heike Kretschmann
Viele Grüße aus Bochum

kaum denkt man alles ist fertig, da fängt man wieder von Vorn an.
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#7

Re: mit dem Programmname an den Fenstertitel heran kommen?

  Alt 25. Aug 2007, 21:04
Anhand der Adresse den Namen des Empfängers meines Briefes rausfinden! (<-- in Klammern - es handelt sich um ein Hochhaus - in Klammern -->)

Bitsetter hat es ja schon angesprochen. Ich würde empfehlen, den Fensterstil zumindest als Anhaltspunkt zu nehmen, ob das Fenster überhaupt in der Taskleiste dargestellt wird. Am besten ist es sowas immer sehr speziell für das Zielprogramm (ich gehe mal davon aus, daß es da eines gibt) zu schreiben und nicht zu generisch, weil es eben für eine generische Lösung zuviele unbekannte Variablen gibt.
  Mit Zitat antworten Zitat
Benutzerbild von smart
smart

Registriert seit: 19. Dez 2004
Ort: Bochum
1.266 Beiträge
 
Delphi 2007 Professional
 
#8

Re: mit dem Programmname an den Fenstertitel heran kommen?

  Alt 26. Aug 2007, 09:06
Zitat von Olli:
Anhand der Adresse den Namen des Empfängers meines Briefes rausfinden! (<-- in Klammern - es handelt sich um ein Hochhaus - in Klammern -->)

Bitsetter hat es ja schon angesprochen. Ich würde empfehlen, den Fensterstil zumindest als Anhaltspunkt zu nehmen, ob das Fenster überhaupt in der Taskleiste dargestellt wird. Am besten ist es sowas immer sehr speziell für das Zielprogramm (ich gehe mal davon aus, daß es da eines gibt) zu schreiben und nicht zu generisch, weil es eben für eine generische Lösung zuviele unbekannte Variablen gibt.
Hi,

der Hintergrund ist eigentlich ein ganz Anderer. Da muss ich etwas ausholen. Ich habe hier eine Steuersoftware für CNC- Drehbänke. Da ist eine abgespeckte WIN XP- Version dabei. Das heißt, keine Oberfläche, keine Taskleiste usw. Man installiert die Software und Windows wird sofort mit installiert. Frag nicht nach dem wieso oder warum.

Jetzt bin ich auf die Idee gekommen, eine eigene Shell zu schreiben. Das klappt auch ganz gut. Die Shell läuft prima. Jetzt bin ich gerade dabei einen Ersatz für die Taskleiste zu schreiben. Genau da habe ich etwas Probleme.

Gruß
Heike
Heike Kretschmann
Viele Grüße aus Bochum

kaum denkt man alles ist fertig, da fängt man wieder von Vorn an.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: mit dem Programmname an den Fenstertitel heran kommen?

  Alt 26. Aug 2007, 09:08
Handelt es ich wirklich um eine abgespeckte Version oder ist nur nicht der Explorer als Shell eingetragen? Existiert Explorer.exe?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von smart
smart

Registriert seit: 19. Dez 2004
Ort: Bochum
1.266 Beiträge
 
Delphi 2007 Professional
 
#10

Re: mit dem Programmname an den Fenstertitel heran kommen?

  Alt 26. Aug 2007, 09:27
Zitat von mkinzler:
Handelt es ich wirklich um eine abgespeckte Version oder ist nur nicht der Explorer als Shell eingetragen? Existiert Explorer.exe?
Guten Morgen.

Nein, der ist tatsächlich nicht dabei. Da ist nur, sagen wir mal, ein Grundwindows auf XP- Basis dabei. Es fehlt alles außer die Systemwiederherstellung. Für diesen speziellen Einsatz braucht man auch nicht mehr. Aber eine Shell wäre schon ganz nützlich.

Gruß
Heike
Heike Kretschmann
Viele Grüße aus Bochum

kaum denkt man alles ist fertig, da fängt man wieder von Vorn an.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz