首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python如何使用GUI自动化控制键盘和鼠标来实现高效办公

参考链接: 使用Python进行鼠标和键盘自动化 计算机上打开程序和进行操作最直接方法就是,直接控制键盘和鼠标来模仿人们想要进行行为,就像人们坐在计算机跟前自己操作一样,这种技术被称为“图形用户界面自动化...python界面引入模块   1.2 解决程序出现错误,及时制止  开始 GUI 自动化之前,你需要知道如何解决可能发生问题。...Python 能以很快速度移动鼠标并击键。实际上,它可能太快,从而导致其他程序跟不上。而且, 如果出了问题,但你程序继续到处移动鼠标,可能很难搞清楚程序到底在做什么,或者如何从问题中恢复。...1.2.1 通过任务管理器来关闭程序  windows可以使用 Ctrl+Alt+Delete键来启动,并且进程中进行关闭,或者直接注销计算机来阻止程序乱作为  1.2.2 暂停和自动防故障设置 ...1.4.2 拖动鼠标  拖动即移动鼠标,按着一个按键不放来移动屏幕上位置,例如:可以文件夹拖动文件来移动位置,或者将文件等拉入发送框内相当于复制粘贴操作 pyautogui提供了一个pyautogui.dragTo

3.9K31
您找到你想要的搜索结果了吗?
是的
没有找到

C# 7.0简而言之 -- 01. C#和.NET Framework简介

统一类型系统 C#里面所有的类型都有一个共享, 这也意味之C#里面所有的类型都具备一些相同基本功能, 例如任何类型都可以通过调用ToString()方法来转化成字符串. 2....C#里面, 需要多继承情况下就应该使用接口, 因为C#不支持多继承. 3....这也消除了某些语言中使用指针来解除内存分配可能遇到问题, 例如C++. 另外一点需要注意就是C#没有消灭指针, 只不过大多数情况下根本不需要使用指针....C# 6 新特性 null条件("Elvis")运算符 它可以访问成员之前避免手动去检查该类对象是否为null....WriteLine("Hello World"); nameof 操作符 nameof 操作符可以返回变量, 类型, 和其它符号名字(字符串), 这样就可以避免重命名符号时候造成代码错误.

1.6K90

探索C#之6.0语法糖剖析

k__BackingField = value; } } }   从生成代码可以看出编译器是实例构造函数时,初始化属性信息。...静态导入 这个特性可以一次性导入某类型所有静态成员,使静态成员在后面的代码没有类型限制直接使用使用本类型下面的静态方法一样。...有时候会需要程序中一些成员字符串名称,比如抛出ArgumentNullException异常时候,想知道ArgumentNullException类型字符串名称,这时候就可以用nameof获取字符...现在做法都是手动复制一下,但重构改名时候容易忘记变更字符串使用nameof就可以避免了。 当如下使用时候,编译器会只取最后ZipCode。...这时static是c# 6.0新功能。 等同于把扩展方法命名空间导入,所以集合上可以打点调用扩展方法。这是之前就有的功能,而不是把扩展方法转成单纯静态方法导入使用

1.6K60

Python 进阶指南(编程轻松进阶):十七、Python 风格 OOP:属性和魔术方法

该类文档字符串描述了wizcoin模块 2 如何使用它。这是 Python 模块最佳实践:WizCoin对象在被误用时会引发这个问题。...字符串表示魔术方法 您可以使用__repr__()和__str__()魔术方法来创建 Python 通常不知道如何处理对象字符串表示。通常,Python 以两种方式创建对象字符串表示。...Python 知道如何显示其内置类型对象,比如整数和字符串。但是它不知道如何显示我们创建对象。...我们代码不调用魔术方法。 注意,括号包含对象 F 字符串将隐式调用str()来获取对象字符串。...因为这三个属性包含整数,所以我们可以对它们使用+操作符。现在我们已经为WizCoin重载了+操作符,我们可以对WizCoin对象使用+操作符。 这样重载+操作符允许我们编写更可读代码。

62220

C#6.0 新增功能

06 字符串内插 使用 C# 6,新字符串内插功能可以字符串嵌入表达式。...,请参阅 字符串内插 一文和 C# 字符串内插、 符合格式设置 教程。...如果自定义集合方法具有通过语义方式添加新项名称,则此功能非常有用。 12 改进了重载解析 以前一些构造,以前版本 C# 编译器可能会发现涉及 lambda 表达式一些方法不明确。...请考虑此方法: static Task DoThings() { return Task.FromResult(0); } 早期版本 C# 使用方法组语法调用该方法将失败: Task.Run...早期版本,需要使用 lambda 表达式作为参数: Task.Run(() => DoThings()); C# 6 编译器正确地确定 Task.Run(Func()) 是更好选择。

