AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Wie schreibt man ein Klickprogramm?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie schreibt man ein Klickprogramm?

Ein Thema von darok · begonnen am 16. Okt 2007 · letzter Beitrag vom 16. Okt 2007
Antwort Antwort
darok

Registriert seit: 16. Okt 2007
1 Beiträge
 
#1

Wie schreibt man ein Klickprogramm?

  Alt 16. Okt 2007, 14:31
Hallo,

auch wenn sich der Titel blöd anhört ist die Frage ernst gemeint. Ich will damit keinen Betrug begehen - es geht mir nicht um Website oder Werbeeinnahmen sondern vielmehr um ein Programm, das automatisch den Cursor (beispielsweise per Zufallswerten für x und y) setzt und dann das OnClick-Event auslöst. Damit möchte ich ein anderen GUI-Programm automatisiert testen.

Leider reichen meine Programmierkenntnisse dafür nicht (mehr) aus, weil ich aus der Übung bin.

Ich weis nun nicht wo am besten anzufangen ist.
Vor allem frage ich mich, wie mein Programm überhaupt Auswirkungen auf ein anderes (den Prüfling / das zu testende GUI-Programm) haben kann. Muss ich dafür nicht erstmal ein Canvas oder so haben, welches den gesamten Bildschirm ausfüllt und dabei unsichtbar ist - keine Ahnung wie das gehen soll. Hat jemand ne (bitte einfache und verständliche) Idee. Die DUnit oder andere Testwerkzeuge sind einfach zu teuer und zu kompliziert.

Beispiel:
1.) wie kann ich den (Maus-?) Cursor setzen (für ein anderes Programm)?
2.) wie kann ich das Click-Event an beliebiger Cursor-Position für das andere Programm ausführen, um
damit dessen Reaktionen zu testen?
...

Ich frage mich, wie das die echten Profis machen. hmpf.

Falls jemand Erbarmen mit mir hat - schon mal vielen vielen Dank für die Hilfe im voraus.

Im Prinzip meine ich so etwas wie Zeichnen auf dem Bildschirm (egal welches Programm geöffnet ist) aber statt Zeichnen eben Klicken.

mfg
Darok
  Mit Zitat antworten Zitat
quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Wie schreibt man ein Klickprogramm?

  Alt 16. Okt 2007, 14:32
Du könntest dir das Handle des betreffenden Programmes suchen und dann mit SendMessage deine Aktionen an das Fenster senden !?

Ich habe sowas bisher immer mit AutoIt-Scripten realisiert

Grüße
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Wie schreibt man ein Klickprogramm?

  Alt 16. Okt 2007, 14:33
Zu all deinen Fragen findest du ihr im Forum schon Antworten. Benutz deshalb bitte die Suche.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#4

Re: Wie schreibt man ein Klickprogramm?

  Alt 16. Okt 2007, 14:46
Zitat von darok:
Ich frage mich, wie das die echten Profis machen. hmpf.
Die 'echten Profis' nutzen jedenfalls keine Mausklicks, um Ihre Software automatisiert zu testen.
Genauso wenig wie Image-Recognition oder sonstige Scherze.
Damit erreichst Du nämlich ganz fix das Ende der Fahnenstange.
  Mit Zitat antworten Zitat
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#5

Re: Wie schreibt man ein Klickprogramm?

  Alt 16. Okt 2007, 14:49
An der Stelle würde mich einmal interessieren, ob einer der "Profis" (oder sonstjemand) Erfahrung mit System.Windows.Automation hat, das soll ja eigentlich gerade dafür gemacht sein (bzw. halt die Win32-Variante UI Automation).
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.170 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Wie schreibt man ein Klickprogramm?

  Alt 16. Okt 2007, 17:33
Ich, ich, hallo hier.

Ich hatte mal mit AQTest versucht ein Delphi Win32-Programm automatisiert zu testen. Jedoch nach längerer Investitionszeit wieder aufgegeben.

- Der Aufwand ist nicht unerheblich (Vor allem wenn man versucht auch mit den Skripting-Möglichkeiten zu arbeiten)
- Die GUI sollte faktisch zu 99,9% eingefroren sein
- Komplexere GUI-Control wie umfangreiche Tree/Listviews sind sehr schwer zu testen
- GUI-Änderungen müssen mit erheblichen Aufwand im Testscript nachgezogen werden
- Platform-Tests (Unter 9x, ...) sind faktisch nur möglich wenn man eh das halbe Betriebssystem ausgetausch hat (IE/DCOM-Update, ...)
- Es sollte (fast) ein Vollzeit-Job sein. Man vergisst zu viel wenn man wieder einige Zeit nix damit gemacht hat.

GUI-Tests würde ich erst dann empfehlen wenn man praktisch schon zu 100% Basisklassen/Business-Logik per Unit-Tests tested. Diese sind nämlich viel einfacher zu realisieren und sehr nützliche. Und da ich keinen kenne der sowas macht ist meine Empfehlung eindeutig
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Gehstock

Registriert seit: 28. Jan 2006
Ort: Görlitz / Sachsen
489 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Wie schreibt man ein Klickprogramm?

  Alt 16. Okt 2007, 21:53
Hatte das vor ner weile mal so gelöst

Delphi-Quellcode:

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ToolWin, ComCtrls, StdCtrls, OleCtrls, SHDocVw, ExtCtrls, XPMan;


var
  Form1: TForm1;
  X,y,c,v:Integer;
  ok: longbool;
implementation

{$R *.dfm}




procedure TForm1.Timer1Timer(Sender: TObject);
begin

    SetCursorPos(X, Y); //Setze Mausposition
    mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); //Maustaste Druck
    mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); //Maustaste lösen
    X:= X+68;// Detzt x 68 pixel nach links
     if x>=600 then begin x:=300; Y:=Y+48; end; //ist x größer/gleich als 600 dann zurück auf 300 und y um 48 Pixel nach unten
      if y>=860 then begin x:=300; Y:=200; end; // ist y größer/gleich 860 dann x auf 300 und y auf 200
    Button2.caption:='Position '+inttostr(x)+' und '+inttostr(y); // zeigt Mausposition
   end;



procedure TForm1.FormCreate(Sender: TObject);
begin
X:= 300; Y:=200; //startposition Mauszeiger
c:=0; //Anzahl der clicks
v:=0; //Anzahl der votes
ok:=RegisterHotKey(Form1.Handle, ID, MOD_Alt, Ord('Q')); //Hotkey Programm beenden
ok:=RegisterHotKey(Form1.Handle, vot, MOD_Alt, Ord('V')); //Hotkeys Vote beenden
  if not ok then
  ok:=RegisterHotKey(Form1.Handle, ID+1, MOD_control, vk_f1); //alternativer Hotkey Programm beenden
end;
Marcel
  Mit Zitat antworten Zitat
Antwort Antwort


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 06:47 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