g00001 最近的时间轴更新
g00001

g00001

V2EX 第 47953 号会员,加入于 2013-10-26 06:56:08 +08:00
根据 g00001 的设置,主题列表被隐藏
二手交易 相关的信息,包括已关闭的交易,不会被隐藏
g00001 最近回复了
18 天前
回复了 liuser666 创建的主题 C# 开发到一半忍不住吐槽一下 Windows 桌面开发
再强大再万能的东西都有他的局限。
例如万能的 Python 网上搜一下也有很多跑去用 Python + aardio 做桌面开发。

.Net 就是房车,复杂就是他的使命。
要简单和接口自由可以开 aardio 这种小自行车。

官网上有篇文章《看看短短几句 aardio 代码能做什么》,抠了几段过来:

aardio 调用原生 API
-----------------------------------
::User32.GetCursorPos({ INT x; INT y; });


aardio 调用 .Net
-----------------------------------

import console;
import dotNet;
var System = dotNet.load("System").import("System");
var uri = System.Uri("https://www.aardio.com")

console.log( uri.Host );
console.log( uri.GetHashCode() );


aardio 调用 Python
-----------------------------------
import console;
import py3;

var itertools = py3.import("itertools")
var permutations = itertools.permutations({"a","b","c"});
var pyList = py3.list(permutations);

for( item in pyList.each() ){
console.log(item);
}


将任何网络 API 自动导入 aardio
-----------------------------------
import web.rest.jsonLiteClient;
var http = web.rest.jsonLiteClient();

var countApi = http.api("https://api.countapi.xyz/hit{/domain}{/key}")
var data = countApi["key"].get();
Node.js 虽然强大,毕竟不是专为 Windows 设计,有时候这种坑是真不少,
用一段 aardio 代码解释一下 Node.js 为什么会有乱码:

import win.ui;
/*DSG{{*/
var winform = win.form(text="Node.js";right=754;bottom=457)
winform.add(
edit={cls="edit";left=21;top=19;right=727;bottom=426;edge=1;multiline=1;z=1}
)
/*}}*/

import nodeJs;
nodeJs.require("iconv-lite");

var testjs = /***
console.log("双方编码一致没乱码:")
console.log(process.argv);

const iconv = require('iconv-lite');
const { exec } = require('child_process');
exec('echo 中文', { encoding: 'binary' }, (err, stdout, stderr) => {
console.log("乱码了:",stdout);
stdout = iconv.decode(Buffer.from(stdout, 'binary'), 'cp936');
console.log("不乱码了:",stdout);
});
***/

var node = nodeJs.exec(testjs,"--log","测试 UTF-8 不会乱码 😀");
for( all,out,err in node.each() ){
winform.edit.print(all);
}

winform.show();
win.loopMessage();
没有东西是万能没有缺点的,
Python 虽强,但不是专为 Windows 设计,
Google 一下 “aardio python” 很多人还是会用 aardio + Python 混编。

aardio 里可以嵌入 Python,可以嵌入批处理,还可以嵌入 C 语言。
批处理做很多事还是很强的,每个语言都有他的长处。
38 天前
回复了 ling516 创建的主题 Windows bat 脚本怎么加密,不想让人看到
可以在 aardio 里嵌入 BAT 生成 EXE 文件,
方法很简单, 例如下面几句代码按 F7 就可以生成 EXE 了:

import console
import process.batch;

//批处理 for 遍历并拆分字符串
var bat = process.batch(`
@echo off
for %%i in (abc,def,xyz) do echo %%i
`)
console.log(bat.read(-1))

console.pause()

这样对付一般的小白用户没问题了,
如果还想增加难度,可以把关键信息用 C 语言实现,批处理可以与 aardio 混编,aardio 又可以方便地调用 C 写的 DLL,例如:

import tcc;
//编译 DLL
tcc.build( "/start.dll" ).code = /***
#include <windows.h>
__declspec(dllexport) int Add( int a,int b )
{
return a + b;
}
***/

//加载 DLL
var dll = raw.loadDll( "/start.dll",,"cdecl" );
//调用 C 函数
var result = dll.Add(12,3);
aardio 里网页调用原生 DLL 相对简单一些。

