M8Test Help

剪切板

import com.m8test.script.GlobalVariables.* // 1. 创建协程作用域,这是启动异步任务所必须的 // _coroutines 是全局变量,对应 Coroutines 接口 val scope = _coroutines.newScope(null) // 2. 准备测试数据 val testContent = "M8Test Clipboard Test: " + System.currentTimeMillis() _console.log("准备写入剪贴板内容: " + testContent) // 3. 执行设置剪贴板操作 (setText) // _clipboard 是全局变量,对应 Clipboard 接口 _clipboard.setText(scope, testContent) // 4. 处理 setText 的结果 (Deferred<Boolean>) .then { currentScope, isSuccess -> if (isSuccess) { _console.log("写入操作成功,正在准备读取...") // 写入成功后,返回一个新的 Deferred<String?> 进行链式调用 // 这里调用 getText 读取剪贴板 // Kotlin Lambda 中最后一行是返回值 _clipboard.getText(currentScope) } else { _console.error("写入操作失败!") // 如果失败,返回一个包含 null 的已完成 Deferred currentScope.resolve(null) } } // 5. 处理 getText 的结果 (Deferred<String?>) .then { currentScope, clipboardText -> _console.log("从剪贴板读取到的内容: " + clipboardText) // 验证结果 if (clipboardText == testContent) { _console.log("✅ 测试通过:读取内容与写入内容一致。") } else { _console.error("❌ 测试失败:内容不一致。\n期望: $testContent\n实际: $clipboardText") } // 链式调用结束,返回一个空的 Deferred currentScope.resolve(true) } // 6. 全局异常捕获 .onError { error -> _console.error("测试过程中发生异常: " + error) } _script.getThreads().getMain().setBackground(true)
// 1. 创建协程作用域,这是启动异步任务所必须的 // $coroutines 是全局变量,对应 Coroutines 接口 def scope = $coroutines.newScope(null) // 2. 准备测试数据 def testContent = "M8Test Clipboard Test: " + System.currentTimeMillis() $console.log("准备写入剪贴板内容: " + testContent) // 3. 执行设置剪贴板操作 (setText) // $clipboard 是全局变量,对应 Clipboard 接口 $clipboard.setText(scope, testContent) // 4. 处理 setText 的结果 (Deferred<Boolean>) .then { currentScope, isSuccess -> if (isSuccess) { $console.log("写入操作成功,正在准备读取...") // 写入成功后,返回一个新的 Deferred<String?> 进行链式调用 // 这里调用 getText 读取剪贴板 return $clipboard.getText(currentScope) } else { $console.error("写入操作失败!") // 如果失败,返回一个包含 null 的已完成 Deferred,以便中断后续逻辑或传递失败状态 return currentScope.resolve(null) } } // 5. 处理 getText 的结果 (Deferred<String?>) .then { currentScope, clipboardText -> $console.log("从剪贴板读取到的内容: " + clipboardText) // 验证结果 if (clipboardText == testContent) { $console.log("✅ 测试通过:读取内容与写入内容一致。") } else { $console.error("❌ 测试失败:内容不一致。\n期望: $testContent\n实际: $clipboardText") } // 链式调用结束,返回一个空的 Deferred return currentScope.resolve(true) } // 6. 全局异常捕获 .onError { error -> $console.error("测试过程中发生异常: " + error) } $script.getThreads().getMain().setBackground(true)
// 1. 创建协程作用域,这是启动异步任务所必须的 // $coroutines 是全局变量,对应 Coroutines 接口 const scope = $coroutines.newScope(null); // 2. 准备测试数据 const testContent = "M8Test Clipboard Test: " + Packages.java.lang.System.currentTimeMillis(); $console.log("准备写入剪贴板内容: " + testContent); // 3. 执行设置剪贴板操作 (setText) // $clipboard 是全局变量,对应 Clipboard 接口 $clipboard.setText(scope, testContent) // 4. 处理 setText 的结果 (Deferred<Boolean>) .then((currentScope, isSuccess) => { if (isSuccess == true) { $console.log("写入操作成功,正在准备读取..."); // 写入成功后,返回一个新的 Deferred<String?> 进行链式调用 // 这里调用 getText 读取剪贴板 return $clipboard.getText(currentScope); } else { $console.error("写入操作失败!"); // 如果失败,返回一个包含 null 的已完成 Deferred,以便中断后续逻辑或传递失败状态 return currentScope.resolve(null); } }) // 5. 处理 getText 的结果 (Deferred<String?>) .then((currentScope, clipboardText) => { $console.log("从剪贴板读取到的内容: " + clipboardText); // 验证结果 if (clipboardText == testContent) { $console.log("✅ 测试通过:读取内容与写入内容一致。"); } else { $console.error("❌ 测试失败:内容不一致。\n期望: " + testContent + "\n实际: " + clipboardText); } // 链式调用结束,返回一个空的 Deferred return currentScope.resolve(true); }) // 6. 全局异常捕获 .onError(error => { $console.error("测试过程中发生异常: " + error); }); $script.getThreads().getMain().setBackground(true);
-- 1. 创建协程作用域,这是启动异步任务所必须的 -- _coroutines 是全局变量,对应 Coroutines 接口 local scope = _coroutines:newScope(nil) -- 2. 准备测试数据 local testContent = "M8Test Clipboard Test: " .. os.time() * 1000 -- os.time() is in seconds _console:log("准备写入剪贴板内容: " .. testContent) -- 3. 执行设置剪贴板操作 (setText) -- _clipboard 是全局变量,对应 Clipboard 接口 _clipboard:setText(scope, testContent) -- 4. 处理 setText 的结果 (Deferred<Boolean>) :_then(function(currentScope, isSuccess) if isSuccess then _console:log("写入操作成功,正在准备读取...") -- 写入成功后,返回一个新的 Deferred<String?> 进行链式调用 -- 这里调用 getText 读取剪贴板 return _clipboard:getText(currentScope) else _console:error("写入操作失败!") -- 如果失败,返回一个包含 nil 的已完成 Deferred,以便中断后续逻辑或传递失败状态 return currentScope:resolve(nil) end end) -- 5. 处理 getText 的结果 (Deferred<String?>) :_then(function(currentScope, clipboardText) _console:log("从剪贴板读取到的内容: " .. tostring(clipboardText)) -- 验证结果 if clipboardText == testContent then _console:log("✅ 测试通过:读取内容与写入内容一致。") else _console:error("❌ 测试失败:内容不一致。\n期望: " .. testContent .. "\n实际: " .. tostring(clipboardText)) end -- 链式调用结束,返回一个空的 Deferred return currentScope:resolve(true) end) -- 6. 全局异常捕获 :onError(function(error) _console:error("测试过程中发生异常: " .. tostring(error)) end) _script:getThreads():getMain():setBackground(true)
<?php // 通过 use 导入java类, 通过"m8test_java\全类名"的方式 use m8test_java\java\lang\System; /** @var m8test_java\com\m8test\script\core\api\coroutines\Coroutines $coroutines */ global $coroutines; /** @var m8test_java\com\m8test\script\core\api\device\Clipboard $clipboard */ global $clipboard; /** @var m8test_java\com\m8test\script\core\api\console\Console $console */ global $console; /** @var m8test_java\com\m8test\script\core\api\engine\Script $script */ global $script; // 1. 创建协程作用域,这是启动异步任务所必须的 // $coroutines 是全局变量,对应 Coroutines 接口 // 1. 创建协程作用域,并指定其调度器为脚本主线程 $scope = $coroutines->newScope(function ($context) { $context->setDispatcher(function ($dispatchers) { return $dispatchers->getScriptMain(); }); }); // 2. 准备测试数据 $testContent = javaString("M8Test Clipboard Test: ") . System::currentTimeMillis(); $console->log(javaString("准备写入剪贴板内容: "), $testContent); // 3. 执行设置剪贴板操作 (setText) // $clipboard 是全局变量,对应 Clipboard 接口 $clipboard->setText($scope, $testContent) // 4. 处理 setText 的结果 (Deferred<Boolean>) ->then(function ($currentScope, $isSuccess) use ($testContent, $clipboard) { global $console; if ($isSuccess) { $console->log(javaString("写入操作成功,正在准备读取...")); // 写入成功后,返回一个新的 Deferred<String> 进行链式调用 // 这里调用 getText 读取剪贴板 return $clipboard->getText($currentScope); } else { $console->error(javaString("写入操作失败!")); // 如果失败,返回一个包含 null 的已完成 Deferred,以便中断后续逻辑或传递失败状态 return $currentScope->resolve(null); } }) // 5. 处理 getText 的结果 (Deferred<String>) ->then(function ($currentScope, $clipboardText) use ($testContent) { global $console; $console->log(javaString("从剪贴板读取到的内容: "), $clipboardText); // 验证结果 if ($clipboardText == $testContent) { $console->log(javaString("✅ 测试通过:读取内容与写入内容一致。")); } else { $console->error(javaString("❌ 测试失败:内容不一致。\n期望: ") . $testContent . javaString("\n实际: ") . $clipboardText); } // 链式调用结束,返回一个空的 Deferred return $currentScope->resolve(true); }) // 6. 全局异常捕获 ->onError(function ($error) { global $console; $console->error(javaString("测试过程中发生异常: "), $error); }); $script->getThreads()->getMain()->setBackground(true);
# 导入所需的全局变量 from m8test_java.com.m8test.script.GlobalVariables import _clipboard from m8test_java.com.m8test.script.GlobalVariables import _console from m8test_java.com.m8test.script.GlobalVariables import _coroutines from m8test_java.com.m8test.script.GlobalVariables import _script # 1. 创建协程作用域,这是启动异步任务所必须的 # $coroutines 是全局变量,对应 Coroutines 接口 scope = _coroutines.newScope(lambda it: it.setDispatcher(lambda d: d.getScriptMain())) # 2. 准备测试数据 # System.currentTimeMillis() is Java, time.time() * 1000 is a Python equivalent import time testContent = "M8Test Clipboard Test: " + str(int(time.time() * 1000)) _console.log("准备写入剪贴板内容: " + testContent) # 3. 执行设置剪贴板操作 (setText) # $clipboard 是全局变量,对应 Clipboard 接口 _clipboard.setText(scope, testContent).then( # 4. 处理 setText 的结果 (Deferred<Boolean>) # 使用Python条件表达式处理 if/else 逻辑 lambda currentScope, isSuccess: ( _console.log("写入操作成功,正在准备读取..."), # 写入成功后,返回一个新的 Deferred<String?> 进行链式调用 # 这里调用 getText 读取剪贴板 _clipboard.getText(currentScope) )[-1] if isSuccess else ( _console.error("写入操作失败!"), # 如果失败,返回一个包含 null 的已完成 Deferred currentScope.resolve(None) )[-1] ).then( # 5. 处理 getText 的结果 (Deferred<String?>) lambda currentScope, clipboardText: ( _console.log("从剪贴板读取到的内容: " + str(clipboardText)), # 验证结果 ( _console.log("✅ 测试通过:读取内容与写入内容一致。") if clipboardText == testContent else _console.error(f"❌ 测试失败:内容不一致。\n期望: {testContent}\n实际: {clipboardText}") ), # 链式调用结束,返回一个空的 Deferred currentScope.resolve(True) )[-1] ).onError( # 6. 全局异常捕获 lambda error: _console.error("测试过程中发生异常: ", error.stackTraceToString()) ) _script.getThreads().getMain().setBackground(True)
# encoding: utf-8 # 1. 创建协程作用域,这是启动异步任务所必须的 # $coroutines 是全局变量,对应 Coroutines 接口 scope = $coroutines.newScope(nil) # 2. 准备测试数据 # 调用 Java 静态方法需要使用 M8testJava::Java::Lang::System::N__currentTimeMillis() testContent = "M8Test Clipboard Test: " + M8testJava::Java::Lang::System::N__currentTimeMillis().to_s $console.log("准备写入剪贴板内容: " + testContent) # 3. 执行设置剪贴板操作 (setText) # $clipboard 是全局变量,对应 Clipboard 接口 # 这里将 proc 改为了 block 形式,直接跟在方法后面 $clipboard.setText(scope, testContent) .then { |currentScope, isSuccess| if isSuccess $console.log("写入操作成功,正在准备读取...") # 写入成功后,返回一个新的 Deferred<String?> 进行链式调用 # 这里调用 getText 读取剪贴板 # Ruby Block 中最后一行表达式即为返回值,不要使用 return $clipboard.getText(currentScope) else $console.error("写入操作失败!") # 如果失败,返回一个包含 nil 的已完成 Deferred,以便中断后续逻辑或传递失败状态 currentScope.resolve(nil) end } .then { |currentScope, clipboardText| # 处理 getText 的结果 (Deferred<String?>) $console.log("从剪贴板读取到的内容: " + clipboardText.to_s) # 验证结果 if clipboardText.to_s == testContent $console.log("✅ 测试通过:读取内容与写入内容一致。") else $console.error("❌ 测试失败:内容不一致。\n期望: #{testContent}\n实际: #{clipboardText}") end # 链式调用结束,返回一个空的 Deferred currentScope.resolve(true) } .onError { |error| # 6. 全局异常捕获 $console.error("测试过程中发生异常: " + error.to_s) } $script.getThreads().getMain().setBackground(true)
09 December 2025