句柄

定时删除文件且添加进日志

三世轮回 提交于 2020-01-08 20:39:57
#!/usr/bin/env python3 # coding: utf-8 import os import time import datetime import logging class DeleteFile ( object ) : def __init__ ( self , path ) : self . path = path def logger ( self ) : """ 写入日志 :return: logger对象 """ logger = logging . getLogger ( ) # 实例化了一个logger对象 # 在国外叫handler,在中国翻译过来,叫句柄 # 设置文件名和编码 fh = logging . FileHandler ( 'delete.log' , encoding = 'utf-8' ) # 实例化了一个文件句柄 # 格式和文件句柄或者屏幕句柄关联 sh = logging . StreamHandler ( ) # 用于输出到控制台 fmt = logging . Formatter ( '%(asctime)s - %(name)s - %(levelname)s - %(message)s' ) # 格式化 fh . setFormatter ( fmt ) # 格式和文件句柄或者屏幕句柄关联 sh .

多线程编程(9) - 认识等待函数 WaitForSingleObject

对着背影说爱祢 提交于 2020-01-08 17:31:25
本文转载自: https://www.cnblogs.com/del/archive/2009/02/13/1390069.html 作者:del 转载请注明该声明。 一下子跳到等待函数 Wait ForSingleObject, 是因为下面的 Mutex、Semaphore、Event、WaitableTimer 等同步手段都要使用这个函数; 不过等待函数可不止 WaitForSingleObject 它一个, 但它最简单. function WaitForSingleObject( hHandle: THandle; {要等待的对象句柄} dwMilliseconds: DWORD {等待的时间, 单位是毫秒} ): DWORD; stdcall; {返回值如下:} WAIT_OBJECT_0 {等着了, 本例中是: 等的那个进程终于结束了} WAIT_TIMEOUT {等过了点(你指定的时间), 也没等着} WAIT_ABANDONED {好不容易等着了, 但人家还是不让咱执行; 这一般是互斥对象} //WaitForSingleObject 的第二个参数一般给常数值 INFINITE, 表示一直等下去, 死等. WaitForSingleObject 等待什么? 在多线程里就是等待另一个线程的结束, 快来执行自己的代码; 不过它可以等待的对象可不止线程;

Python03.1.文本操作

◇◆丶佛笑我妖孽 提交于 2020-01-07 15:42:25
1.初识文本的基本操作 我们用python或其他语言编写的应用程序若想要把数据永久保存下来,必须要保存于硬盘中,这就涉及到应用程序要操作硬件,应用程序是无法直接操作硬件的,这就用到了操作系统。操作系统把复杂的硬件操作封装成简单的接口给用户/应用程序使用,其中文件就是操作系统提供给应用程序来操作硬盘虚拟概念,用户或应用程序通过操作文件,可以将自己的数据永久保存下来。 1.参数解释: f: 就是一个变量,一般都会将它写成f, f_ob, 等,它被称作文件句柄。 ===================================================== open:是Python调用的操作系统(windows,linux,等)的功能。 ===================================================== 'd:\护士少妇萝莉.txt': 这个是文件的路径。 ===================================================== mode:就是定义你的操作方式:r为读模式。默认 ===================================================== encoding: 此次打开文件使用什么编码。一般来说:你的文件用什么编码保存的,就用什么方法打开,一般都是用utf-8

句柄的真正理解

浪子不回头ぞ 提交于 2020-01-03 17:36:08
**真理一句话:句柄是引用,而不是指针。只能改变对应对象的内容,但不知道对象在哪。 ** 以下内容摘取网上资源,如有违反作者版权,请通知。 句柄是用来标识项目的。(它就象我们的姓名一样,每个人都会有一个,不同的人的姓名不一样,但是,也可能有一个名字和你一样的人。有一说法是指向指针的指针) 项目包括:模块(module)、任务(task)、实例 (instance)、文件(file)、内存块(block of memory)、菜单(menu)、控制(control)、字体(font)、资源(resource),包括图标(icon),光标 (cursor),字符串(string)等、GDI对象(GDI object),包括位图(bitmap),画刷(brush),元文件(metafile),调色板(palette),画笔(pen),区域 (region),以及设备描述表(device context)。 实质: 在windows中,句柄是和对象一一对应的32位无符号整数值。应用程序几乎总是通过调用一个WINDOWS函数来获得一个句柄,之后其他的WINDOWS函数就可以使用该句柄,以引用相应的对象。 形象说法:要想控制某一设备,不去直接控制设备,而是控制设备的操作手柄。 使用句柄的好处: windows需要向程序员提供必要地编程接口,在这些接口中,允许程序员访问、创建和销毁对象

