AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Position einer Progressbar aus fremder Anwendung auslesen
Thema durchsuchen
Ansicht
Themen-Optionen

Position einer Progressbar aus fremder Anwendung auslesen

Ein Thema von POSHxxx · begonnen am 23. Okt 2005 · letzter Beitrag vom 23. Apr 2006
Antwort Antwort
Seite 1 von 3  1 23      
POSHxxx
(Gast)

n/a Beiträge
 
#1

Position einer Progressbar aus fremder Anwendung auslesen

  Alt 23. Okt 2005, 18:13
Hallo zusammen!

Ich möchte durch mein Programm die Position einer Progressbar einer anderen Anwendung ausgeben lassen.

Beispiel: Ich kopiere Daten mit der normalen Windows-"Kopieren"-Funktion; zu sehen ist der Kopieren-Dialog mit Progressbar und Zusatzinformationen.

Wie wir wissen, ist die aktuelle Position der Progressbar in der Eigenschaft Position gespeichert. Darauf möchte ich nun zugreifen.

Was ich weiß: Der Klassenname einer solchen Progressbar lautet "msctls_progress32". Ich kann das Handle mittels FindWindowEx etc. finden.

ABER: Welche Funktion aber benutze ich zum Auslesen der Position?
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Position einer Progressbar aus fremder Anwendung auslese

  Alt 23. Okt 2005, 18:17
das ganze geht mit
SendMessage(Handle, PBM_GETPOS, 0, 0) bzw.
SendMessage(Handle, PBM_DELTAPOS, 0, 0) die constanten sind in der unit commctrl definiert.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
POSHxxx
(Gast)

n/a Beiträge
 
#3

Re: Position einer Progressbar aus fremder Anwendung auslese

  Alt 23. Okt 2005, 18:57
Okay. Soweit so gut. Leider erhalte ich als Ausgabe eine sehr verwirrende Zeichenkombination.

Was mache ich falsch?

Code:
function TextUebergeben: string;
var
  hMemo, hHandleDesFensters : HWND;
  Text : pchar;
  len: Integer;
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]));
          result := String(Text);
        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;
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Position einer Progressbar aus fremder Anwendung auslese

  Alt 23. Okt 2005, 19:07
ich verstehe nicht ganz was du da mit getmem machst. Eigentlich gibt doch SendMessage schon die Position zurück!
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Palando

Registriert seit: 5. Mai 2005
72 Beiträge
 
#5

Re: Position einer Progressbar aus fremder Anwendung auslese

  Alt 23. Okt 2005, 20:35
Laut msdn muss der l- sowie der wParam der Message immer 0 sein und zurück bekommt man, wie mein vorschreiber schon sagte, ja die Position der Progressbar gleich von der Message.

Also ist in der Variable len die Position der Progressbar gespeichert. Wozu ist das andere da?
Markus
  Mit Zitat antworten Zitat
Van HelF

Registriert seit: 24. Okt 2005
Ort: Karlsbrunn
195 Beiträge
 
Delphi 7 Personal
 
#6

Re: Position einer Progressbar aus fremder Anwendung auslese

  Alt 24. Okt 2005, 12:45
Klingt jetzt vielleicht etwas dumm, aber welche units/api´s brauche ich für PBM_GETPOS auszulesen ?!
  Mit Zitat antworten Zitat
Benutzerbild von Ultimator
Ultimator

Registriert seit: 17. Feb 2004
Ort: Coburg
1.860 Beiträge
 
FreePascal / Lazarus
 
#7

Re: Position einer Progressbar aus fremder Anwendung auslese

  Alt 24. Okt 2005, 12:49
@VanHelf: uses ...CommCtrl...
Julian J. Pracht
  Mit Zitat antworten Zitat
Benutzerbild von Rastaman
Rastaman

Registriert seit: 6. Jan 2005
Ort: Lübbecke
575 Beiträge
 
Turbo C++
 
#8

Re: Position einer Progressbar aus fremder Anwendung auslese

  Alt 24. Okt 2005, 12:53
Is aber irgendwie Quatsch commctrl nur für die eine Nachricht einzubinden
Einfach einmal commctrl einbinden, onCreate

ShowMessage(IntToStr(PBM_GETPOS)); den Wert merken, commctrl entfernen und PBM_GETPOS selber definieren
Chuck Norris has counted to infinity ... twice!
  Mit Zitat antworten Zitat
Van HelF

Registriert seit: 24. Okt 2005
Ort: Karlsbrunn
195 Beiträge
 
Delphi 7 Personal
 
#9

Re: Position einer Progressbar aus fremder Anwendung auslese

  Alt 24. Okt 2005, 13:00
Vielen dank habe es auch geschafft die position herauszubekommen, nur welchen maximalwert hat die progressbar, da bei mir werte > 100 herauskommen
  Mit Zitat antworten Zitat
Benutzerbild von Rastaman
Rastaman

Registriert seit: 6. Jan 2005
Ort: Lübbecke
575 Beiträge
 
Turbo C++
 
#10

Re: Position einer Progressbar aus fremder Anwendung auslese

  Alt 24. Okt 2005, 13:28
Mit PBM_GETRANGE wobei wParam False sein muss, also so:

  max := SendMessage(pbhwnd, PBM_GETRANGE, False, 0);
Chuck Norris has counted to infinity ... twice!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 16:54 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