2009-06-10 8 views
0

Ich verwende die Cocoa Accessibility API, um den Wert eines Textfelds (AXTextField) in einer anderen Anwendung zu ändern, aber ich habe ein Problem: my Code identifiziert und ändert den Inhalt des fraglichen Textfelds korrekt und der Text des Feldes ändert sich sichtbar, aber die Änderungen werden nicht von dem Programm registriert, das ich zu steuern versuche. Gibt es eine Möglichkeit, dies mit der API zu tun, ohne Tastaturereignisse generieren zu müssen?Wert von AXTextField programmgesteuert festlegen (OS X Cocoa Accessibility-API)

Beispielcode:

AXUIElementCopyElementAtPosition(appRef, 
       clickPoint.x, 
       clickPoint.y, 
       &boxRef); 

NSString *valueToSet = [NSString stringWithFormat:@"%f",amount]; 
AXUIElementSetAttributeValue(boxRef,kAXValueAttribute,valueToSet); 

und das Textfeldänderung auf den Wert in „Menge“ angegeben, aber das andere Programm die Änderung nicht erkennen - ich muß gehen, um die Zahl in mir geben, es zu bekommen um die Änderung aufzuheben (ich kann den Unterschied erkennen, weil das Programm reagiert, wenn ein neuer Wert in das Feld eingegeben wird). Kann mir jemand in die richtige Richtung zeigen?

Antwort

1

Für Nachwelt: Informierte Quellen sagen mir, dass dies ein Fehler in der Anwendung ist, die ich versuche zu kontrollieren. Sie können den Unterschied erkennen, indem Sie den UI-Browser (http://prefabsoftware.com/uibrowser/) verwenden, um den Wert des Textfelds festzulegen. Wenn der UI-Browser die Änderung nicht durchführen kann, liegt die Angelegenheit außerhalb Ihrer Kontrolle.

0

Versuchen Sie das Textfeld zu sagen: Aktion „AXConfirm“ perform

Dies ist Applescript, aber was auch immer das Cocoa gleichwertig ist, kann er die Änderung Stick machen, auch wenn UI Browser nicht (ich es benutzt habe vor).

Verwandte Themen