import Cocoa import FlutterMacOS public class WlBaseHelpPlugin: NSObject, FlutterPlugin { public static func register(with registrar: FlutterPluginRegistrar) { let channel = FlutterMethodChannel(name: "wl_base_help", binaryMessenger: registrar.messenger) let instance = WlBaseHelpPlugin() registrar.addMethodCallDelegate(instance, channel: channel) } public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) { switch call.method { case "getPlatformVersion": result("macOS " + ProcessInfo.processInfo.operatingSystemVersionString) case "isAdmin": result(isAdminUser()) case "isProcessRunning": let processName = call.arguments as! String result(self.isProcessRunning(processName)) case "killProcess": let processName = call.arguments as! String self.killProcess(processName) result(nil) default: result(FlutterMethodNotImplemented) } } private func isAdminUser() -> Bool { // 实现检查管理员逻辑 // 这里仅作为示例,实际实现可能需要更复杂的系统调用 let task = Process() task.launchPath = "/usr/bin/groups" let pipe = Pipe() task.standardOutput = pipe task.launch() let data = pipe.fileHandleForReading.readDataToEndOfFile() let output: String = String(data: data, encoding: .utf8) ?? "" return output.contains("admin") } private func isProcessRunning(_ processName: String) -> Bool { let runningApps = NSWorkspace.shared.runningApplications return runningApps.contains { $0.localizedName == processName } } private func killProcess(_ processName: String) { let task = Process() task.launchPath = "/usr/bin/killall" task.arguments = [processName] task.launch() } }