Macデスクトップ上の1つのウィンドウで、キーボードショートカットやキーシーケンスを別のウィンドウにプログラムで送信することはできますか?キーボードショートカットをMac OS Xウィンドウに送信
私は、アプリケーションのキーボードショートカット機能を使用して、APIを提供しないアプリケーションを制御しようとしています。
これはWindowsでもMacでも可能ですか?
ありがとう
Macデスクトップ上の1つのウィンドウで、キーボードショートカットやキーシーケンスを別のウィンドウにプログラムで送信することはできますか?キーボードショートカットをMac OS Xウィンドウに送信
私は、アプリケーションのキーボードショートカット機能を使用して、APIを提供しないアプリケーションを制御しようとしています。
これはWindowsでもMacでも可能ですか?
ありがとう
これを行う方法の1つは、Objective-CアプリケーションにApplescriptを埋め込むことです。このリンゴのスクリプトを実行する例えば 、System Events
アプリケーションに + Mコマンドを送信します:あなたはこのような何かを使用してCocoaアプリケーションで上記のスクリプトを埋め込むことができます
tell application "System Events" to keystroke "m" using {command down}
:
//AppControler.h
#import <Cocoa/Cocoa.h>
@interface AppController : NSObject {
NSAppleScript *key;
}
-(IBAction)sendkeys:(id)sender;
@end
//AppControler.m
#import "AppController.h"
@implementation AppController
-(IBAction)sendkeys:(id)sender
{
NSAppleScript *key = [[NSAppleScript alloc] initWithSource:@"tell application "System Events" to keystroke "m" using {command down}"];
[start executeAndReturnError:nil];
}
@end
あなたはAppleScriptを必要とせずにこれを行うこともできます。修飾子付きのキーコードを送信するコードの例を次に示します。
-edit:これはあなたが特定のアプリを対象とさせません、システム全体への唯一のポストのキーストローク(キーボードで押されたかのように)
#include <ApplicationServices/ApplicationServices.h>
// you can find key codes in <HIToolbox/Events.h>, for example kVK_ANSI_A is 'A' key
// modifiers are flags such as kCGEventFlagMaskCommand
void PostKeyWithModifiers(CGKeyCode key, CGEventFlags modifiers)
{
CGEventSourceRef source = CGEventSourceCreate(kCGEventSourceStateCombinedSessionState);
CGEventRef keyDown = CGEventCreateKeyboardEvent(source, key, TRUE);
CGEventSetFlags(keyDown, modifiers);
CGEventRef keyUp = CGEventCreateKeyboardEvent(source, key, FALSE);
CGEventPost(kCGAnnotatedSessionEventTap, keyDown);
CGEventPost(kCGAnnotatedSessionEventTap, keyUp);
CFRelease(keyUp);
CFRelease(keyDown);
CFRelease(source);
}
いいアイデアですが、OPはこれを別のターゲットプロセスにどのように送信しますか? – BigBrother
これはNX_KEYTYPE_PLAYで動作しないのはなぜですか?それはちょうど "y" – jLynx
パーフェクト。これを見ている他の人のために、リンゴのドキュメントは、AppleScriptで役に立つと思われます。 http://developer.apple.com/library/mac/#documentation/AppleScript/Conceptual/AppleScriptLangGuide/introduction/ASLR_intro.html。ありがとうございました – Adam