嵌入 Electron 组件调用 DLL :
---------------------------

import electron.app;
var theApp = electron.app();

theApp.html = /**
<script>
aardio = require("aardio");
aardio.msgBox("内容","标题");
</script>
**/

theApp.external = {
msgBox = function(text,caption){
::User32.MessageBox(theApp.hwndChrome,text,caption,0)
}
}

theApp.start("/res/index.html");
win.loopMessage();


WebView2 调用 DLL :
---------------------------

import win.ui;
var winform = win.form(text="WebView2")

import web.view;
var wb = web.view(winform);
wb.external = {
msgBox = function(text,caption){
::User32.MessageBox(winform.hwnd,text,caption,0)
}
}

wb.html = /**
<script> aardio.msgBox("内容","标题");</script>
**/

winform.show();
win.loopMessage();


JavaScript 直接调用 DLL :
---------------------------

import win.ui;
var winform = win.form(text="JS 直接调用 WinAPI")

import web.blink.form;
var mb = web.blink.form(winform);
web.blink.export(
user32 = ::User32;//导出 DLL 对象为 JS 全局变量
form = winform; //窗口对象也可以导出为 JS 变量
blink = mb; //mb 自己也可以导出为 JS 变量
);

mb.html = /**
<a href='javascript:
user32.MessageBox(0,"JS 直接调用 WinAPI","user32.MessageBox",0)
'>JS 直接调用 WinAPI 函数试一下</a>
**/

winform.show()
win.loopMessage();
部署非官方的文档网站对于一个需要频繁更新的产品确实会带来不必要的混乱和维护上的困难。

即使有开放的开源协议也不等于可以为所欲为,WinXray 是公共域开源,但是就有人抢注域名并在 GitHub 伪造大量虚假代码提交冒充官方,一个钓鱼项目欺骗了上千 star,你跟这些人讲道德规范?!抱歉他字典里没这东西。

问题不在于什么开源协议,即使你拿掉这个开源协议,明令禁止这样做,结果还是一样会有人这样干。写不出优秀的作品,能被一个优秀作品的作者怒喷 —— 毕竟也能让很多人找到在这个网络的存在感。
72 天前
回复了 Apple2023 创建的主题 iPhone 百度输入法 VS 搜狗输入法
Windows 10 上只需要一个小小的开源软件 wubiLex ( 900 KB ), 就可以使系统输入法摇身一变为各种输入法,这个软件自带一堆五笔 86 、98 、091 、新世纪方案的各种词库,还可以将微软五笔一键变为小鹤音形、郑码输入法。快捷打开、关闭、切换微软五笔、微软拼音、各种双拼方案、自动安装小鹤双拼方案。提供强悍的用户短语管理、可编程的超级热键功能,各种输入方案的图形反查拆解笔顺动画。

不用再倒腾第三方输入法了。
73 天前
回复了 ling516 创建的主题 Windows 图片识别软件 OCR,哪个最好 免费开源的
如果是要工具,找个现成的就可以了。
自己写代码生成 EXE 也很简单,其实 Windows 系统自带一个很不错的 OCR 组件,可以免费用, 下面写个例子:例如在屏幕上找到这个帖子的标题,然后把鼠标移动过去,aardio 代码:

import mouse;
import dotNet.ocr;
var ocr = dotNet.ocr();

var ocrResult = ocr.detectScreen()
var x,y = ocrResult.findPoint("图片识别软件 OCR,哪个最好 免费开源的",0.1);
mouse.moveTo(x,y,true)


或者免费开源的 chineseocr_lite 也不错,用 aardio 调用 chineseocr_lite 的例子:

import mouse;
import string.ocrLite;
import string.ocrLite.defaultModels;

var ocr = string.ocrLite();
var ocrResult = ocr.detectScreen()
var x,y = ocrResult.findPoint("图片识别软件 OCR,哪个最好 免费开源的",0.1);
mouse.moveTo(x,y,true)
关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3992 人在线   最高记录 5497   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 14ms · UTC 03:01 · PVG 11:01 · LAX 19:01 · JFK 22:01
♥ Do have faith in what you're doing.