Frage : Anklicken eines Knopfes in einer anderen Anwendung

Guter Tag alle:)das

I morgens versuchend, einen Knopf zu simulieren klicken an ein anderes Bewerbungsformular, ich haben dargestellt, dass es heraus außer einem kleinen snag.

As die zweite Anwendung meins ist und ich die Quelle für sie, die angebrachten Codearbeiten habe. Jedoch, wenn ich „ControlCaption“ sende, da eine leere Schnur, es nicht arbeitet - ich verstehe warum aber nicht, wie man um sie erhält. Ich würde, es vorziehen nicht notwendige Änderungen an der zweiten Anwendung nicht zu bilden.

My Frage: wie ich tue, simuliert ein Knopfklicken zu einem TSpeedButton, dem A) keinen Handgriff und B) hat, hat keinen Untertitel/Text nur ein Bild?

Kind Regards
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
6:
Procedure ClickButton (WindowName, WindowCaption,
  ControlName, ControlCaption: Schnur);
Var
  hParent, hControl: HWND;
Anfangen
  hParent: = 0;
  hControl: = 0;

  hParent: = FindWindow (pChar (WindowName), pChar (WindowCaption));

  Versuch
    BringWindowToTop (hParent);
    Application.ProcessMessages;

    hControl: = FindWindowEx (hParent, 0, pChar (ControlName),
      pChar (ControlCaption));

    Versuch
      SendMessage (hControl, BM_CLICK, 0.0);
    Schließlich
      hControl: = 0;
    Ende;
  Schließlich
    hParent: = 0;
  Ende;
Ende;

// WindowName: Der Name der Form (z.B.: TForm1)
// WindowCaption: Der Untertitel der Form (z.B.: Form1)
// ControlName: Der Name der Steuerung (z.B.: TButton)
// ControlCaption: Der Text/der Untertitel der Steuerung (z.B.: O.K.)

Verfahren Button2Click (Absender: TObject);
Anfangen
  ClickButton („TForm1“, „Form1“, „TSpeedbutton“, '');
Ende;

Antwort : Anklicken eines Knopfes in einer anderen Anwendung

Sie können einen Knopf nicht an klicken, der keinen Fensterhandgriff dadurch hat.

Ihre nur Lösung ist, eine Maus zu simulieren klicken an die Form und kennt die Koordinate des Knopfes

Auch ich sehe nicht die Notwendigkeit, Ihre Handgriffe bis 0 einzustellen einmal benutzt.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
Verfahren ClickSomewhere (WindowName, WindowCaption: PChar; X, Y: Ganze Zahl);
Var
  hParent: HWND;
Anfangen
 hParent: = FindWindow (WindowName, WindowCaption);
 wenn hParent0<> dann
  Anfangen
   BringWindowToTop (hParent);
   Application.ProcessMessages; // nicht sure, das nützlich ist
   SendMessage (hParent, BM_CLICK, X, Y);
  Ende;
Ende;
Weitere Lösungen  
 
programming4us programming4us