AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Button finden und betätigen

Ein Thema von Daniel B · begonnen am 31. Jan 2003 · letzter Beitrag vom 24. Nov 2004
Antwort Antwort
Seite 1 von 2  1 2      
Daniel B
(Gast)

n/a Beiträge
 
#1

Button finden und betätigen

  Alt 31. Jan 2003, 20:31
Hallöchen,

wie finde ich auf einer Registerkarte einen Button und betätige ihn?
Vielen Dank.

Grüsse, Daniel
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#2
  Alt 31. Jan 2003, 20:34
Moin Daniel,

meinst Du jetzt auf irgendeinen Button auf einem Tabsheet, oder den mit dem man ein bestimmtes Tabsheet auswählt?
Ausserdem:
In Deinem Programm, oder einem fremden?
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#3
  Alt 31. Jan 2003, 20:37
Moin Christian,

Du hast ja auch den Thread gelesen, wo es drum ging den Verlauf zu leeren.
Ich habe jetzt einen Weg gefunden, die IE-Einstellungen zu öffnen und den richtigen Reiter anzuzeigen. Nun muss ich noch irgendwie den Verlauf-Button betätigen. Dazu muss ich ihn erstmal finden. Und dann betätigen, die Abfrage die anschliessend kommt, kann man ja lassen.

Grüsse, Daniel
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#4
  Alt 31. Jan 2003, 20:39
Moin Daniel,

um den Button zu finden, gibt es die schönen Funktionen FindWindow/EnumWindow/EnumChildWindow.

Wenn Du dann das Handle den Button hast, kannst Du mit SendMessage eine BM_CLICK Message an diesen Senden.

Wie hast Du den Dialog geöffnet?
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#5
  Alt 31. Jan 2003, 20:43
Moin Chritian,
Zitat von Christian Seehase:
um den Button zu finden, gibt es die schönen Funktionen FindWindow/EnumWindow/EnumChildWindow.
Wenn Du dann das Handle den Button hast, kannst Du mit SendMessage eine BM_CLICK Message an diesen Senden.
hmm, more help needed!
Zitat:
Wie hast Du den Dialog geöffnet?
Delphi-Quellcode:
procedure TForm1.Button15Click(Sender: TObject);
begin
  ShellExecute(Handle, nil, 'rundll32.exe',
    'shell32.dll,Control_RunDLL inetcpl.cpl,,0', nil, SW_SHOW);
end;
Die 0 ist der Index des Reiters, also desjenigen der beim ausführen aktiv sein soll.
Da es 7 Reiter gibt, gehts also von 0 bis 6! Irgendwi eLogisch nicht?

Grüsse, Daniel
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#6
  Alt 31. Jan 2003, 21:08
Moin Daniel,

daran, dass es sich um eine CPL handelt hatte ich gar nicht gedacht

Probier's mal damit (bis auf das Ausführen des BM_CLICK ist's getestet)

Delphi-Quellcode:
procedure TfrmMAIN.Button1Click(Sender: TObject);

  function EnumChildProc(const AhWindow : DWORD;const ADummy : PDWORD) : Boolean; stdcall;

  var
    pBuffer : PChar;
    dwSize : DWORD;

  begin
    Result := true;
    dwSize := 255;
    pBuffer := AllocMem(dwSize);
    try
      if GetClassName(AhWindow,pBuffer,dwSize) = 0 then
      begin
        exit;
      end;
      if trim(pBuffer) <> 'Buttonthen
      begin
        exit;
      end;
    finally
      FreeMem(pBuffer,dwSize);
    end;
    dwSize := SendMessage(AhWindow,WM_GETTEXTLENGTH,0,0)+1;
    if dwSize = 0 then
    begin
      exit;
    end;
    pBuffer := AllocMem(dwSize);
    try
      SendMessage(AhWindow,WM_GETTEXT,dwSize,lparam(pBuffer));
      if trim(pBuffer) = '"&Verlauf" leerenthen
      begin
        SendMessage(AhWindow,BM_CLICK,0,0);
        Result := false;
      end;
    finally
      FreeMem(pBuffer,dwSize);
    end;
  end;

var
  hWindow : DWORD;

begin
  hWindow := FindWindow(nil,'Eigenschaften von Internet');
  if hWindow <> 0 then
  begin
    EnumChildWindows(hWindow,@EnumChildProc,0);
  end;