1.7K20

C# “智能枚举”:如何在枚举增加行为

然后 Main 方法,我们将 today 变量设置为 Tuesday,并使用 ToString() 方法将其转换为字符串。 接下来,我们计算并输出明天和昨天日子。...enum 可以很好地表示对象状态,因此它是实现状态模式常见选择。 C# ,您可以使用 switch 语句来根据不同 enum 值执行不同操作。... C# ,您可以使用 switch 语句或 if-else 语句来根据不同 enum 值选择不同算法或行为。 工厂模式 工厂模式允许您使用一个共同接口来创建不同对象。... C# ,您可以使用 enum 来表示观察者对象状态,并使用委托或事件来通知观察者对象。 智能枚举 什么是智能枚举?智能枚举不是官方一个称谓,而是作者定义一个名词。...这意味着您可以枚举类型上调用方法和属性,就像在实例上调用它们一样。 智能枚举跟设计模式意义一样,可以帮助您避免重复代码,并提高代码可读性和可维护性。

22720

C#“智能枚举”:枚举增加行为?

然后 Main 方法,我们将 today 变量设置为 Tuesday,并使用 ToString() 方法将其转换为字符串。 接下来,我们计算并输出明天和昨天日子。...enum 可以很好地表示对象状态,因此它是实现状态模式常见选择。 C# ,您可以使用 switch 语句来根据不同 enum 值执行不同操作。... C# ,您可以使用 switch 语句或 if-else 语句来根据不同 enum 值选择不同算法或行为。 工厂模式 工厂模式允许您使用一个共同接口来创建不同对象。... C# ,您可以使用 enum 来表示观察者对象状态,并使用委托或事件来通知观察者对象。 智能枚举 什么是智能枚举?智能枚举不是官方一个称谓,而是作者定义一个名词。...这意味着您可以枚举类型上调用方法和属性,就像在实例上调用它们一样。 智能枚举跟设计模式意义一样,可以帮助您避免重复代码,并提高代码可读性和可维护性。

26420

C# 7.0 探索之旅

这只是个开始——模式现在是 C# 一种新语言元素了,我们也希望未来能向 C# 中加入更多模式。...——和之前描述过 out 变量很像,都可以表达式声明,也可以最近作用域中使用。...Out 变量(Out variables) 之前 C# 版本使用 out 参数并不像我们期盼那样流畅。在你能够使用 out 参数来调用一个函数之前,你首先需要声明待传入变量。...旧版本 C# 选项远远达不到令人满意程度: Out 参数: 使用起来很笨拙(哪怕你使用了上面所述改进),并且无法 async 方法中使用。...正确创建它们可能不是那么直观,因此我们并不期待大多数人来造自己轮子,但是它们将会出现在框架和 API ,然后调用者们就可以今天使用 Task 一样地返回并 await 它们了。

1.2K90

C#7.0 新增功能

以下方案中支持弃元: 在对元组或用户定义类型进行解构时。 使用 out 参数调用方法时。 使用 is 和 switch 语句匹配操作模式。...可以 C# 模式匹配中了解有关模式匹配更多信息。 05 Ref 局部变量和返回结果 此功能允许使用并返回对变量引用算法,这些变量在其他位置定义。...不应在实现终结器,除非有必要发布非托管资源。 还应考虑使用 SafeHandle ,而不是直接管理非托管资源。...下例使用 throw 表达式向方法传递空字符串数组时引发 ArgumentException。 C# 7.0 之前,此逻辑将需要显示 if/else 语句中。...以下示例,如果分配给 Name 属性字符串为 null,则将 throw 表达式与 null 合并运算符结合使用以引发异常。

1.3K10

优先考虑 nameof

分布式场景,我们经常需要进行多个系统之间通信,要实现这些通信往往需要不同库对相应需求进行处理。...针对前面所述问题, C# 6.0 中新增了 nameof 表达式,这个表达式可以根据变量来获取包含其名称字符串,从而使开发人员不需要将变量名称写成字符串。...使用 nameof 好处有如下两点: 如果属性名改变了,那么相关参数也会改变; nameof 会根据符号找出表示这个符号名称字符串,其中所说符号可以是类型、变量、接口或者命名空间。... nameof 面对各种各样符号时候,表现出了协调一致特征,不管变量是使用完全限定方式传递还是其他方式,它总是返回局部名称。...同样 nameof 也存在需要注意地方,当我们针对泛型使用它时,我们泛型必须是封闭,开发人员必须把每个类型参数显示制定出来。