Think in Java读书笔记--类再生

一个人想着一个人 提交于 2020-01-01 02:05:01
“Java引人注目的一项特性是代码的重复使用或者再生。但最具革命意义的是,除代码的复制和修改以外,我们还能做多得多的其他事情。” 使用别人已经创建好并调试好的类来创建新类,主要有如下两种办法:(1)在新类里简单地创建原有类的对象,这叫“合成”;(2)原样采取现有类的形式,并在其中添加新的代码来创建一个新类,叫“继承”。 继承与Java(以及其它OOP语言)非常紧密的结合在一起。创建一个类的时候必须进程,否则的话会直接从Object类中继承。 继承的一个好处是“累计开发”,让我们能够引入新的代码,同时不会对现有代码造成错误,这样可以将新错误隔离到新代码中。 final关键字 final关键字最一般的意思是声名“这个东西不能改变”。之所以不能改变,主要是考虑到设计和效率的问题。具体的应用有几个方面: finale数据: 常数主要用在两个方面:(1) 编译期常数,它永远不会改变;(2)在运行期初始化的一个值,我们不希望它发生变化。在Java中,这些常数类型必须是基本数据类型,并且要用final关键字来声名。对于基本数据类型,final会将值变成常数,而对于对象句柄,final会将句柄变成一个常数。进行声名时,必须将句柄初始化到一个具体的对象,而且永远也不能将句柄变成指向另一个对象,然而,对象本身是可以修改的。 空白final: Java1.1允许创建空白final,它们属于一些特殊字段

绘图、GDI、颜色及字体

旧街凉风 提交于 2020-01-01 01:28:51
1,任何时候当程序需要直接在屏幕或打印机上绘图的时候,都需要调用GDI函数,GDI函数包含了一些用于绘制图形、位图以及文本的函数。 2,Windows的设备环境是GDI的关键元素,它代表了物理设备。每一个C++设备环境对象都有与之对应的Windows设备环境, 并且通过一个32位类型的HDC句柄来标识。 3,MFC库设备环境类基类CDC包含了绘图所需要的所有成员函数,并且几乎所有派生类只有构造函数和析构函数不同(CMetaFileDC类除外)。 对于显示器来说,常用的派生类有CClientDC 和 CWindowDC,而对其它设备(如打印机或内存缓冲区),则可以构造一个基类CDC的对象。 对于显示器和打印机设备环境对象来说,应用程序框架会直接将句柄附在对象上;而对其它设备环境(如内存设备环境), 为了将对象与句柄相联系,在构造完对象之后,还必须调用一个成员函数(进行初试化)。 4,CClientDC类 和 CWindowDC类 如果构造CClientDC对象,则设备环境的映射区域限于客户区域,不能在客户区域外绘图。原点(0,0)在客户区左上角。 如果创建CWindowDC对象,则设备环境的映射区域为整个窗口(包括标题栏、状态栏、窗口边框等)。原点(0,0)在整个窗口的左上角。 注意: 1)视图窗口没有非客户区域. 2)视图窗口覆盖在框架窗口之上。 3)在《》中的内容

VC: GDI绘图基本步骤总结 .

