سؤال

ولقد حصلت على التطبيق C ++ أنني ترقية من Win32 لOSX. أود أن تكون قادرة على إطلاق الملفات التعسفية كما لو فتح المستعمل منها. هذا من السهل على النوافذ باستخدام ShellExecute. كيف يمكنني تحقيق نفس الشيء على ماك؟

وشكرا!

هل كانت مفيدة؟

المحلول

ويمكنك الاتصال system(); في أي تطبيق C ++. على OSX، يمكنك استخدام فتح قيادة لإطلاق الأشياء كما لو كانوا بالضغط على.

ومن وثائق المفتوحة:

<اقتباس فقرة>   

والأمر مفتوح يفتح ملف (أو دليل أو URL)، تماما كما لو كان لديك النقر المزدوج رمز الملف. إذا لم يتم تحديد اسم التطبيق، يتم استخدام التطبيق الافتراضي كما هو محدد عبر LaunchServices لفتح الملفات المحددة.

وكل ذلك معا، فإنها تبدو مثل:

string command = "open " + filePath;
system(command.c_str());

نصائح أخرى

واقتراح آخر إذا كنت تعمل مع الكاكاو:

[[NSWorkspace sharedWorkspace] openFile:@"pathToFile"];

وهناك طرق أخرى مماثلة في NSWorkspace كذلك. على سبيل المثال لفتح تطبيق أو URL:

[[NSWorkspace sharedWorkspace] launchApplication:@"pathToApplication"];
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:@"URL"]];

ويمكن العمل من خلال [NSWorkspace sharedWorkspace] تعطيك أكثر قليلا من التحكم من الدعوة C system() القياسية.

تحرير: ملاحظة أنه يمكنك استخدام <لأ href = "http://developer.apple.com/DOCUMENTATION/Cocoa/Conceptual/ObjectiveC/Articles/ocCPlusPlus.html" يختلط = "نوفولو noreferrer "عنوان =" كيفية مزج-C الهدف وC ++ "مدونة> الهدف-C ++ لخلط C ++ مع رمز الهدف-C وبالتالي استدعاء الأساليب الكاكاو.

ويمكنك ببساطة استخدام نظام ()؛ وظيفة. على سبيل المثال، ويقول كنت تريد وضع قفص الاتهام الخاص بك في زاوية الشاشة.

ويمكنك ببساطة:

system(defaults write com.apple.dock pinning -string end);
sleep(1f);
system(killall Dock);

وانها بهذه السهولة. آمل ساعد:)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top