ログイン時に自動的に開く必要がある Xamarin.Mac アプリがあります。手動でクリックせずにアプリケーションにこの設定を取得させるにはどうすればよいですか?
質問する
703 次
2 に答える
0
LSSharedFileList ライブラリは Xamarin.Mac ではサポートされていないため、Xcode で dylib を作成し、Xamarin.Mac アプリケーションにバインドする必要があります。
1) Xcode で Dylib プロジェクトを作成します。この機能を追加します。
-(BOOL)AddLoginItem:(NSString *) AppPath{
// Your have to send this string as argument(i.e: on a textbox, write: /Applications/Calculator.app/)
// Get Login Items
LSSharedFileListRef loginItems = LSSharedFileListCreate(NULL, kLSSharedFileListSessionLoginItems, NULL);
if (loginItems) {
NSLog(@"[DEBUG]Your Application Path:%@",AppPath);
// Covert String to CFURLRef (It adds "file://" to your itemUrl1)
CFURLRef appUrl = (__bridge CFURLRef)[NSURL fileURLWithPath:(NSString*) AppPath];
NSLog(@"[DEBUG] appUrl:%@", appUrl);
// Now we add the requested Login Item
LSSharedFileListItemRef itemRef = LSSharedFileListInsertItemURL(loginItems, kLSSharedFileListItemLast, NULL, NULL, appUrl, NULL, NULL);
// Confirm that your path was correct and that you got a valid Login Item Reference
NSLog(@"[DEBUG]Item:%@", itemRef);
if (itemRef) CFRelease(itemRef);
// Your item just got added to the user's Login Items List
CFRelease(loginItems);
return true;
}
return false;
}
2) TextBox、プッシュ ボタン、およびそのアクションとアウトレット コントロールを含む Cocoa プロジェクトを作成します。このリンクを使用して、objective-c DLL からの C# バインディングを支援します。
3) Xamarin.Mac プロジェクトの MainWindow.cs で、次のコードを追加し、コードに合わせて必要な変更を加えます。前のリンクで作成した .Net Assembly 参照を追加することを忘れないでください。ライン。
// Some variables
private string TestItemName;
private bool rem;
// Button Click
partial void AddItemButton (Foundation.NSObject sender) {
LoginItemsDLL loginItem = new LoginItemsDLL();
// Enter this string on your TextBox TxtName /Applications/Calculator.app/
TestItemName = TxtName.StringValue;
rem=loginItem.AddLoginItem(TestItemName);
Console.WriteLine(rem);
}
アプリケーション パスを入力するには、アプリケーション名を受け取り、そのパスを AddLoginItem 引数に返す別の関数を使用します。それが役に立てば幸い!
于 2015-11-06T12:24:58.477 に答える