12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- 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()
- }
- }
|