end;
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Piro
Piro

Registriert seit: 14. Jul 2003
Ort: Flintbek
810 Beiträge
 
Delphi XE2 Professional
 
#7

Re: Button finden und betätigen

  Alt 24. Nov 2004, 03:14
Moin habe mal euren code benutzt aber bei mir funzt nichts. wie ist es denn bei euch?

Vielleicht kann Daniel ja mal sagen, ob er es geschafft hat?

Sven
  Mit Zitat antworten Zitat
Benutzerbild von Sprint
Sprint

Registriert seit: 18. Aug 2004
Ort: Edewecht
712 Beiträge
 
Delphi 5 Professional
 
#8

Re: Button finden und betätigen

  Alt 24. Nov 2004, 05:23
Hab das mal ein bisschen umgeschrieben. Und "Dateien löschen" genommen, damit du sehen kannst, das es funktioniert.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  SI: TStartupInfo;
  PI: TProcessInformation;
  FindHWnd: HWND;
begin

  FillChar(SI, SizeOf(TStartupInfo), 0);
  SI.cb := SizeOf(TStartupInfo);
  if CreateProcess(nil, 'RUNDLL32.EXE shell32.dll,Control_RunDLL inetcpl.cpl,,0', nil, nil, False, 0, nil, nil, SI, PI) then
  begin
    WaitForInputIdle(PI.hProcess, INFINITE);
    FindHWnd := FindWindow(nil, 'Eigenschaften von Internet');
    if IsWindow(FindHWnd) then
    begin
      FindHWnd := FindWindowEx(FindHWnd, 0, '#32770', 'Allgemein');
      if IsWindow(FindHWnd) then
      begin
        FindHWnd := FindWindowEx(FindHWnd, 0, 'Button', '&Dateien löschen...');
        if IsWindow(FindHWnd) then
        begin
          SendMessage(FindHWnd, BM_CLICK, 0, 0);
        end;
      end;
    end;
    CloseHandle(PI.hProcess);
    CloseHandle(PI.hThread);
  end;

end;
Ciao, Sprint.

"I don't know what I am doing, but I am sure I am having fun!"
  Mit Zitat antworten Zitat
Benutzerbild von Piro
Piro

Registriert seit: 14. Jul 2003
Ort: Flintbek
810 Beiträge
 
Delphi XE2 Professional
 
#9

Re: Button finden und betätigen

  Alt 24. Nov 2004, 11:27
Danke für deine Antwort. Ich hätte auch mal gerne mehr Durchblick bei solchen Sachen. Was sollte ich mir denn mal ansehen oder durchlesen? Diese ganzen Befehle sind mir ein rätsel.

Danke.
  Mit Zitat antworten Zitat
Benutzerbild von Piro
Piro

Registriert seit: 14. Jul 2003
Ort: Flintbek
810 Beiträge
 
Delphi XE2 Professional
 
#10

Re: Button finden und betätigen

  Alt 24. Nov 2004, 11:31
habe das gerade mal getestet aber wenn ich das auf verlauf leeren ändere, will es nicht funzen.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  SI: TStartupInfo;
  PI: TProcessInformation;
  FindHWnd: HWND;
begin

  FillChar(SI, SizeOf(TStartupInfo), 0);
  SI.cb := SizeOf(TStartupInfo);
  if CreateProcess(nil, 'RUNDLL32.EXE shell32.dll,Control_RunDLL inetcpl.cpl,,0', nil, nil, False, 0, nil, nil, SI, PI) then
  begin
    WaitForInputIdle(PI.hProcess, INFINITE);
    FindHWnd := FindWindow(nil, 'Eigenschaften von Internet');
    if IsWindow(FindHWnd) then
    begin
      FindHWnd := FindWindowEx(FindHWnd, 0, '#32770', 'Allgemein');
      if IsWindow(FindHWnd) then
      begin
        FindHWnd := FindWindowEx(FindHWnd, 0, 'Button', '&"Verlauf" leeren');
        if IsWindow(FindHWnd) then
        begin
          SendMessage(FindHWnd, BM_CLICK, 0, 0);
        end;
      end;
    end;
    CloseHandle(PI.hProcess);
    CloseHandle(PI.hThread);
  end;

end;
  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 12:20 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