♀尐吖头ヾ 提交于 2020-01-01 01:28:18
一、获得绘图的窗口句柄 方法(详细参数及其调用可以看考MSDN): 1、 HWND FindWindow(LPCTSTR lpClassName, LPCTSTR lpWindowName) HWND FindWindowEx(HWND hwndParent, HWND hwndChildAfter,LPCTSTR lpClassName, LPCTSTR lpWindowName) 2、 HWND WindowFromPoint(POINT& Point) 3、 BOOL CALLBACK EnumChildProc(HWND hwnd,LPARAM lParam) BOOL CALLBACK EnumChildWindows(HWND hWndParent, WNDENUMPROC lpEnumFunc,LPARAM lParam) BOOL CALLBACK EnumWindows(WNDENUMPROC lpEnumFunc, LPARAM lParam) BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam) 二、由窗口句柄得到设备环境句柄HDC 方法:BeginPaint、GetWindowDC、GetDC。这些函数都需要步骤一中的HWND的句柄。调用这些函数后要释放句柄,相应的有EndPaint

pugixml 总结

天涯浪子 提交于 2019-12-31 16:51:39
xml文档的4个关键词: 节点( 节点对象.child("节点名") )、节点内容( 节点对象.text() ) 属性( 节点对象.attribute("属性名") )、属性值( 属性对象.value() ) 句柄: pugi:: xml_node node = doc .child ("node"); //节点句柄 pugi:: xml_attribute id = param .attribute ("name"); //属性句柄 来源: https://www.cnblogs.com/xixixing/p/12125161.html

详解C#泛型(二)

我是研究僧i 提交于 2019-12-29 02:36:48
  一、前面两篇文章分别介绍了定义泛型类型、泛型委托、泛型接口以及声明泛型方法:    详解C#泛型(一)    详解C#泛型(二)   首先回顾下如何构建泛型类: public class MyClass<T> { public void MyFunc() { //… } }   其中,尖括号<>中的T代表的是该泛型类的类型参数,在使用时可以指定其类型,例如,指定类型参数为整数类型,创建封闭式构造类MyClass<int>: MyClass<int> myObj = new MyClass<int>();   二、这一篇我们了解一下泛型的作用机制,泛型是运行时起作用的一套机制,根据运行时类型参数被指定为值类型还是引用类型其使用方式有所不同:   1.当类型参数被指定为值类型时,会在第一次指定该特定值类型的类型时创建该类型唯一的专用化泛型类型,泛型类型中的类型参数会被替换为相应的值类型;   ※此时,运行时会创建不同封闭式构造类型的类型信息对象,它们的类型句柄指向不同的类型信息对象,不同封闭式构造类型的方法句柄也指向不同的方法信息对象;   2.当类型参数被指定为引用类型时,会在第一次指定任意引用类型时创建一个通用化泛型类型,泛型类型中的类型参数会被替换为该引用类型,并在之后每次指定为引用类型时重用该泛型类型并修改其中类型参数的类型;造成这种差异的原因可能在于所有的引用大小相同;

进程快照

允我心安 提交于 2019-12-28 07:50:43
利用进程快照实现对系统所有有进程列表,特定进程的线程数、子进程数以及引用模块信息的统计: 1. CreateToolhelp32Snapshot:系统为所有保存在系统内存中的进程、线程以及模块等的当前状态的信息制作了一个只读副本--系统快照,用户可以通过CreateToolhelp32Snapshot获取系统的快照句柄,完成对进程当前状态的检测。第一个参数设置不同时可以分别获取特定进程的添加模块,系统的所有进程以及线程等等。 DWORD dwFlags; DWORD th32ProcessID; HANDLE HANDLE hSnapshot= CreateToolhelp32Snapshot(dwFlags,th32ProcessID); 2.当第一个参数设定为 TH32CS_SNAPMODULE或TH32CS_SNAPMODULE32时,获取h32ProcessID进程加载的所有模块信息,TH32CS_SNAPPROCESS=0时,取当前进程;当第一个参数取其他值时,第二个参数都会被忽略。 BOOL Module32First()函数 参数:HANDLE hSnapshot传入的Snapshot句柄 参数:LPMODULEENTRY3 lpme 指向一个 MODULEENTRY32结构的指针 作用:从Snapshot得到第一个Module记录信息 BOOL