Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Position einer Progressbar aus fremder Anwendung auslesen (https://www.delphipraxis.net/55588-position-einer-progressbar-aus-fremder-anwendung-auslesen.html)

Van HelF 24. Okt 2005 13:35

Re: Position einer Progressbar aus fremder Anwendung auslese
 
Ok, funktioniert auch (aber etwas anders : SendMessage(hMemo, PBM_GETRANGE, 0, 0))
ist es möglich die restzeit auszulesen
und das kopieren fenster unsichtbar zu machen, sodass man nur noch den eigenen fortschrittsbalken hat ?

Luckie 24. Okt 2005 15:10

Re: Position einer Progressbar aus fremder Anwendung auslese
 
Was hast du eigentlich vor?

Rastaman 24. Okt 2005 15:11

Re: Position einer Progressbar aus fremder Anwendung auslese
 
Den Kopieren-Dialog von Windows finden, Progressbarstatus und Restzeit auslesen, ihn unsichtbar machen und halt alles in einem eigenen Programm anzeigen, soweit ich das verstanden habe :cyclops:

Van HelF 24. Okt 2005 15:29

Re: Position einer Progressbar aus fremder Anwendung auslese
 
@Rastaman : Ganz genau :thumb:

NicoDE 24. Okt 2005 16:22

Re: Position einer Progressbar aus fremder Anwendung auslese
 
Zitat:

Zitat von Rastaman
Den Kopieren-Dialog von Windows finden, Progressbarstatus und Restzeit auslesen, ihn unsichtbar machen und halt alles in einem eigenen Programm anzeigen, soweit ich das verstanden habe :cyclops:

Viel Spaß mit neuen Windows-Versionen...
(schon in der nächsten werden die Dialoge anders aussehen)

POSHxxx 24. Okt 2005 18:36

Re: Position einer Progressbar aus fremder Anwendung auslese
 
Nur zum besseren Verständnis:

Ich will auf die Position einer Progressbar zugereifen, um bei umfangreichen Aktionen in regelmäßigen Abständen per Sprachausgabe den Fortschritt ausgeben zu lassen.

Danke für eure Hilfe!

Van HelF 24. Okt 2005 19:04

Re: Position einer Progressbar aus fremder Anwendung auslese
 
Ich hoffe das hilft dir weiter, hab deinen soruke mal schnell etwas umgeschrieben.

Delphi-Quellcode:
procedure TextUebergeben(var max, len: integer);
var
  hMemo, hHandleDesFensters : HWND;
  Text : pchar;

begin
  SetLastError(0);
  hHandleDesFensters := FindWindow(nil, 'Kopieren...');
  if hHandleDesfensters <> 0 then
  begin
    hMemo:= FindWindowEx(hHandleDesFensters, 0, 'msctls_progress32', nil);
    if hMemo <> 0 then
    begin
      len := SendMessage(hMemo, PBM_GETPOS, 0, 0);
      GetMem(Text, len+1);
      try
        try
          SendMessage(hMemo, PBM_GETPOS, len+1, Integer(@Text[0]));//Position
          max := SendMessage(hMemo, PBM_GETRANGE, 0, 0); //Maximalwert
        except
          on E: EOutOfMemory do Messagebox(form1.Handle, PChar(E.Message), 'Fehler', MB_ICONSTOP);
        end;
      finally
        FreeMem(Text, len+1);
      end;
    end
    else
      Messagebox(form1.Handle, PChar(SysErrorMessage(GetLastError)), 'Fehler', MB_ICONSTOP);
  end
  else
    Messagebox(form1.Handle, PChar(SysErrorMessage(GetLastError)), 'Fehler', MB_ICONSTOP);
end;

procedure TForm1.Button1Click(Sender: TObject);
var pos, max:integer;
begin
  try
    textuebergeben(max, pos);
    showmessage(inttostr(pos)+'/'+inttostr(max));
  except
  end;
end;

Van HelF 24. Okt 2005 20:14

Re: Position einer Progressbar aus fremder Anwendung auslese
 
Aber wieder zur frage :
Den Kopieren-Dialog von Windows finden, Progressbarstatus (soweit erledigt) und Restzeit auslesen, ihn unsichtbar machen und halt alles in einem eigenen Programm anzeigen

hat jemand eine ahnung wie man das realisieren könnte ?

SirThornberry 24. Okt 2005 20:18

Re: Position einer Progressbar aus fremder Anwendung auslese
 
@Helf: Du hast doch selbst mit dem Source den Ansatz gepostet. Du hast das Handle vom Dialog, du hast das Handle von der Progressbar, du weißt wie man die Position und das Max abfragt, jetzt brauchst du nur noch mit ShowWindow den Dialog ausblenden.

Van HelF 24. Okt 2005 20:34

Re: Position einer Progressbar aus fremder Anwendung auslese
 
Vielen dank für den tipp, hat nach ein bisschen suche im forum funktioniert
Delphi-Quellcode:
ShowWindow(hHandleDesFensters,SW_HIDE);
Nur jetzt hätte ich noch 2 fragen, wie lese ich die restzeit aus, und wie kann ich in dem jetzt unsichtbaren kopieren fenster den abbrechen button drücken, wenn das überhaupt dann noch möglich ist?!


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:37 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz