惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Visual Studio Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
N
Netflix TechBlog - Medium
博客园 - 叶小钗
大猫的无限游戏
大猫的无限游戏
S
SegmentFault 最新的问题
V
V2EX
IT之家
IT之家
J
Java Code Geeks
Hacker News - Newest:
Hacker News - Newest: "LLM"
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
GbyAI
GbyAI
D
Docker
S
Secure Thoughts
Recent Announcements
Recent Announcements
Webroot Blog
Webroot Blog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
云风的 BLOG
云风的 BLOG
博客园_首页
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Security Archives - TechRepublic
Security Archives - TechRepublic
酷 壳 – CoolShell
酷 壳 – CoolShell
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
N
News | PayPal Newsroom
S
Security @ Cisco Blogs
I
InfoQ
Last Week in AI
Last Week in AI
SecWiki News
SecWiki News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
W
WeLiveSecurity
T
Troy Hunt's Blog
Recent Commits to openclaw:main
Recent Commits to openclaw:main
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Attack and Defense Labs
Attack and Defense Labs
美团技术团队
T
The Blog of Author Tim Ferriss
Google DeepMind News
Google DeepMind News
Martin Fowler
Martin Fowler
B
Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Scott Helme
Scott Helme
T
Tor Project blog
Know Your Adversary
Know Your Adversary
有赞技术团队
有赞技术团队
Hugging Face - Blog
Hugging Face - Blog
Recorded Future
Recorded Future
C
Cyber Attacks, Cyber Crime and Cyber Security
AI
AI
G
Google Developers Blog

VnYzm的博客

游戏玩后感:ReLief:献给亲爱的你 我的周边(谷子)分享 游戏玩后感:Kanon 简谱:致真实的你 《Rust中常见的有关生命周期的误解》学习笔记 简谱:StarMap 简谱:かく咲きたらばいと恋ひめやも 简谱:东风 简谱:无法诉说的思念 简谱:Girlish 游戏玩后感:时钟机关的Layline 简谱:风之琶音 简谱:星空的记忆 简谱:因为遇见了你 简谱:月童 番茄简谱脚本转调器 游戏玩后感:青空下的约定:Refine 游戏玩后感:在这苍穹展翅 书籍读后感:控制论与科学方法论 游戏玩后感:恋爱表达式 游戏玩后感:樱之诗 MLIR-tutorial学习笔记 游戏玩后感:潜伏之赤途 游戏玩后感:纯爱咖啡厅:帕露菲重制版 游戏玩后感:智以泪聚 游戏玩后感:初雪樱 游戏玩后感:告别回忆:从今以后 游戏玩后感:梦灯花 游戏玩后感:金辉恋曲四重奏 游戏玩后感:五彩斑斓的世界 昇腾310P使用记录 游戏玩后感:AIR 游戏玩后感:弹丸论破 游戏玩后感:流景之海的艾佩莉亚 Xilinx_HLS上板过程记录 游戏玩后感:告别回忆2 游戏玩后感:恋爱绮谭 Faiss和Rapidsai_Raft使用记录 游戏玩后感:近月少女的礼仪 游戏玩后感:樱色之云,绯色之恋 游戏玩后感:幸运草的约定 游戏玩后感:星之梦、候鸟和丸子与银河龙 游戏玩后感:白色相簿2 Windows上使用VTune分析PyTorchExtension调用的Cpp程序 SpinalHDL上板过程记录 游戏玩后感:仰望夜空的星辰 最简单的算卦方法之一:梅花易数法 游戏玩后感:苍之彼方的四重奏 krkr引擎解包工具介绍 自定义CUDA实现PyTorch算子的四种简单方法 游戏玩后感:星空的记忆 游戏玩后感:9nine 游戏玩后感:AtriMyDearMoments 游戏玩后感:极限脱出 游戏玩后感:魔女的夜宴 SSH实现多跳代理 动漫观后感:向山进发 flv重封装H264、AAC流 动漫观后感:夏日重现 CSP模板 游戏玩后感:海沙风云 动漫观后感:灵能百分百 游戏玩后感:交响乐之雨 游戏玩后感:爱上火车LastRun 游戏玩后感:LittleBustersEX 游戏玩后感:SummerPockets 游戏玩后感:逆转裁判 Ultra96V2开发板简单使用 SpinalWorkshop实验笔记(三) SpinalWorkshop实验笔记(二) SpinalWorkshop实验笔记(一) PYNQ开发板上使用USB声卡+OSS兼容层播放音频 TestOS移植K210开发板 rCore-Tutorial-Book-v3学习笔记(七) 动漫观后感:凉宫春日的忧郁 rCore-Tutorial-Book-v3学习笔记(♭七) rCore-Tutorial-Book-v3学习笔记(六) rCore-Tutorial-Book-v3学习笔记(五) rCore-Tutorial-Book-v3学习笔记(四) rCore-Tutorial-Book-v3学习笔记(三) rCore-Tutorial-Book-v3学习笔记(二) rCore-Tutorial-Book-v3学习笔记(一) 游戏玩后感:RewritePlus MIT-6.S081-2020实验(xv6-riscv64)十一:net MIT-6.S081-2020实验(xv6-riscv64)十:mmap MIT-6.S081-2020实验(xv6-riscv64)九:fs MIT-6.S081-2020实验(xv6-riscv64)八:lock MIT-6.S081-2020实验(xv6-riscv64)七:thread MIT-6.S081-2020实验(xv6-riscv64)六:cow MIT-6.S081-2020实验(xv6-riscv64)五:lazy MIT-6.S081-2020实验(xv6-riscv64)四:traps MIT-6.S081-2020实验(xv6-riscv64)三:pgtbl MIT-6.S081-2020实验(xv6-riscv64)二:syscall 动漫观后感:吹响吧上低音号 MIT-6.S081-2020实验(xv6-riscv64)一:util 快速生成网络mp4视频缩略图技术 用plantuml画图示例 QQ缩略图和大图不同实现 Python制作字符图片 使用OpenCV对图片进行特征点检测和匹配
PowerShell创建参考窗口
VnYzm · 2020-04-30 · via VnYzm的博客

