这期,想给大家介绍一下C#操作微软三大件Excel,Word,Ppt攻略。 你可能会说,不就是在这几个软件里写入数据吗? 有什么难的,我打开软件不用编码就能写。...将控件的Text属性分别改为写入Excel,写入Word,写入Ppt,即可实现改名。 使用Textbox控件分别拖拽两个。 将控件的Multiline属性改为true实现多行显示。...因为前期绑定运行速度极快,而且编写代码时可以有代码提示。 这期,我特别向你介绍这种操作方法。 文末有源码获取途径,源码仅供个人学习使用,切勿商用。...BUG修正 在实际操作过程中,通过对比三大件之间的差异。 发现使用Quit()指令无法正常关闭Excel和Ppt后台进程。...Ppt代码修正 无论你打开多少个Ppt,后台只有一个POWERPNT,EXE进程。 因而采用PROCESS进程类数组的Kill方法终结进程。 好了,这期就介绍到这。
脚本将其解码产生两个DLL,一个是勒索软件的x86版本(用于32位OS),另一个是x64版本(用于64位OS)。它会对运行环境进行检测,以便可以确定要使用的DLL版本: ?...然后指定要注入的进程,搜索正在运行的Windows资源管理器进程。 ? 通过以下代码将勒索软件DLL写入explorer.exe的内存空间并执行: ? 最后删除副本,防止受害者使用副本恢复文件。...勒索软件会终止某些进程和服务,其中一些与软件数据备份有关。...wrsa.exe 勒索软件还会停止与安全软件相关的进程,逃避安全软件对其恶意活动的检测防御。...总结与建议 攻击者现在正在向勒索软件中添加反射DLL注入,从而使攻击难以被安全分析人员分析追踪。勒索软件本身对组织就具有很大的危害,成为无文件攻击后,其风险再次加大。
文章背景:使用Excel的Userform时,有时想要打开指定路径的ppt文件。下面介绍两种打开ppt文件的方式。...Powerpoint.Application") wo.Presentations.Open Filename:=TextBox1.Text, ReadOnly:=msoTrue End Sub 运行效果...CommandButton1_Click() Dim filepath As String filepath = TextBox1.Text Shell "POWERPNT.EXE...wxv_1561780077925826560&format_id=10002&support_redirect=0&mmversion=false 参考资料: [1] excel中如何通过vba打开ppt...(Shell)为什么只显示在任务栏里面而不直接弹出(http://www.mh456.com/s/fxztffwxkyry/fxztffwxkyrytjzj.html) [4] Shell function
这里需要注意,因为创建和使用多线程是一个消耗大量操作系统资源的过程,因此当只有一个单核处理器时多线程会导致操作系统忙于管理这些线程,进而无法运行程序甚至有时操作系统本身也会无法正常运行(即使操作系统访问处理器的优先级最高...一、创建线程 创建线程的方法很简单,我们只需要实例化 Thread 即可,在实例化的过程中我们将要在新线程中运行的方法传递给 Thread ,然后调用 start 方法运行新建的线程。...我们只需指定在不同线程运行的方法名,C#编译器则会在后台创建这些对象。 线程位于进程中,一个进程包含至少一个线程,并且一个进程中始终有一个主线程在执行任务。...二、线程等待 当程序需要使用另一个线程的结果时我们就需要用到 Join 方法,Join 方法的作用是阻止调用线程的运行,让调用线程等待被调用线程(子线程)运行完成后在运行。...四、线程终止 线程终止在实际开发中用的比较少,只有在极特殊的情况下使用到,根据我项目开发的经验来看,我还没有遇到过需要用到线程终止的情况,下面我们先来看一下代码。
# 多线程详细讲解 一、基本概念 1、进程 首先打开任务管理器,查看当前运行的进程: 从任务管理器里面可以看到当前所有正在运行的进程。那么究竟什么是进程呢?...进程(Process)是Windows系统中的一个基本概念,它包含着一个运行程序所需要的资源。一个正在运行的应用程序在操作系统中被视为一个进程,进程可以包括一个或多个线程。...一个进程可以创建一个或多个线程以执行与该进程关联的部分程序代码。在C#中,线程是使用Thread类处理的, 该类在System.Threading命名空间中。...方法名称 说明 Abort() 终止本线程。 GetDomain() 返回当前线程正在其中运行的当前域。 GetDomainId() 返回当前线程正在其中运行的当前域Id。...若想终止正在运行的线程,可以使用Abort()方法。
最近由于工作的需要,一直在使用C#的多线程进行开发,其中也遇到了很多问题,但也都解决了。后来发觉自己对于线程的知识和运用不是很熟悉,所以将利用几篇文章来系统性的学习汇总下C#中的多线程开发。...在操作系统中可以同时运行很多个应用程序,那么你知道计算机是如何分配和调度这些应用程序去使用CPU进行工作的吗? 这里面就牵扯到了进程、线程的概念,也就是我们接下来要学习的内容。...此外,操作系统必须始终能够优先访问CPU,并能调整不同程序访问CPU的优先级(说白了就是典型的以空间换时间)。 线程正是这一概念的实现,可以认为线程是一个虚拟的进程,用于独立运行一个特定的程序。...大量使用线程会消耗大量的OS资源 那么为什么需要使用线程呢!其实就是为了在相同的时间内,让操作系统或CPU干更多的活,那么在C#中线程应该如何使用或者说在什么场景下使用呢!...线程在应用程序中可以进行如何操作:1、创建线程;2、暂停线程;3、线程等待;4、终止线程。 1、创建线程 通过声明并实例化Thread就可以创建线程,它接收方法作为参数。
如果您的应用程序涉及到复杂的和耗时的操作,那么设置不同的线程执行路径往往是有益的,每个线程执行特定的工作。 线程是轻量级进程。一个使用线程的常见实例是现代操作系统中并行编程的实现。...类的对象被创建时,结束于线程被终止或完成执行时。...主线程 在 C# 中,System.Threading.Thread 类用于线程的工作。它允许创建并访问多线程应用程序中的单个线程。进程中第一个被执行的线程称为主线程。...当 C# 程序开始执行时,主线程自动创建。使用 Thread类创建的线程被主线程的子线程调用。您可以使用Thread 类的 CurrentThread属性访问线程。...CurrentThread 获取当前正在运行的线程。 CurrentUICulture 获取或设置资源管理器使用的当前区域性以便在运行时查找区域性特定的资源。
这一篇是《C#基础知识系列》的一篇,简单介绍一下如何创建、使用任务和多线程,这部分的内容很多,包括有很多注意事项,将会另开一个系列专门讲解C#的异步和并行编程,名字暂定为《C#异步编程系列》。 ?...线程 了解过计算机的人可能知道程序最小执行单元是线程,最小资源分配单位是进程。进程里必然至少有一个线程,而一个程序也必然至少有一个进程。...任务 C#中的任务与线程的区别不是很大,因为C#的任务就是基于线程实现的,而任务比线程更友好,使用也更方便,当然使用也更加复杂。不过对于开发者而言,任务取消了线程的状态切换,只保留了有限的一部分。...而且,在C# 更推荐使用任务,任务也是对线程的进一步抽象和改进。 2.1 创建一个任务 如线程相同的一点是,任务的创建也是通过传递一个方法(严格上讲是一个委托)。...不同的是,线程的委托没有返回值而且也不接受从线程返回的值,而任务则不同,调用方可以期待任务是有返回值的而且也可以正常使用。
实现异步的方式还有很多,比如利用硬件的特性、使用进程或线程等。 ...Mutex是一个基于内核模式的互斥锁,支持锁的递归调用,而Lock是一个混合锁,一般建议使用Lock更好,因为lock的性能更好。 属性: :获取线程正在其中执行的当前上下文。 ...:获取或设置当前线程的区域性。 :获取或设置线程的当前负责人(对基于角色的安全性而言)。 :获取当前正在运行的线程。 ...Task提供了很多方法和属性c# 多线程并发,通过这些方法和属性能够对Task的执行进行控制,并且能够获得其状态信息。Task的创建和执行都是独立的,因此可以对关联操作的执行拥有完全的控制权。...For()方法类似于C#的for循环语句,也是多次执行一个任务。但是使用.For()方法,可以并行运行。
当然实际的cpu各进程之间来回切换。 2.创建进程,有四种主要事件导致进程的创建:1.系统初始化。2.执行了正在运行进程所调用的进程创建系统调用。3.用户请求创建一个新进程。...4.被其它进程杀死(非自愿的)。 多数进程是由于完成了它们的工作而终止。第二个原因是进程发现了严重错误,例如用户执行cc foo.c,编译该程序,但是foo.c不存在,编译进程就会退出。...2.就绪态(可运行,但因为其他进程正在运行而暂时停止)。3.阻塞态(除非某种外部事件发生,否则进程不能运行)。...使用进程模型使得我们易于想象系统内部的操作情况。一些进程正在运行执行用户键入命令所对应的程序。...我们有了关于进程模型的抽象,我们才不必考虑中断、定时器和上下文切换,而只需考察并行进程。类似的,只是在有了多线程概念之后,我们才加入了一种新的元素:并行实体共享同一个地址空间和所有可用数据的能力。
.NET Framework 程序的运行原理 .NET Framework的组成: (1)基础类库(BCL):使用线程的类来完成编程,对于不存在的类,就自己编写; (2)编译工具:将源文件,编译成“程序集...(C#)——>通过C#编译器编译成程序集[程序集中包括:元数据(一个表,显示了程序中有什么成员,类,字段,方法等),IL代码等资源] 运行例子: (1)源代码如下: using System; namespace...GC原理:当代码创建的时候,对象在内存中“连续”分配;当执行一次垃圾回收以后,失去引用的对象将会被释放;而保持引用的对象会重新“排序”(0代->1代)[重新排序后内存依旧是连续的] 以下是转载自轩脉刃de...CLR运行时候,内存分为“托管堆”和“栈”两个部分。其中,栈是用于存储值类型的数据,托管堆是用于存储引用类型的变量。其中托管堆是GC处理的内存部分。 进程中每个线程都有自己的堆栈。...问:为什么说实现了Finalize方法的对象必需等两次GC才能被完全释放? ? Msdn中的解释:实现 Finalize 方法或析构函数对性能可能会有负面影响,因此应避免不必要地使用它们。
,那么我们可以使用 EventSentry 终止那些在命令行中使用 -version 2参数的 powershell 进程。...我们可以通过创建一个筛选器来查找包含 -version 2参数的 4688 powershell 事件,然后将筛选器连接到终止该 PID 的操作。 ?...然而在执行的所有测试中,即使最简单的 Write-Host Test” PowerShell 命令也无法正确执行,因为 powershell.exe 进程在运行之前已终止。...因此,在网络上下载任何恶意脚本内容都有可能在造成伤害之前终止运行。 散弹枪方法 通过上面的方式无法满足所有需求,比如通过快捷方式调用 PowerShell V2 而不是命令行。...PowerShell 事件日志,则无法杀死确切有问题的 PowerShell 进程,并且所有正在运行的 PowerShell.exe 进程都必须终止。
另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。 线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。...该软件层是在进程创建期间由运行时宿主载入的(参见4.2.3节)。 线程只能归属于一个进程并且它只能访问该进程所拥有的资源。当操作系统创建一个进程后,该进程会自动申请一个名为主线程或首要线程的线程。...主线程将执行运行时宿主, 而运行时宿主会负责载入CLR。 应用程序(application)是由一个或多个相互协作的进程组成的。...该指令是一个软中断,如果线程在遇到这条指令前就终止了(例如,它正在等待某个资源),那么该指定将被删除而上下文切换也将提前发生。...使用lock关键字将引导C#编译器创建出相应的try/finally块,这样仍旧可以预期到任何可能引发的异常。可以使用Reflector或者ildasm.exe工具验证这一点。
下面是一个例子,使用扩展C#语法创建一个ThreadStart委托:2.1_ThreadStart 1 class ThreadTest 2 { 3 static void Main()...前台线程保持这个应用程序一直存活只要其中任意一个正在运行,而后台线程不是这样的。一旦所有的前台线程完成,这个应用程序就结束了, 任何正在运行的后台线程立刻终止。...另一方面,如果main方法传入了参数,则创建的线程设置为后台线程。当主线程退出时,应用程序立即退出。 当一个进程以这种方式终止,则任何后台线程执行栈里面的finally 语句块将会被规避。...如果用户使用任务管理器强制结束一个.NET进程,所有的线程像是后台线程一样终止。这个是观察到的行为,所以会因为CLR和操作系统的版本而不同。...一个理想的解决方案是让实时线程和用户界面用不同的优先级运行在不同的进程中,通过远程和内存映射文件来通信。即使提高了进程优先级,在托管环境中处理硬实时系统需求还是对适用性有限制。
需要线程表现为一个前台进程,防止应用程序在线程结束它的任务之前终止。...(线程池的线程始终是后台线程,如果CLR要终止进程,它们就可能无法被迫完成任务) 一个计算限制的任务需要长时间的运行,就像例子中StartCode(),它执行的就是计算限制的任务。...为长时间运行的任务创建一个专业线程,用于避免这个问题。 任务线程可能调用Abort()(属于Thread)来提前终止它。...当一个进程中的所有前台线程停止运行时(也就是我们按右上角的X,关闭程序),CLR将强制终止仍在运行的后台线程直接终止,不会异常。 ...基于这个原因,前台线程的使用应该用于执行确实想完成的任务,就用个我们正在用浏览器(下面称前台线程)做例子: 你正在浏览本篇内容,就意味着这个前台线程,正要完成你所需求的任务指令,解析HTML代码,便于你的阅读
内核模式构造:是由Windows系统本身使用,内核对象进行调度协助的。内核对象是系统地址空间中的一个内存块,由系统创建维护。 ...内核对象为内核所拥有,而不为进程所拥有,所以不同进程可以访问同一个内核对象, 如进程,线程,作业,事件,文件,信号量,互斥量等都是内核对象。 ...而信号量,互斥体,事件是Windows专门用来帮助我们进行线程同步的内核对象。 对于线程同步操作来说,内核对象只有2个状态, 触发(终止,true)、未触发(非终止,false)。...WaitHandle 在windows编程中,通过API创建一个内核对象后会返回一个句柄,句柄则是每个进程句柄表的索引,而后可以拿到内核对象的指针、掩码、标示等。 ...而WaitHandle抽象基类类作用是包装了一个windows内核对象的句柄。我们来看下其中一个WaitOne的函数源码(略精简)。
目前电脑主流配置都是四核/八线程的,而实际工作的任务数大都大于四个,所以也是需要交替来执行具体任务的,也就是并发执行。 ?...() p2.start() 输出结果为: 我正在做PPT 我正在写Sql 上面代码表示同时启动两个进程,且两个进程分别调用不同的函数,即做不同的任务。...4.2.1参数详解 启动多线程使用的是threading模块中的Thread类,构建时使用的参数和方法与Process基本一致,大家看看即可,这里就不赘述了。...() 输出结果为: 我正在选PPT模板 4.2.3创建多个线程 创建多个线程就是调用多个函数。...(target=do_content,args=('列PPT大纲',)) t1.start() t2.start() 输出结果为: 我正在选PPT模板 我正在列PPT大纲 4.3多进程
什么是多任务编程 多任务编程即一个程序中编写多个任务,在程序运行时让这多个任务一起运行,而不是一个一个的顺次执行。...比如微信视频聊天,这时候在微信运行过程中既用到了视频任务也用到了音频任务,甚至同时还能发消息。这就是典型的多任务。而实际的开发过程中这样的情况比比皆是。...image.png 进程状态 三态 就绪态 : 进程具备执行条件,等待系统调度分配 cpu 资源 运行态 : 进程占有 cpu 正在运行 等待态 : 进程阻塞等待,此时会让出 cpu image.png...五态 (在三态基础上增加新建和终止) 新建 : 创建一个进程,获取资源的过程 终止 : 进程结束,释放资源的过程 image.png 进程命令 查看进程信息 ps -aux image.png USER...关于GIL问题的处理 尽量使用进程完成无阻塞的并发行为 不使用c作为解释器 (可以用Java C#) GIL问题与Python语言本身并没什么关系,属于解释器设计的历史问题。 Guido的声明
想知道创建子进程后怎么 李代桃僵吗? ps aux|grep xxx的背后到底隐藏了什么? 你了解Linux磁盘中p类型的文件到底是个啥吗? 为什么要realase发布而不用debug直接部署?...扩展: 如果你只是等一个信号就退出,可以使用: signal.pause(),不必使用死循环来轮询了 os.killpg(pgid,sid)进程组结束 signal.siginterrupt(signal.SIGALRM...bug被不定时的触发,每次都导致系统爆卡或者退出,而程序员修复bug需要时间,但是线上项目又不能挂,这时候就可以使用一个心跳检测的守护进程(查错也可以使用守护进程)【为恶就不说了】 正式开始前,先来个伪案例...(关机影响,不过你可以添加启动项) 一般使用以d结尾的服务名称(约定俗成) 讲正式流程前先复习一下上面说的 进程组和 会话 进程组:每一个进程都属于一个“进程组”,当一个进程被创建的时候,它默认是其父进程所在组的成员...,父进程退出(子进程变成了孤儿) 子进程创建新会话(创建出新会话会丢弃原有的控制终端) 改变当前工作目录【为了减少bug】(eg:你在某个文件夹下运行,这个文件夹被删了,多少会点受影响) 重置文件掩码(
目前电脑主流配置都是四核/八线程的,而实际工作的任务数大都大于四个,所以也是需要交替来执行具体任务的,也就是并发执行。...() p2.start() 输出结果为: 我正在做PPT 我正在写Sql 上面代码表示同时启动两个进程,且两个进程分别调用不同的函数,即做不同的任务。...4.2.1参数详解 启动多线程使用的是threading模块中的Thread类,构建时使用的参数和方法与Process基本一致,大家看看即可,这里就不赘述了。...() 输出结果为: 我正在选PPT模板 4.2.3创建多个线程 创建多个线程就是调用多个函数。...(target=do_content,args=('列PPT大纲',)) t1.start() t2.start() 输出结果为: 我正在选PPT模板 我正在列PPT大纲 4.3多进程+
领取专属 10元无门槛券
手把手带您无忧上云