0

オプションでSkypeステータスメッセージを読みたいx86_64アプリがあります。ただし、5 年前の skype mac フレームワークは 32 ビットであり、それを 64 ビット アプリ内でコンパイルする方法があれば、私は見つけられませんでした。

私の質問は、基本的に、これを行うにはどうすればよいですか? 本当に必要なのは、USERSTATUS AWAY/ONLINE 文字列を取得して設定することだけです。

AppleScript を使用すると、「Skype でこれを許可する必要がありますか」というダイアログが毎回表示されます。これは非常に非効率的で、まったくイライラします。

アドバイス?

32 ビットの CLI ラッパーを作成することを検討していますが、それはやり過ぎのようです。

4

5 に答える 5

2

Notification Watcher を使用して、Skype の API が NSDistributedNotifications だけで動作することを知りました。これらの通知を繰り返すことは、64 ビット アプリの魅力のように機能しました。

于 2010-07-02T05:28:18.173 に答える
0

私の記憶が正しければ、許可を許可すると許可ダイアログは表示されません。

私はSkypeAppleスクリプトをクリックするためにGUIを使用する必要があります。彼らが出てきたら。

tell application "Skype" to launch
delay 15
(* this part if the security API window comes up*)
tell application "System Events"
    tell application process "Skype"
        if exists (radio button "Allow this application to use Skype" of radio group 1 of window "Skype API Security") then
            click
            delay 0.5
            click button "OK" of window "Skype API Security"
        end if
    end tell
end tell
delay 5
于 2010-07-02T06:17:53.100 に答える
0

ツイッターからのリクエストに対する回答です。このコードを使用したのは、いつこの質問をした後ですか。これは問題なく機能するため、Skype API を調べる必要はありませんでしたが、最後に使用しようとしたときから更新されていると思います。とにかく...

スカイプと通信するときに使用する NSDistributedNotifications のリストを次に示します。

SKSkypeAPI通知

SKSkypeAttachResponse

SKSkype利用可能になりました

SKAvailabilityUpdate

SKSkypeWillQuit

他の種類の NSDistributedNotification と同様に、結果を登録して処理するだけです。

[[NSDistributedNotificationCenter defaultCenter]
     addObserver:self selector:@selector(setStatusAfterQuit:) 
     name:@"SKSkypeWillQuit"
     object:nil 
     suspensionBehavior:NSNotificationSuspensionBehaviorDeliverImmediately];

これらは、私が Skype と同期するために維持している iVar です。

NSString *applicationName;
NSString *mostRecentStatus;
NSString *mostRecentStatusMessage;
NSString *mostRecentUsername;
int APIClientID;
BOOL isConnected;
BOOL needToSetMessage;

NSString *nextMessage;
NSString *nextStatus;

Skype に接続する方法の例を次に示します。

-(void) skypeConnect{
    if (!isConnected){
        [[NSDistributedNotificationCenter defaultCenter] postNotificationName:@"SKSkypeAPIAvailabilityRequest"                                                                     
                                                                       object:nil
                                                                     userInfo:nil        
                                                           deliverImmediately:YES];
        
        
        
        [[NSDistributedNotificationCenter defaultCenter] postNotificationName:@"SKSkypeAPIAttachRequest"
                                                                    object:applicationName
                                                                  userInfo:nil
                                                        deliverImmediately:YES];
    }
}

ステータス メッセージを取得する例を次に示します (Skype に登録した後):

    -(void) processNotification:(NSNotification *) note{
        if ([[note name] isEqualToString:@"SKSkypeAttachResponse"]){
            
            if([[[note userInfo] objectForKey:@"SKYPE_API_ATTACH_RESPONSE"] intValue] == 0){
                NSLog(@"Failed to connect to Skype.");
                isConnected = NO;
            }else {
                NSLog(@"Connected to Skype.");
                
                APIClientID = [[[note userInfo] objectForKey:@"SKYPE_API_ATTACH_RESPONSE"] intValue];
                isConnected = YES;
                
                [self sendCommand:@"GET PROFILE MOOD_TEXT"];
                
                
                if (needToSetMessage){
                    [self sendCommand:[NSString stringWithFormat:@"SET USERSTATUS %@",nextStatus]]; 
                    [self sendCommand:[NSString stringWithFormat:@"SET PROFILE MOOD_TEXT %@",nextMessage]];
                    needToSetMessage = NO;
                    nextMessage = @"";
                    nextStatus = @"";
                }
    
            }
        
        }
    }
于 2011-06-11T04:08:46.210 に答える
0

Scripting Bridge を確認してください: Cocoa の Scripting Bridge プログラミング ガイドの紹介

于 2010-06-06T17:24:00.097 に答える
0

バンドルの内容を表示して「Skype.app」を開くと、フレームワークが 64 ビットと 32 ビットの skype.framework であることがわかりました。

于 2011-04-07T04:58:21.517 に答える