操作系统
文章平均质量分 71
johnny_83
占略
展开
-
以命名管道方式实现网络进程间通信的一个实例
Win32位API集支持的命名管道(named pipe)是实现网络进程间通信的一种有效手段。命名管道的接口比较简单,在程序中实现比较方便,由其开发的应用程序也很容易使用,只要知道机器及管道的名称即可连接两台机器上的两个进程。命名管道首先由一进程调用CreateNamedPipe函数创建,这一创建命名管道的进程称为Server进程,然后Server进程通过调用ConnectNamedPi原创 2007-07-22 07:47:00 · 1892 阅读 · 0 评论 -
桌面上飘雪特效程序
#include#include#include#includeconst int SnowNumber=500; //雪点数量struct SnowNode{POINT postion; //雪点位置int iColor; //先前的颜色int iSpeed; //下落速度 int iMove; //下落距离int iStick; //粘贴度};SnowNode SnowNod原创 2007-07-22 10:15:00 · 1525 阅读 · 1 评论 -
远程线程技术嵌入进程的模型
附录:利用远程线程技术嵌入进程的模型源码://////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //// Remote DLL For Win2K by Shotgun //// This原创 2007-08-04 08:57:00 · 585 阅读 · 0 评论 -
如何在本地进程中调用远端计算机上的进程
回答这个问题其实就是RPC的编程:开发RPC应用程序,一个重要的要素就是接口。显然在客户和服务器的接口存根必须基于完全相同的函数定义上;否则RPC会失败。 1.定义接口(HELLO.IDL): [ uuid(0EB13191-F7C4-11d3-BF4A-00104B17A4FB),/*注意你必须在自己的程序中生成自己的UUID,利用GUIDGEN应用程序,原创 2007-08-04 09:15:00 · 733 阅读 · 0 评论 -
编写进程/线程监视器
有时候我们希望能够动态监视系统中任意进程/线程的创建与销毁。为了达到此目的我翻阅了 DDK 手册,发现其提供的 PsSetCreateProcessNotifyRoutine(),PsSetCreateThreadNotifyRoutine(),等函数可以实现此功能。这两个函数可以通过向系统注册一个 CALLBALCK 函数来监视进程/线程等操作。函数原形如下:NTSTATUS PsSetC原创 2007-08-04 08:47:00 · 754 阅读 · 0 评论 -
CPU信息的获得
最近到整理了一份CPU的信息,应该算是比较全面的吧。几乎现在所有的X86 CPU都内置了CPUID指令以辨别真伪,一些CPU厂商例如AMD,VIA等还内置了更加丰富的扩展CPUID指令,用着更方便了。下面我们利用Delphi来实现一个CPU检测的软件。CPUID的调用方式如下: asm push eax push ebx push ecx push edx mov eax,X//*********原创 2007-08-07 08:29:00 · 657 阅读 · 0 评论 -
远程调用技术代码追踪之(Webservice)
最近阅读了SocketConn的源码和WebService 的源码,把追踪的过程写了下来,方便大家学习。毕竟这需要精力,时间和毅力。感谢煮茶待英雄博志区和三层数据库讨论区兄弟们的支持,特别是julian兄弟,不是他,我可能没耐心继续下去。如果有时间,大家可以继续完善。从socket和Websevice的底层实现细节,我们发现BORLAND的工程师们的构思和实现的过程。我觉得这对我们的学习应该是非常原创 2007-08-04 08:37:00 · 1773 阅读 · 0 评论 -
进程间通讯(IPC )方法集
原创 2007-09-13 15:10:00 · 1260 阅读 · 0 评论 -
自定义的匿名管道类
#ifndef ANONYPIPEUNIT_H#define ANONYPIPEUNIT_H#include #include //---------------------------------------------------------------------------class CAnonyPipe{public: enum CPipeDirect{pdRead=0,原创 2007-10-22 11:26:00 · 768 阅读 · 0 评论 -
管道实现进程间通讯
一.基本的理论知识 1.什么是管道以及分类 管道是两个头的东西,每个头各连接一个进程或者同一个进程的不同代码,按照管道的类别分有两种管道,匿名的和命名的;按照管道的传输方向分也可以分成两种,单向的双向的。根据管道的特点,命名管道通常用在网络环境下不同计算机上运行的进程之间的通信(当然也可以用在同一台机的不同进程中)它可以是单向或双向的;而匿名管道只能用在同一台计算机中,它只能是单向的。原创 2007-10-23 09:25:00 · 2868 阅读 · 0 评论 -
自定义匿名管道类2
//---------------------------------------------------------------------------/*Module : ANONYMOUSPIPE.HPurpose: Defines the interface for an MFC wrapper classe for Win32 Anonymous PipesCreated: LICQ /原创 2007-10-26 11:51:00 · 790 阅读 · 0 评论 -
邮槽实现进程间通讯
· 邮槽是基于广播通信体系设计出来的,它采用无连接的不可靠的数据传输· 邮槽是一种单向通信机制,创建邮槽的服务器进程读取 数据,打开邮槽的客户机进程写入数据· 为保证邮槽在各种Windows平台下都能够正常工作,我们传输消息的时候,应将消息的长度限制在424字节以下 邮槽提供一种进程间通讯能力的方法。任何进程都可以创建一个邮槽,原创 2007-10-12 17:30:00 · 2564 阅读 · 0 评论 -
匿名管道实现获取控制台程序输出
在程序设计中,有时候需要调用一些控制台程序并取得其在控制台上的输出,如VS的IDE就调用了cl.exe、link.exe等控制台的程序,并可将这些程序的输出在IDE中显示出来。曾经很迷惑这个功能的实现,直到有一天看到下面的参考代码才恍然大悟,原来一切都这么简单,只不过用了CreatePipe、CreateProcess、ReadFile寥寥几个函数而已。特此记下以供参考。#incl原创 2007-10-12 12:19:00 · 3815 阅读 · 0 评论 -
托盘编程
定义了托盘图标的数据结构在文件/"shellapi.h/"中一、托盘简介 所谓的“托盘”,在Windows系统界面中,指的就是下面任务条右侧,有系统时间等等的标志的那一部分。在程序最小化或挂起时,但有不希望占据任务栏的时候,就可以把程序放到托盘区。其实,托盘区的编程很简单,下面简要阐述一下子 二、托盘编程相关函数 其实呢,把程序放到托盘上的本质就是先在托盘区绘制一个图标,然后把程序隐藏不见原创 2007-07-22 09:31:00 · 648 阅读 · 0 评论 -
怎样才能使我的窗口即使在按下“显示桌面”后仍然在最顶端?
SetWindowPos(Form->Handle,HWND_TOPMOST,0 ,0,0,0,SWP_NOSIZE|SWP_NOMOVE);//去掉窗口标题区,当然你也可以不去掉,具体请参考帮助 Param.Style=Param.Style & ~WS_CAPTION; Param.Style=Param.Style | WS_POPUP;原创 2007-07-22 09:30:00 · 1441 阅读 · 1 评论 -
计算机的自动关机、重启和待机
API函数:ExitWindowsEx(Long uFlags,Long dwReserved );uFlags : 指定下述一个或多个标志(用OR运算符合并到一起) EWX_FORCE 强迫中止没有响应的进程 EWX_LOGOFF 中止进程,然后注销 EWX_SHUTDOWN 关掉系统电源(如果可能的话,ATX电源就可以) EWX_REBOOT 重新原创 2007-07-22 09:25:00 · 875 阅读 · 0 评论 -
程序中调用控制面板设置功能
应用程序运行时,有时需要对系统环境有特殊要求。例如,在Delphi数据库应用程序中可能需要进行BDE(Borland Database Engine)或ODBC数据源名称(DSN:Data Source Name)的设置;在网络应用程序中可能需要进行网络配置设置、Modem属性设置或用户拨号连接的帐号和密码的设置并保存在系统中;在CTI(Computer-Telephony Integrati原创 2007-07-22 09:34:00 · 712 阅读 · 0 评论 -
显示器的关闭与打开编程
(1).SendMessage(Application->Handle,WM_SYSCOMMAND,SC_MONITORPOWER,1);//关闭显示器SendMessage(Application.Handle,WM_SYSCOMMAND,SC_MONITORPOWER,-1);//打开显示器SendMessage(hWnd, WM_SYSCOMMAND, SC_MONITORPOWER, 0)原创 2007-07-22 09:45:00 · 5767 阅读 · 1 评论 -
如何把自己的菜单加入到桌面右键菜单中?
利用注册表,先加入注册表单元uses registry添加:procedure TForm1.Button1Click(Sender: TObject);var reg:tregistry; Filename:String;begin //Project1是我的EXE文件名,你的你要改 Filename:=Trim(ExtractFileDir(Application.Exename)+原创 2007-07-22 09:48:00 · 1439 阅读 · 0 评论 -
Visual C++ MFC 中常用宏的含义介绍
AND_CATCHAND_CATCH AND_CATCH(exception_class,exception _object_point_name) 说明: 这个宏定义一个代码块,它用于获取废除当前TRY块中的附加异常类型。使用CATCH宏以获得一个异常类型,然后使用AND_CATCH宏获得随后的异常处理代码可以访问异常对象(若合适的话)已得到关于异常的特别原因的更多消息。在AND_原创 2007-07-22 10:42:00 · 580 阅读 · 0 评论 -
WinNT下-真正隐藏进程
面对众多的计算机高手,考虑许久,终于还是决定出来献丑一下,文章内尽量使用最简洁易懂的词汇及例子来介绍,希望能够对一些初学与进阶者有所帮助。 关于进程的隐藏,98下的例子数不胜数。WinNT/Win2K下的隐藏方法,西祠的高手shotgun在去年的6月就已经在网上发布出实例《揭开木马的神秘面纱》 ,我也多次拜读他的文章,对他的计算机水平及热心帮助朋友的作风十分敬佩。这里也可算是对sh原创 2007-07-22 08:40:00 · 633 阅读 · 0 评论 -
怎样是程序显示在系统托盘中
TIcon *MyIcon = new TIcon;MyIcon->LoadFromFile(ExtractFilePath(ParamStr(0))+/"////Day 1.ico/");TNotifyIconData IconData;//是自定义的NotifyIcon变量的大小IconData.cbSize = sizeof(IconData);//希望托盘程序产生的消息有哪个窗体来处理就让原创 2007-07-22 09:28:00 · 822 阅读 · 0 评论 -
在Win桌面创建快捷方式
API提供了一个叫做IShellLink的COM接口允许我们创建快捷方式。为在桌面创建快捷方式,我们创建一个IShellLink对象,设置它的属性,然后把这个link保存到desktop目录。下面的例子代码演示了怎样创建一个快捷方式。在这个例子里,这个快捷方式保存在C://根目录下。//--------------------------------------------------------原创 2007-07-22 09:46:00 · 894 阅读 · 0 评论 -
如何更改右键菜单?
一、右键菜单大揭密 1、在所有的文件右键菜单中加入命令 如果你的系统上安装有Winzip、UltraEdit等,当你对任一文件点右键时,都会有“Add to zip”、“UltraEdit-32”等命令(当然,Winzip稍有不同,我将在后面讲到)。它的添加方法是: (1).打开“HKEY_CLASSES_ROOT//*”; (2).在其下新建“shell//命令//command”分支,再将co原创 2007-07-22 09:53:00 · 2775 阅读 · 0 评论 -
多线程内存模型
原创 2007-07-22 08:43:00 · 461 阅读 · 0 评论 -
修改注册表,自动运行程序
在注册表分支HKEY_LOCAL_MACHINE//SOFTWARE//Microsoft//Windows//CurrentVersion//Run下建立一个字符串String型子键,名字不要重复就可以,其内容为你想在启动时运行的程序全路径。这样就会自动在启动时运行。 HKEY hKEY; CString KeyTree = /"SOFTWARE////Microsoft///原创 2007-07-22 09:09:00 · 1196 阅读 · 0 评论 -
编写控制面板应用程序
当我们打开控制面板时,会看到一些控制面板项目,如“添加/删除程序”、“调制解调器”、“系统”等。我们经常需要通过这些项目来对Windows进行配置。还有一些软件,如雅马哈声卡的驱动程序,会在控制面板中增加自己的配置项目。使用C++Builder 能方便快速地开发出自己的控制面板应用程序。使用标准的控制面板程序 控制面板程序实际上就是一个DLL(动态链接库)文件,关键是它实现了CPlAppl原创 2007-07-22 09:09:00 · 1386 阅读 · 1 评论 -
如何判断winme,winxp,win2000等操作系统
开始——运行——winver,就可以知道了。GetVersionExSYSTEMVERSION st; GetVersionEx(...);enum Win32Type{ Win32s, WinNT3, Win95, Win98, WinME, WinNT4, Win2000, WinXP }; Win3原创 2007-07-22 09:29:00 · 965 阅读 · 0 评论 -
临界区实现线程同步互斥
除了临界区对象进能够被用于一个进程内的线程使用外,临界区对象同于其他互斥体对象一样,也可以提供同步机制.事件,互斥体和信号量对象也能够被用于单个进程实现资源互斥访问,与此相比,为了实现同步互斥访问共享资源,临界区对象提供一种更加轻巧,快速和有效的机制.象互斥体对象一样,临界区对象也可以被一个使用它来阻止同步访问共享资源的线程所用于.例如:一个进程随时可以使用一个临界区对象来阻止其他线程修改一个局数原创 2007-10-13 11:40:00 · 3539 阅读 · 0 评论