56830

精:C#这些年来受欢迎特性

接口现今开发 C# 过程仍然流行使用,以下面的 IDateProvider 接口为例。...通过直接使用接口,不会将代码耦合到底层实现。同样,明确接口实现避免命名或方法签名歧义 - 并使单个可以实现具有相同成员多个接口。...因为相比于写迭代器,我更频繁地使用泛型。 C# 很多 SOLID 编程原则 都是使用泛型来强化,同样它也有助于保持代码 干爽 。...编者注:学习如何 C# 使用泛型来提高应用程序可维护性 泛型向.NET Framework引入了类型参数概念,这使得可以设计和方法来推迟一个或多个类型规范,直到或方法被客户端代码声明和实例化为止...而使用字符串插值时,可以防止运行时出错。 使用 $ 符号插入字符串文字时,将启用 C# 字符串插值语法。相当于告诉 C# 编译器,我们要用到各种 C# 变量、逻辑或表达式来插入到此字符串

14230

C# 这些年来受欢迎特性

接口现今开发 C# 过程仍然流行使用,以下面的 IDateProvider 接口为例。...通过直接使用接口,不会将代码耦合到底层实现。同样,明确接口实现避免命名或方法签名歧义 - 并使单个可以实现具有相同成员多个接口。...因为相比于写迭代器,我更频繁地使用泛型。 C# 很多 SOLID 编程原则 都是使用泛型来强化,同样它也有助于保持代码 干爽 。...编者注:学习如何 C# 使用泛型来提高应用程序可维护性 泛型向.NET Framework引入了类型参数概念,这使得可以设计和方法来推迟一个或多个类型规范,直到或方法被客户端代码声明和实例化为止...而使用字符串插值时,可以防止运行时出错。 使用 $ 符号插入字符串文字时,将启用 C# 字符串插值语法。相当于告诉 C# 编译器,我们要用到各种 C# 变量、逻辑或表达式来插入到此字符串

15320

精:C#历来版本特性一览

前言 使用 C# 作为开发语言已经 15 个年头了,受惠于 C# 不断更新,伴随着大量新特性与大量语法糖,让我更加容易写出简洁、高效代码。...尽管参考了微软官方文档,但所列特性难免基于我所接触使用狭隘范围,用括号附上短评(如【我是短评】),用以提示,希望不至于画蛇添足吧。...“Null 条件运算符”、“字符串内插”、“nameof 表达式”是我比较喜欢特性。 静态导入【using static 指令命名了一种类型,无需指定类型名称即可访问其静态成员和嵌套类型。】...[]】 字符串内插【$"{foo} {bar}"】 nameof 表达式【nameof(Foo)】 C# 7.0 发布日期:2017 年 3 月 C# 7.0 版已与 Visual Studio 2017...特性列表又是写小说一样长,行吧,你开心就好。

14320

如何写出令人惊叹Python

具体来说,在这篇文章,我想谈谈如何使用 Python 魔术方法,写出令人惊叹 class,让我们开始吧。 什么是魔术方法 魔术方法首先是方法,是属于函数。...当然,你可以这样做并写一些类似 YourClass().__actual_name__() 东西,但请不要直接调用。 那么魔术方法是如何调用呢?...它让我们能够编写可与 python 内置方法一起使用这样写出代码更易读和更少冗余。 为了强调魔术方法有用性,并了解进行机器学习或数据科学时如何使用它们受益,让我们举一个具体例子。...实例:自定义范围 datetime 下面的代码展示了如何使用魔术方法编写类似于内置 range 函数 DateTimeRange ,代码如下: from datetime import datetime...最后的话 本文分享了如何通过魔法方法编写一个非常优雅魔术方法可在 Python 内置函数或操作自动调用,可以让我们编写出可读性、易用性更好,就像本文中 DateTimeRange。

52731

.NET6新东西--插值字符串优化

