Vraag : Het klikken van een knoop in een andere toepassing

Goede dag allen:)

I am een knoop proberen te simuleren klikt op een ander aanvraagformulier, heb ik het uit behalve één kleine snag.

As de tweede toepassing mijn is en ik de bron voor het, de codewerken in bijlage heb. Nochtans wanneer ik „ControlCaption“ verzend aangezien een leeg koord, het niet werkt - ik begrijp waarom maar hoe te rond het te krijgen niet. Ik zou verkiezen onnodige wijzigingen aan de tweede toepassing niet te maken. vraag

My: hoe simuleer ik een knoop klik aan een TSpeedButton die a) geen handvat heeft en B) geen titel/tekst slechts een beeld heeft?

Vriendelijke groeten
" codeBody "
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:
36:
Procedure ClickButton (WindowName, WindowCaption,
  ControlName, ControlCaption: Koord);
Var
  hParent, hControl: HWND;
Begin
  hParent: = 0;
  hControl: = 0;

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

  Probeer
    (hParent) BringWindowToTop;
    Application.ProcessMessages;

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

    Probeer
      SendMessage (hControl, BM_CLICK, 0.0);
    Tot slot
      hControl: = 0;
    Eind;
  Tot slot
    hParent: = 0;
  Eind;
Eind;

// WindowName: De naam van de vorm (b.v.: TForm1)
// WindowCaption: De titel van de vorm (b.v.: Form1)
// ControlName: De naam van de controle (b.v.: TButton)
// ControlCaption: De tekst/de titel van de controle (b.v.: O.k.)

Procedure Button2Click (Afzender: TObject);
Begin
  ClickButton („TForm1“, „Form1“, „TSpeedbutton“, '');
Eind;

Antwoord : Het klikken van een knoop in een andere toepassing

u kunt niet op een knoop klikken die geen vensterhandvat met deze methode heeft.

Uw enige oplossing is een muis te simuleren klikt op de vorm, kennend de coördinaat van de knoop

Ook, zie ik niet de behoefte om uw handvatten aan 0 te plaatsen zodra gebruikt.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
Procedure ClickSomewhere (WindowName, WindowCaption: PChar; X, Y: Geheel);
Var
  hParent: HWND;
Begin
 hParent: = FindWindow (WindowName, WindowCaption);
 als hParent0<> toen
  Begin
   (hParent) BringWindowToTop;
   Application.ProcessMessages; niet zeker // dat nuttig is
   hParent SendMessage (, BM_CLICK, X, Y);
  Eind;
Eind;
Andere oplossingen  
 
programming4us programming4us