随笔分类 - [14] 每日一练(Windows)
摘要:屏保估评大家都用过,其原理就是监测输入设备是否有输入消息,如果维持一定的时间都没有输入消息的话,系统将进行屏保。发屏何过程中发现有鼠标或键盘的消息输入时将取消息屏保. 屏保核心代码就是监控鼠标或键盘消息输入,Windows 提供了一个这样的API: GetLastInputInfo 函数
        阅读全文
            
摘要:在前某节中我们学习了模拟鼠标的按下等相关操作,鼠标可以模拟它的操作,那么键盘是否也可以的呢? 答案是肯定的,它就是 keybd_event API, 与mouse_event函数非常相似
        阅读全文
            
摘要:我想几乎所有的Windows 使用都有用过Ctrl + Alt + Delete 启动Windows启动管理器,还有Ctrl + Shift 来切换输入法等等。 Windows 是如何实现的呢,这正是今天所要学习的热键,热键包括:注册(RegisterHotkey), 注销(UnregisterHotkey), 以及接受热键的消息 WM_HOTKEY
        阅读全文
            
摘要:我们都知道每一个按键都有一个键值同时也有名称,本节通过Windows API: GetKeyNameText 读取按键的名称.
        阅读全文
            
摘要:平时里喜欢在QQ平台上玩帝国时代2,也少不了刷房器这个软件来挤房间,也这个挤房工具就是模拟鼠标单击操作来完成的。今天我们也学习这个小技巧,使用mouse_event模拟鼠标双击事件,
        阅读全文
            
摘要:本人想了很久,目前还没有发现那个软件需要这么一个功能。我记得当前在读大学的时间看到别人写的一个有趣的小软件,就是骂你一句,你只是回复yes, 否则软件关不了,今天我也借鉴这种方式,但我只做了最核心的一部分. 那就是通过ClipCursor API来完成.
        阅读全文
            
摘要:我们知道在本窗体内监控鼠标的位置是件非常容易的事,但如果鼠标不在窗体中我们获取鼠标位置就还得花一下心事,当然windows还是给我们提供了对应的函数:SetCaptureReleaseCapture
        阅读全文
            
摘要:鼠标作为windows乃至所有的图形操作系统不可缺少的输入设备,操作系统有了它软件的可运行性就大大弱化了,鼠标可完成了许多操作。 本节中我们将学习鼠标的一些基本的事件以及信息,众所周知,鼠标有移动,单击(按下,弹起),双击,右击,滚动等诸多事件,它们分别对应WM_MOUSEMOVE, WM_LBUTTONDOWN, WM_LBUTTONUP, WM_LBUTTONCLICK
        阅读全文
            
摘要:本例主要基于Vista 以后的版本开发的,线程池中的工作线程, 工作线程池实现框架代码如下:CreateThreadpoolWorkSubmitThreadpoolWorkWaitForThreadpoolWorkCallbacks
        阅读全文
            
摘要:在同个进程中, 线程本地存储可以实现同一个线程内多个函数访问自己的私有数据,它有着以全局变量达不到的功能。 操作线程本地存储主要有:TLSAlloc 在进程中分配一个本地存储,并返回一个标示TLSSetValue 设置线程本地存储数据TLSGetValue 读取线程本地存储数据TLSFree 释放本地存储槽虽然不同线程都共用一个线程本地存储槽,但访问的数据不是同一个地方
        阅读全文
            
摘要:等待对象用于在发送内核对象信号后或当指定的等待期间超时的时候调用回调函数。CreateThreadpoolWait 函数可用来创建等待对象。指向第一个参数中提供的回调函数的指针必须与 WaitCallback 函数的签名相匹配CreateThreadPoolWaitSetThreadPoolWaitWaitForThreadPoolWaitCallBacksCloseThreadPoolWait
        阅读全文
            
摘要:在我们前几节中讲述线程对象的例子, 我都是在一个线程中再创建一些线程并在这个线程中等待其他的线程结束, 这样做的原因在于不阻塞主线程造成界面不能更新无法显示的问题。 今天这一节中我们学了一个更好的方式, 通过Windows提供一个API: MsgWaitForMultipleObjects 这个API即可等待对象也可以等待Windows消息.
        阅读全文
            
摘要:在前面那一节中我们曾学习过线程的一些基本操作,如线程创建, 挂起,唤醒以及中断等, 线程除了这些操作外还有一个非常主要的操作就是优先级。 我在开发一些音频类软件时, 通常他们可以在后台, 但当系统很忙时会发现音频很卡声音时有时没有, 这时如果我将系统优先级高一些时这个问题得到解决, 同样这样的应用场景在用户体验方面比较多见, 就是系统再忙不能让用户感觉在忙。 windows 对线程有优先级API主...
        阅读全文
            
摘要:Windows 提供了一个线程安全的引用计数, 确保线程之间自减自加是安全即线程访问时其他线程不能访问,系统主要有两个API: InterLockedIncrement InterLockedDescrement
        阅读全文
            
摘要:信号量可实现同一时刻多个线程同时访问一个资源,当同一时刻只有一个线程在访问时它就和互斥量是一样的,所以有时说信号量是Mutex的退化版。它也是系统内核对象. 系统提供相关的API有:CreateSemaphoreOpenSemaphoreReleaseSemaphoreWaitForSingleObject/WaitForMultipleObjectsCloseHandle
        阅读全文
            
摘要:事件是我们目常编程中用于实现线程同步通讯最多的对象. 事件也是内核对象具有跨进程通讯的能力。 可用于设计更复杂的同步对象。 系统提供相关API有:CreateEventOpenEventSetEventResetEventPulsEventWaitForSingleObjectCloseHandle
        阅读全文
            
摘要:互斥量和上节所学的Critical section 功能是一样的,都具有排他性,确保同一时刻只能一个线程访问共享资源。但互斥量最大的不同还在于互斥量是系统内核对象,除了实现同一进程内线程之问的互斥外(但性能上是临界区的300倍)还可以实现不同进程间线程通讯,
        阅读全文
            
摘要:如果一个组织或团队在没有领导或发号事令的人,那这个团队就会处以无序状态,而我们的多线程就是这样没有头的团队。而线程同步对象就是这个发号事令的人,线程同步对象操作系统提供了: 临界区,事件,信号量,互斥量.今天学习线程同步对象之一--临界区, Windows 主要提供以下API: InitializeCriticalSectionEnterCriticalSectionLeaveCriticalSectionDeleteCriticalSection
        阅读全文
            
摘要:为了完成多个任务,进程的主线程创建多线程完成一件事,那主线程如何知道多个线程工作完成呢?Windows提供了两个函数WaitForSingleObject, WaitForMutipleObjects
        阅读全文
            
摘要:线程可以说是操作系统的灵魂,没有线程就没有进程更没有Windows。操作系统管理线程从而实现多任务管理,操作系统为每个线程为配一定的时间片,CPU轮流执行线程来达到执行操作系统调度。
        阅读全文
            
 
                    
                     
                    
                 
                    
                 
         浙公网安备 33010602011771号
浙公网安备 33010602011771号