![]() |
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 ? |
Re: Position einer Progressbar aus fremder Anwendung auslese
Was hast du eigentlich vor?
|
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:
|
Re: Position einer Progressbar aus fremder Anwendung auslese
@Rastaman : Ganz genau :thumb:
|
Re: Position einer Progressbar aus fremder Anwendung auslese
Zitat:
(schon in der nächsten werden die Dialoge anders aussehen) |
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! |
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; |
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 ? |
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.
|
Re: Position einer Progressbar aus fremder Anwendung auslese
Vielen dank für den tipp, hat nach ein bisschen suche im forum funktioniert
Delphi-Quellcode:
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?!
ShowWindow(hHandleDesFensters,SW_HIDE);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:37 Uhr. |
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