Bu aslında mümkündür. Burada mevcut bir örnek uygulamasını yaptık -
SendKey at GitHub Ben kolay yol aldı ve basit bir AppleScript ile başladı:
delay 5
tell application "System Events"
repeat 10 times
keystroke "#"
end repeat
end tell
komut 'gecikme' sadece bana bir metin düzenleyicisi yapmak için yeterli zamanı verir En eski uygulama. Ne olduğunu görmek için bu betiği çalıştırmaya başlamanızı öneririm.
Sonra ben varsayılan Application şablonunu kullanarak bir Xcode proje oluşturulur ve yazdı:
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
NSString* scriptPath = [[NSBundle mainBundle] pathForResource:@"sendkey" ofType:@"scpt"];
NSURL* scriptURL = [NSURL fileURLWithPath:scriptPath];
NSDictionary* errors;
NSAppleScript* script = [[NSAppleScript alloc] initWithContentsOfURL:scriptURL error:&errors];
NSLog(@"%@", errors);
[script executeAndReturnError:&errors];
NSLog(@"%@", errors);
}
Bunu test çalıştığını doğrulandı için korumalı alan açmadan ve onu yaptılar. Sonra Sandboxing'i açtım ve tabiki kırdı. Ama neyse ki, bunun etrafında bir yol var. Şimdilik, Apple,
com.apple.security.temporary-exception.apple-events adında geçici bir yetki veriyor. Ve istisnanın 'com.apple.systemevents' için verilmesini isteyebilirsiniz. Yine beklendiği gibi çalıştı,
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.temporary-exception.apple-events</key>
<array>
<string>com.apple.systemevents</string>
</array>
<key>com.apple.security.app-sandbox</key>
<true />
</dict>
</plist>
Benim korumalı app bu hakkını eklendi ve imzalar kez: Bu gibi haklara sahibim dosya görüntüsü.
Şimdi, diğer anahtarları göndermek istiyorsanız, bu soru & cevabını, komut dosyanızın anında nasıl oluşturulacağını gösterecektir - Passing variables to an applescript.
Elbette, bunların hepsini bir kez çalıştırdıktan sonra, olayı kod içinde oluşturmak için NSAppleEventDescriptor ve ilgili sınıflara dönebilirsiniz, ancak bu teknikle oynamamıştım.
Elma yapmanız önermek lütfen unutmayın geçici yetki kullanırken aşağıdaki: seçerseniz Artık uygulamanızı sandbox değil
veya geçici istisna hakkını kullanmak, Apple'ın hata raporlama sistemi kullanmak Apple ile karşılaştığınız sorunu bildirin. Apple, OS X platformunu geliştirdiği için isteklerini dikkate alır. Ayrıca, istisnanın neden gerekli olduğunu açıklamak için iTunes Connect'te İnceleme Notları alanını da kullanın.
Hangi uygulamaların bunu ve ne zaman yeniden oluşturmadığım hakkında yeterli bilgi verebilir misiniz? Bunu korumalı bir uygulamadan hiç görmedim. –
Lütfen aText.app adresini kontrol edin, sadece Google'da bir metin yazın ve ilk bağlantıyı kontrol edin.Site sürümlerinin kum kutulu olmadığı, uygulama mağazasının sürümünün geçici bir istisna olmaksızın sanal alanda çalıştığı ve çalıştığı görülüyor. lütfen ben yanlış olup olmadığını bildirin.Teşekkürler – AmitSri