背景

平常我们经常遇到这样一个问题,在使用一个窗口工作时常常需要参考其他窗口的文字或图片,此时就需要频繁切换窗口;或者是看视频时需要参考前面进度的画面;或者是阅读或写文档时需要参考其他位置的文字,这时就希望能有一个始终置顶的窗口,实时显示文字或图片方便参考。

思路

因为文字可以通过截图转化为图片,所以只需考虑图片的显示。这个程序的功能和截图联系非常紧密,可以利用QQ截图的功能,我们的程序只需从剪贴板中读取图片就行。此外,我们希望窗口能始终置顶,这样才能方便参考。为了方便,我使用了PowerShell,通过调用.Net的窗口创建和读取剪贴板功能,可以很容易地实现这一功能。

PowerShell调用.Net里的功能,和C#有以下几点不同:

  • 添加命名空间

    Add-Type -AssemblyName System.Windows.Forms;
  • 实例化类

    $form = [Windows.Forms.Form]::new();

    类似与静态方法的调用和,用[类名]::new() 创建,同时这个类名可以省略最前面的System.

  • 窗口置顶

    PowerShell里的布尔值前面需要加$

  • 添加点击事件

    $click = {
      ...
    }
    $form.add_Click($click);
    Invoke-Command $click;

    PowerShell在给WinForm添加事件时,不像C#通过事件和委托机制实现,而是另外定义了像add_Click 这样的方法,将代码块赋给变量,然后将变量传给add_Click 即可添加点击事件。代码块本身也可以通过Invoke-Command 命令实现。

  • 隐藏命令行窗口

    powershell -windowstyle hidden {
      ...
    }

    在所有的代码外套上这一层隐藏命令行的设置,即可实现此功能。

代码

powershell -windowstyle hidden { # 隐藏命令行
    Add-Type -AssemblyName System.Windows.Forms; # 添加命名空间
    $form = [Windows.Forms.Form]::new();
    $form.BackgroundImageLayout = 3; # 使图片跟随窗口大小缩放
    $form.TopMost = $true; # 窗口置顶
    $form.MaximizeBox = $false; # 屏蔽最大化按钮
    $click = {
        $data = [Windows.Forms.Clipboard]::GetDataObject(); # 获得剪贴板数据
        if ($data.GetDataPresent([Windows.Forms.DataFormats]::Bitmap)) {
            $img = $data.GetData([Windows.Forms.DataFormats]::Bitmap); # 将数据转换成图片
            $form.BackgroundImage = $img; # 把图片设为窗口背景
            $form.ClientSize = $img.Size; # 把窗口图片区域的大小设为和图片一样
        }
    }
    $form.add_Click($click); # 添加点击事件
    Invoke-Command $click; # 先执行一次,把当前图片放进窗口
    $form.ShowDialog(); # 显示窗口
}

附:一些PowerShell命令

powershell下转进制

十进制转二进制

[Convert]::ToString(100, 2)

二进制转十进制

[Convert]::ToInt32('100', 2)

powershell下将文件放到剪贴板

Add-Type -AssemblyName System.Windows.Forms; [System.Windows.Forms.Clipboard]::SetFileDropList('E:\1.txt');

注意文件路径必须是绝对路径

批量用ffmpeg将wav文件转码成mp3文件,文件名前缀不变

foreach ($i in ls *.wav) { ffmpeg -i $i.name -acodec mp3 $i.name.replace('wav', 'mp3') }

批量将z开头的文件名中的z去掉

foreach ($i in ls z*) { mv $i.name $i.name.substring(1) }

powershell下查找文件内容包含字符串txt的文件

powershell下查找扩展名为txt的文件