Siweipancc

四维胖次

C# 使用交互UI获取用户选择的文件(夹)

前言

最近在写桌面应用, 记录以下如何使用 WIN 的原生 ui 获取用用户输入的文件与文件夹

依赖

桌面交互依赖于 (WinForm)[https://learn.microsoft.com/zh-cn/dotnet/desktop/winforms/overview/?view=netdesktop-8.0]

项目配置

  • 目标框架加上 -windows
  • 使用 WinForm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<OutputType>Exe</OutputType>
<LangVersion>12</LangVersion>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<!--指向 windows 桌面-->
<TargetFramework>net8.0-windows</TargetFramework>
<!--使用桌面表单功能-->
<UseWindowsForms>true</UseWindowsForms>
</PropertyGroup>

</Project>

阅读全文 »

Powershell 的数据结构 Hashtable

简要说明, 无序哈希表是 pwshSystem.Collections.Hashtable 的包装, 无序哈希表是 pwsh 对 [https://learn.microsoft.com/en-us/dotnet/api/system.collections.specialized.ordereddictionary) 的包装

文法结构

无序哈希表: @{ <name1> = <value1>; [<name2> = <value2> ] ...} 无序哈希表: [ordered]@{ <name1> = <value1>; [<name2> = <value2> ] ...}

创建方式

阅读全文 »

Powershell 的数据结构 Array

简要说明, 数组是 pwshSystem.Array 的包装

创建方式

创建一般以 @() 格式, 列表是不可变的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
$data = @() 
$null -eq $data[9000] # no exception
Get-Member -InputObject $data
$data.IsFixedSize
$data.GetHashCode()

$data +=1
$data.GetHashCode()

$v1 = ,1
$v2 = 1,2
$v3 = @(1,2,3)
$v4 = 3..5
$v5 = 'a'..'i'
$v6 = 1..-2
[char[]]$v7= 'A','B'

$table = [ordered]@{
'v1'=$v1
'v2'=$v2
'v3'=$v3
'v4'=$v4
'v5'=$v5
'v6'=$v6
'v7'=$v7
}
#
$table
$table.Values.ForEach({$_.GetType()})
$v7 -as [int32[]]
# 65
# 66
$v7[0] -as [int32] # 65
@(66,69,71).ForEach([char])
# B
# E
# G
$v3[-1]
# 3
$v5[-1,-3]
# i
# g
$v5[-1..-3]
# i
# h
# g
$v5[2,3+5..7]
# c
# d
# f
# g
# h
阅读全文 »

Powershell 的知识串联I PSDrive 与 PSProvider

前言

微软在官方文档中对 PSDrive 的描述不尽深入

  1. PSDrive: 显示由提供程序公开的驱动器与 Windows 逻辑驱动器
  2. PSProvider: 一种允许文件系统访问数据存储的接口

这些驱动与接口跟以下命令相关:

  1. *-Alias: 操作命令别名
  2. *-Item: 操作文件,注册表等
  3. *-Variable: 操作变量

PSDrive 与 PSDrive

Get-PSProvider 一般给我们输出以下结果:

NameCapabilitiesDrives
RegistryShouldProcess{HKLM, HKCU}
AliasShouldProcess{Alias}
EnvironmentShouldProcess{Env}
FileSystemFilter, ShouldProcess, Credentials{C, D}
FunctionShouldProcess{Function}
VariableShouldProcess{Variable}
CertificateShouldProcess{Cert}
WSManCredentials{WSMan}
阅读全文 »

Powershell 的哈希方法

最近写脚本需要用到文件与内容哈希, 在这里作下速记.

文件哈希 与 字符哈徐

pwsh 原生支持文件哈希 Get-FileHash, 但是字符哈希需要手动调用 C# 模块 :

  1. UTF8Encoding: 将文本转换为字节数组
  2. MD5: 加密字节数组
  3. BitConverter: 将字节数组转为字符串
阅读全文 »

Powershell 的基础使用III 本质是 dotNet

前言

这里是相关基础知识的语言基础篇.

.Net 运行时

pwsh 依赖于 .Net 的运行时, 安装时便携带了基础的运行时, 使用以下指令获得运行时版本: [System.Runtime.InteropServices.RuntimeInformation]::FrameworkDescription 或旧版本 [System.Runtime.InteropServices.RuntimeEnvironment]::GetSystemVersion()

阅读全文 »
0%