摘要:
1.禁止顶部的广告进入迅雷的安装目录,再进入“Program”子目录。用记事本打开该目录下的“adhistory.xml”文件,然后将里面的内容全部删除并保存。右击“adhistory.xml”文件,选择“属性”在bomb出的对话框中选中“只读”属性。最后删除“Ad”子目录下的所有文件。2.禁止底部的文字广告进入“Program”子目录,用记事本打开该目录下的“adtask.xml”文件,将里面的内容全部删除,然后保存。最后为“adtask.xml”文件添加“只读”属性。3.禁止右侧显示的资源信息先进入迅雷的安装目录,然后再进入“Components”子目录,然后删除“P4PClient”子. 阅读全文
posted @ 2009-04-26 16:41
o(∩_∩)o...
阅读(329)
评论(0)
推荐(0)
摘要:
进程ID的相关函数HANDLE GetCurrentProcess();HANDLE GetCurrentThread();返回调用线程的进程的伪句柄或线程内核对象的伪句柄。这些函数并不在创建进程的句柄表中创建新句柄。调用这些函数对进程或线程内核对象的使用计数没有任何影响。如果调用CloseHandle,将伪句柄作为参数来传递,那么CloseHandle就会忽略该函数的调用并返回FALSE。当调用一个需要进程句柄或线程句柄的Windows函数时,可以传递一个伪句柄,使该函数执行它对调用进程或线程的操作。DWORD GetCurrentProcessID();DWORD GetCurrentT. 阅读全文
posted @ 2009-04-26 16:34
o(∩_∩)o...
阅读(165)
评论(0)
推荐(0)
摘要:
C/C++运行期库若要使多线程 C和C + +程序能够正确地运行,必须创建一个数据结构,并将它与使用C/C++运行期库函数的每个线程关联起来。1、_beginthreadex_beginthreadex函数的参数列表与CreateThread函数的参数列表是相同的,但是参数名和类型并不完全相同(C / C + +运行期函数不对Windows数据类型有任何依赖)。_beginthreadex函数只存在于C/C++运行期库的多线程版本中,多线程应用程序必须显式转换到多线程的C/C++运行期库。(1)_beginthreadex的一些要点:• 每个线程均获得由C/C++运行期库的堆栈分配的自己的t. 阅读全文
posted @ 2009-04-26 16:33
o(∩_∩)o...
阅读(402)
评论(0)
推荐(0)
摘要:
终止线程的运行若要终止线程的运行,可以使用下面的方法:• 线程函数返回(最好使用这种方法) 。• 通过调用ExitThread函数,线程将自行撤消(最好不要使用这种方法) 。• 同一个进程或另一个进程中的线程调用TerminateThread函数(应该避免使用这种方法) 。• 包含线程的进程终止运行(应该避免使用这种方法) 。线程函数返回始终都应该将线程设计成这样的形式,即当想要线程终止运行时,它们就能够返回。这是确保所有线程资源被正确地清除的唯一办法。如果线程能够返回,就可以确保下列事项的实现:• 在线程函数中创建的所有C + +对象均将通过它们的撤消函数正确地撤消。• 操作系统将正确地释. 阅读全文
posted @ 2009-04-26 16:32
o(∩_∩)o...
阅读(313)
评论(0)
推荐(0)
摘要:
CreateThread函数1、CreateThread函数概述要创建一个或多个辅助线程(辅助函数),只需要让一个已经运行的线程来调用CreatThreadHANDLE CreateThread(PSECURITY_ATTRIBUTES psa, DWORD cbStack,PTHREAD_START_ROUTINE pfnStartAddr, PVOID pvParam,DWORD fdwCreate, PDWORD pdwThreadID);当CreateThread被调用时,系统创建一个线程内核对象。该线程内核对象不是线程本身,而是操作系统用来管理线程的较小的数据结构。可以将线程内核对. 阅读全文
posted @ 2009-04-26 16:29
o(∩_∩)o...
阅读(444)
评论(0)
推荐(0)
摘要:
线程函数每个线程必须拥有一个进入点函数,线程从这个进入点开始运行。前面已经介绍了主线程的进入点函数:即(mian、wmain、WinMain或wWinMain)。线程函数可以使用任何名字。如果在应用程序中拥有多个线程函数,必须为它们赋予不同的名字,否则编译器/链接程序会认为你为单个函数创建了多个实现函数。线程函数必须返回一个值,它将成为该线程的退出代码。(这与 C/C++运行期库关于让主线程的退出代码作为进程的退出代码的原则是相似的)。线程函数(实际上是你的所有函数)应该尽可能使用函数参数和局部变量。当使用静态变量和全局变量时,多个线程可以同时访问这些变量,这可能破坏变量的内容。然而,参数和. 阅读全文
posted @ 2009-04-26 16:28
o(∩_∩)o...
阅读(151)
评论(0)
推荐(0)
摘要:
A: 线程由两个部分组成:•线程的内核对象,操作系统用它来对线程实施管理。内核对象也是系统用来存放线程统计信息的地方。• 另一个是线程堆栈,它用于维护线程在执行代码时需要的所有函数参数和局部变量线程在它的进程地址空间中执行代码,并且在进程的地址空间中对数据进行操作。多个线程将共享单个地址空间。这些线程能够执行相同的代码,对相同的数据进行操作。这些线程还能共享内核对象句柄,(因为句柄表依赖于每个进程而不是每个线程存在)。B:线程的创建:当进程被初始化时,系统就要创建一个主线程。该线程与C/C++运行期库的启动代码一道开始运行,启动代码则调用进入点函数(mian、wmain、WinMain或wWi 阅读全文
posted @ 2009-04-26 16:26
o(∩_∩)o...
阅读(156)
评论(0)
推荐(0)
摘要:
进程的终止若要终止进程的运行,可以使用下面四种方法:• 主线程的进入点函数返回(最好使用这个方法) 。• 进程中的一个线程调用ExitProcess函数(应该避免使用这种方法) 。• 另一个进程中的线程调用TerminateProcess函数(应该避免使用这种方法) 。• 进程中的所有线程自行终止运行(这种情况几乎从未发生) 。1、主线程的进入点函数返回始终都应该这样来设计应用程序,即只有当主线程的进入点函数返回时,它的进程才终止运行。这是保证所有线程资源能够得到正确清除的唯一办法。让主线程的进入点函数返回,可以确保下列操作的实现:• 该线程创建的任何C + +对象将能使用它们的析构函数正确. 阅读全文
posted @ 2009-04-26 16:22
o(∩_∩)o...
阅读(333)
评论(0)
推荐(0)
摘要:
二、CreateProcess函数BOOL CreateProcess(LPCTSTR lpApplicationName, LPTSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes。LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreationFlags,LPVOID lpEnvironment, LPCTSTR lpCurrentDirectory, LPSTARTUPINFO lpStartupInfo, LPPROCE. 阅读全文
posted @ 2009-04-26 16:20
o(∩_∩)o...
阅读(1132)
评论(0)
推荐(0)
摘要:
5、进程的当前驱动器和目录当不提供全路径名时,Windows的各个函数就会在当前驱动器的当前目录中查找文件和目录。系统将在内部保持对进程的当前驱动器和目录的跟踪。 由于该信息是按每个进程来维护的,因此改变当前驱动器或目录的进程中的线程,就可以为该进程中的所有线程改变这些信息。通过调用下面两个函数,线程能够获得和设置它的进程的当前驱动器和目录:DWORD GetCurrentDirectory(DWORD cchCurDir, PTSTR pszCurDir);BOOL SetCurrentDirectory(PCTSTR pszCurDir);进程的当前目录系统将对进程的当前驱动器和目录保持. 阅读全文
posted @ 2009-04-26 16:17
o(∩_∩)o...
阅读(509)
评论(0)
推荐(0)