字符串是我们平时使用最多一个类型,从C#6开始就支持插值字符串,方便我们进行字符串操作,并且大部分分析器也推荐使用插值这种写法,因为它够使得我们代码更加清晰简洁,到了.NET6C#10则为我们提供了更好实现方式以及更佳性能...它是以符开头,类似于 “Hello {name}” 这样字符串,下面的例子是插值字符串简单使用: var name = "插值字符串"; var hello = $"你好 {name}!"...,.NET6之前版本它会被翻译成低版本C#string.Format形式,上述代码翻译成低版本C# 代码如下所示: string name = "插值字符串"; string hello =...它DefaultInterpolatedStringHandler是结构体,并且包含泛型方法AppendFormatted来避免装箱操作,这样它在format时候性能更好。...我喜欢数字是20 我们还可以自定义插值字符串处理器构造器增加自定义参数,使用InterpolatedStringHandlerArgument来引入更多构造器参数。

1.3K30

Visual Studio 2015速递(1)——C#6.0新特性怎么用

最终还是追新流声音比较大,因为大家都对C#新版本很期待,虽然微软C#语言组PM Mads Torgersen说过,“C# 6.0主要是增强和提升效率”,但是对于控件开发小组而言依然相当期待,因为代码可读性和效率是我们非常关键部分...这里让我们一起再来简单回顾一下C#6.0重要特性吧: 1.NameOf表达式。...”); } 回到IDE,再次按F2触发重构改名,你会发现异常信息也能一起改变了。...,开发过程我们有无数这样方法,无数次重复为空判断,但是这对代码可读性和业务处理没有任何提升,反而增加了代码复杂度,让我们更难理解当初设计初衷。...8.引用静态(using static),懒人必备,想想某大仙在前面定义了一个超级无敌静态和辅助方法,你有超级多地方需要用,然后你就得一遍一遍敲这个静态名和方法名,万一这个静态名字很长就更悲催了

68980

C# 12 预览版,新功能一览

概述 C#是微软开发一种流行编程语言,广泛用于开发桌面,Web和移动应用程序。每个新版本C# 都会带来令人兴奋功能和改进,使其更强大、更具表现力和更高效。...1、Record structs 2、作为格式字符串内插字符串 3、Lambda对方法委托类型支持 4、对顶级programsstatic关键字改进 5、简化参数空检查 6、支持匿名记录类型... C# 12 ,我们现在可以使用构造函数来初始化属性,从而更轻松地设置复杂对象。... C# 12 ,我们现在可以使用扩展方法向接口添加方法,从而更轻松地编写可重用代码。... C# 12 ,lambda 通过引入多项改进变得更好。 隐式类型化 Lambda C# 12 ,我们现在可以 lambda 中使用隐式类型,使它们更加简洁易读。

47140

C#反射与特性(五):类型成员操作

[图片1 来源:《C# 7.0核心技术指南:19.2 反射并调用成员》] 那么,如何通过 Type 获取相应成员呢? ?...:一个类型中使用了父或者自己方法,那么返回此方法出处; ReflectedType :从哪个类型获取,就返回哪个类型;即从个 Type 里获得成员实例,就返回这个 Type 名称; 新建一个两个类型...那么什么情况下使用到他呢? 我们写代码时,会使用到例如 Visual Studio 等 IDE,如果使用 nameof,里面的类型是强类型,可以查找引用、跳转、获取注释等。...如果直接使用字符串的话,容易拼错命名、一旦修改一个命名,需要手动找到所有字符串进行修改。...这里不再赘述 3.1.3 获取重载方法 C# 反射与特性》系列第四篇,我们介绍了构造函数 ConstructorInfo 调用和重载,MethodInfo 实际上也是差不多

1K40

Mongo C# Driver 聚合使用---深入浅出

internal,也就是说使用时根本无法创建这两个派生实例对象,其实这两个都是PipelineStageDefinition实例调用Match() ,Project() ,Sort() 方法时进行内部创建...()代码中进行了一个轻微优化操作,这个优化是针对OfType情况进行优化,唯一使用地方是FilteredMongoCollectionBase这个抽象,而这个抽象实现是OfTypeMongoCollection...有的聚合项$addFields并没有封装方法,可能使用率不大,所以并没有封装,这样直接就调用AppendStage()即可 PipelineDefinition总结 ​ 通过上面介绍其实可以看出来了...,MongoC# Driver聚合操作使用起来特别方便,使用时先创建聚合项对象再创建聚合管道对象还是直接创建聚合管道对象或者直接使用隐式转换都可以。...其实不止聚合,C# Driver各个操作基本都是如此,使用起来都特别方便,既然创建聚合管道实例方法特别多,所以在这也就不一一列出,只简单列出几个 1.先实例化聚合项,再实例化聚合管道对象 ?

1.6K30
领券