AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Sourcecode: Progressbars über ControlID von ext. App finden
Thema durchsuchen
Ansicht
Themen-Optionen

Sourcecode: Progressbars über ControlID von ext. App finden

Ein Thema von Amnon82 · begonnen am 24. Apr 2006 · letzter Beitrag vom 25. Apr 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Amnon82
Amnon82

Registriert seit: 5. Jan 2005
186 Beiträge
 
FreePascal / Lazarus
 
#1

Sourcecode: Progressbars über ControlID von ext. App finden

  Alt 24. Apr 2006, 16:03
http://img74.imageshack.us/img74/3289/getprog1tb.png

Ich wollte den Status von zwei Progressbars eines externen Programms auf zwei Progressbar in meinem eigenen Programm übertragen.
Nach langen hin und her hab ich nun endlich die Lösung gefunden. Da ich sie Euch nicht verenthalten will, könnt Ihr sie für Eure Programme verwenden.

Bitte schreibt bei Euren Credits meinen Nic und den von Assarbad da ichs ohne seinem FindAll-Programms nie geschafft hätte.
Angehängte Dateien
Dateityp: 7z getprogress_final_188.7z (220,1 KB, 10x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: VB-Progressbar auf eigenes Programm übertragen(COMCTL32.

  Alt 24. Apr 2006, 16:13
Zitat von Amnon82:
Kann man auf die COMCTL32.OCX zugreifen? Es könnten ja dort die Informationen, die ich brauche, liegen ...
Weniger, in ihm sind nur die Steuerelemente selbst definiert, mehr nicht...

Bye
Christian
  Mit Zitat antworten Zitat
Benutzerbild von Amnon82
Amnon82

Registriert seit: 5. Jan 2005
186 Beiträge
 
FreePascal / Lazarus
 
#3

Re: VB-Progressbar auf eigenes Programm übertragen(COMCTL32.

  Alt 24. Apr 2006, 16:41
http://img61.imageshack.us/img61/243...rogress8bh.png

Ich hab mal schnell ein Programm gecoded. Was mir aufgefallen ist:

Anscheinend wird die untere Progressbar übertragen.
Das hab ich auch mit dem VB-Programm erlebt.

Auch in meinem Beispiel sind die Namen der Progressbars identisch.
Sie lauten TProgressBar.

Delphi-Quellcode:
var
  wnd: HWND;
begin
  wnd := FindWindowbyTitle('ProgressTEST');
  wnd := FindWindowEx(wnd, 0, 'TProgressBar', nil);

  if wnd <> 0 then
  begin

  end;
end;
Wie kann man nun die Progressbars definieren?
Angehängte Dateien
Dateityp: 7z getprogress_v1_198.7z (202,8 KB, 6x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Amnon82
Amnon82

Registriert seit: 5. Jan 2005
186 Beiträge
 
FreePascal / Lazarus
 
#4

Re: VB-Progressbar auf eigenes Programm übertragen(COMCTL32.

  Alt 24. Apr 2006, 16:47
Mit folgendem Code hab ichs zumindest mit dem Delphiprogramm geschafft:

Delphi-Quellcode:
var
  wnd: HWND;
begin
  wnd := FindWindowbytitle('ProgressTEST');
  //wnd := FindWindowEx(wnd, 0, 'TProgressBar', nil);
  wnd := GetDlgItem(wnd, 11731874);

  if wnd <> 0 then
  begin
  progressbar1.position:=SendMessage(wnd, PBM_GETPOS, 0, 0);
  progressbar1.max:=SendMessage(wnd, PBM_GETRANGE, 0, 0);
  end;

  wnd := FindWindowbytitle('ProgressTEST');
  //wnd := FindWindowEx(wnd, 0, 'TProgressBar', nil);
  wnd := GetDlgItem(wnd, 7668440);

  if wnd <> 0 then
  begin
  progressbar2.position:=SendMessage(wnd, PBM_GETPOS, 0, 0);
  progressbar2.max:=SendMessage(wnd, PBM_GETRANGE, 0, 0);
  end;
end;
Nur einmal, da sich die Werte für wnd := GetDlgItem(wnd, 11731874); ändern ...
Wie kann man die ControlID bekommen?
  Mit Zitat antworten Zitat
Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: VB-Progressbar auf eigenes Programm übertragen(COMCTL32.

  Alt 24. Apr 2006, 16:56
TProgressBar ist nicht der Name, sondern der Klassenname

HWND FindWindowEx(
HWND hwndParent, // handle to parent window
HWND hwndChildAfter, // handle to a child window
LPCTSTR lpszClass, // pointer to class name
LPCTSTR lpszWindow // pointer to window name
);

Du suchst damit immer ein Control in einem Fenster...
Wenn du natürlich 2 hast, bekommst du trotzdem nur eins, welches das ist, ka...
Du must irgendwie das nächste auslesen, wie das genau geht, kann ich dir aber nicht sagen...

Aber hier im Forum gab es mal Code zu einm Tool mitdem man die Namen und Eigenschaften von Controls eines belibigen Programms auslesen konnte, vielleicht findest du das, das könnte dir sicher helfen...

Bye
Christian
  Mit Zitat antworten Zitat
Benutzerbild von Mackhack
Mackhack

Registriert seit: 29. Nov 2003
Ort: San Diego, CA/USA
1.446 Beiträge
 
Delphi 2006 Architect
 
#6

Re: VB-Progressbar auf eigenes Programm übertragen(COMCTL32.

  Alt 24. Apr 2006, 16:59
Guckst du hier
Um etwas Neues zu schaffen muss man seine Ohren vor den Nein-sagern verschliessen um seinen Geist öffnen zu können.
(George Lukas)
  Mit Zitat antworten Zitat
Benutzerbild von Amnon82
Amnon82

Registriert seit: 5. Jan 2005
186 Beiträge
 
FreePascal / Lazarus
 
#7

Re: ControlID einer Progressbar finden. Wie? (Ext. App)

  Alt 24. Apr 2006, 17:15
Mit Win-Xspy arbeite ich ja schon.

http://img112.imageshack.us/img112/4...ntrolid8fy.png

Ich komm bis zum Klassennamen. Wie kann ich nun die ControlID der Progressbar ermitteln?

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var
  wnd: HWND;
  ID1,ID2:Integer;
begin
  wnd := FindWindowbytitle('ProgressTEST');
  wnd := FindWindowEx(wnd, 0, 'TProgressBar', nil);
  ID1:= GetDlgCtrlID(wnd);

  wnd := GetDlgItem(wnd, ID1);

  if wnd <> 0 then
  begin
  progressbar1.position:=SendMessage(wnd, PBM_GETPOS, 0, 0);
  progressbar1.max:=SendMessage(wnd, PBM_GETRANGE, 0, 0);
  end;

  wnd := FindWindowbytitle('ProgressTEST');
  wnd := FindWindowEx(wnd, 0, 'TProgressBar', nil);
  ID2:= GetDlgCtrlID(wnd);
  wnd := GetDlgItem(wnd, ID2);


  if wnd <> 0 then
  begin
  progressbar2.position:=SendMessage(wnd, PBM_GETPOS, 0, 0);
  progressbar2.max:=SendMessage(wnd, PBM_GETRANGE, 0, 0);
  end;

  caption:=('GetProgress - ID1: '+inttostr(ID1)+' | ID2: '+inttostr(ID2));
end;
Ich hab mal den Titel geändert ...
  Mit Zitat antworten Zitat
Benutzerbild von Amnon82
Amnon82

Registriert seit: 5. Jan 2005
186 Beiträge
 
FreePascal / Lazarus
 
#8

Re: ControlID einer Progressbar finden. Wie? (Ext. App)

  Alt 24. Apr 2006, 17:25
http://img74.imageshack.us/img74/8876/switchids2yh.png

Die ID von der Klasse der Progressbar1 ist die der zweiten Progressbar und andersherum.
Nur klappt mein Code nicht:

Delphi-Quellcode:
var
  wnd: HWND;
  ID1,ID2:Integer;
begin
  {get IDs}
  wnd := FindWindowbytitle('ProgressTEST');
  wnd := FindWindowEx(wnd, 0, 'TProgressBar', nil);
  ID2:= GetDlgCtrlID(wnd);
  wnd := FindWindowbytitle('ProgressTEST');
  wnd := FindWindowEx(wnd, 0, 'TProgressBar', nil);
  ID1:= GetDlgCtrlID(wnd);

  {get Progressbar information}
  wnd := FindWindowbytitle('ProgressTEST');
  wnd := GetDlgItem(wnd, ID1);

  if wnd <> 0 then
  begin
  progressbar1.position:=SendMessage(wnd, PBM_GETPOS, 0, 0);
  progressbar1.max:=SendMessage(wnd, PBM_GETRANGE, 0, 0);
  end;

  wnd := FindWindowbytitle('ProgressTEST');
  wnd := GetDlgItem(wnd, ID2);


  if wnd <> 0 then
  begin
  progressbar2.position:=SendMessage(wnd, PBM_GETPOS, 0, 0);
  progressbar2.max:=SendMessage(wnd, PBM_GETRANGE, 0, 0);
  end;

  caption:=('GetProgress - ID1: '+inttostr(ID1)+' | ID2: '+inttostr(ID2));
end;
... man müsste alle IDs von den Progressbar-Klassen auslesen und zuordnen ...
  Mit Zitat antworten Zitat
Benutzerbild von Amnon82
Amnon82

Registriert seit: 5. Jan 2005
186 Beiträge
 
FreePascal / Lazarus
 
#9

Re: Sourcecode: Progressbars über ControlID von ext. App fin

  Alt 24. Apr 2006, 19:26
Ich hab nun die Lösung gefunden. Kann ein Mod diesen Beitrag zu OpenSource verschieben? Danke.
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#10

Re: Sourcecode: Progressbars über ControlID von ext. App fin

  Alt 24. Apr 2006, 19:27
Öhm, besser wäre es, du hättest dort gepostet und nicht deinen ersten Beitrag editiert. Jetzt ergibt der ganze Thread kein Sinn mehr
  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 16:04 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