重要
已过时,仅Visual Studio 2022需要此操作,新版Visual Studio 2026内置的PowerShell已经自带命令补全(PSReadLine)
如果你下载了Windows Terminal和最新版的PowerShell Core就会发现,
如果不特殊设置的话,即使我们使用的Windows Terminal拥有命令补全,Visual Studio 2022的终端仍然没有任何补全。
重要
已过时,仅Visual Studio 2022需要此操作,新版Visual Studio 2026内置的PowerShell已经自带命令补全(PSReadLine)
如果你下载了Windows Terminal和最新版的PowerShell Core就会发现,
如果不特殊设置的话,即使我们使用的Windows Terminal拥有命令补全,Visual Studio 2022的终端仍然没有任何补全。
最近遇到了一个比较奇怪的需求:我的电脑只能访问到局域网内的服务器A,而服务器A可以访问到服务器B国内网络,
服务器B可以访问到国外网络。
当电脑简单地使用服务器A进行代理的时候,就可以变成正常的家庭网络了(只能访问国内网络);
但我此时需要使用服务器B进行代理以访问github的时候,发现系统代理已经被设置了。
这时我想起用Proxifier解决这个问题。
Proxifier通过对R0层劫持过滤驱动实现对所有软件都几乎透明的代理。
使用这个软件的原因除了可以更方便地处理路由之外,还是为了让不走系统代理的应用也可以走代理。
此外,实现嵌套代理也离不开它。
显示大量弹幕、允许重叠、弹幕字号允许不同
为了更好地进行讨论,我们先声明一些共识:
弹幕会从屏幕右边缘发射,并向左滚动
弹幕出现位置应该尽量靠上
几条弹幕之间应该尽量不要重叠,如果要重叠也要尽量重叠长度少一些
此外本文会创造/使用一些概念:
弹幕:计算的对象实体,有以下成员:
屏幕右边缘:由于弹幕是从右边出现的,所以右边缘和屏幕宽度都很重要
屏幕宽度:由窗口大小决定
位置(room),可以放置弹幕的空位,由于只需要关注屏幕右边缘线上的空位,所以位置实际上是一个一维变量,并且屏幕边缘上所有的位置合起来是一个一维数组,有以下成员:
停留时间:弹幕在屏幕上停留的时间
写分析器(源生成器)时经常需要引用别的包,但直接引用是无法运行的。
下面我们分不同情况来讨论在分析器项目如何对依赖进行引用。
下图中“包引用”指PackageReference,“项目引用”指ProjectReference。
其中项目引用是通过dll文件传递的,包引用是通过nupkg文件传递的,
最大的区别是项目引用默认不可以传递,而包引用默认可以传递。
注:首先需要确保引用的包支持.NET Standard 2.0。
在写C#程序时经常有与本地代码(C/C++)代码交互的需求。微软提供了许多种方式供我们选择,
最常用的有以下三种(A->B指A可以引用B):
修改IP、网关、子网掩码、DNS等配置时需要打开网络配置器配置,有些麻烦。尤其是经常需要重复性操作时(例如去学校图书馆蹭网)。用PowerShell脚本自动修改,方便简单而且十分轻量,程序只需占用1KB空间。
参考[1]
param([int] $inputNum)
$cim = Get-CimInstance Win32_NetworkAdapterConfiguration -Filter "IPEnabled = True"
function CheckReturn {
param ($obj)
if ($obj.ReturnValue -eq 0) {
"Successed"
}
else {
"Failed"
}
}
if ($inputNum -eq 0) {
CheckReturn(Invoke-CimMethod $cim -MethodName EnableDHCP)
CheckReturn(Invoke-CimMethod $cim -MethodName SetDNSServerSearchOrder)
}
elseif (($inputNum -gt 0) -and ($inputNum -lt 254)) {
CheckReturn(Invoke-CimMethod $cim -MethodName EnableStatic -Arguments @{
IPAddress = @("10.200.200." + $inputNum.ToString());
SubnetMask = @("255.255.255.0")
})
CheckReturn(Invoke-CimMethod $cim -MethodName SetGateways -Arguments @{
DefaultIPGateway = @("10.200.200.254")
})
CheckReturn(Invoke-CimMethod $cim -MethodName SetDNSServerSearchOrder -Arguments @{
DNSServerSearchOrder = @("114.114.114.114")
})
}
else {
"Input number between 1 to 253 to set network adapter, or 0 to disable network adapter"
}
在学校生活时经常有一种需求:访问某些网站(如校内系统)时需要使用校园网,访问另一些网站(如Steam、Github等)校园网很慢,需要使用手机浏览器等其他网络加速。此时我就觉得如果能同时使用两个网络该多好。
本文就介绍如何用PowerShell[1]实现这个功能(需要Windows平台,版本XP及以上)。
首先需要明确,同一张网卡是无法同时连接两个网络的(除非同时使用多个代理达到这种效果)。幸运的是,现在绝大多数电脑都同时拥有有线和无线两张网卡,所以可以实现这个效果。
紧接上篇《Windows用注册表修改键盘映射(扫描码)》,
用起来会发现处处不协调,除了需要熟悉新键位以外,最重要的是原本的快捷键也被拆散了,如原本都在左下角的Ctrl+Z/X/C/V。
所以我们应该在保证快捷键相对位置不变的情况下,修改其他字母的位置,在本专栏中使用键盘钩子(Keyboard Hook)。
使用C/C++代码方式修改可见下篇《用C/C++(Win32API)写软件修改键位》
据说Qwerty键盘是为了降低打字员打字速度,防止打字机卡机所作出的妥协。那么现在的键盘是否降低了咱敲代码的速度?试试看换成其他的键盘布局吧。
注:注册表修改映射的方法比较麻烦,但适用性还挺高,不需要依靠其他软件,所以不会被软件或游戏认定为作弊。