Archive for 10月, 2006
-
UNUNTU&XGL&Beryl的3D效果
星期五, 10月 27th, 2006
感覺LINUX-UBUNTU 和XGL實現的3D效果要比微軟即將發布的VISTA 的效果要強的多!
無聊的時候安裝體驗下! 浪費資源,删除了! 留下幾張截圖留念一下!
【一】【二】
【三】
-
嘿..睡不觉呀!就来.加个验证码,免得天天删垃圾.信息
星期五, 10月 27th, 2006
嘿..睡不觉呀!就来.加个验证码,免得天天删垃圾.信息
.从动网那边提取过来的,
好像有个BUG..
就是第一次验证通过以后,下次就不用了!!
嘿.有空再看看,, [music] -
如何通过编程得到所有窗体的标题及类名称
星期日, 10月 22nd, 2006
如果我们想通过编程来检测某个窗口是否存在,我们通常会使用 Windows API 函数中的 FindWindow(),而且,通常我们又不知道要获得窗口的类名称,所以我们经常性的忽略第一个参数,而是只使用窗口标题来检测窗口,这里就出现了一个问题:若该窗口没有标题或有变化标题(如IE)则我们就需要使用类名称进行查询了。当然,我们可以通过 VS 中提供的 spy++ 这样的工具来获得桌面窗口的类名称,但对于没有安装 VC++ 的朋友想必就要借助第三方软件了,与其这样为什么不自己动手呢?其实,对于整个枚举过程,完全可以基于 EnumWindows() 函数,而我们需要做的,只是给这个函数定义一个布尔类型的回调函数(这里我们命名为 EnumFunc()),并给它赋予两个要求的长整参数 hwnd 和 lParam,最后将自己需要的代码内容写入函数内部。具体代码如下:
如果您使用 VC++ 来编程,那么您可以参考以下代码:
[code]
#include “stdio.h”
#include “windows.h”
#include “string.h
bool CALLBACK EnumFunc(HWND hwnd, LPARAM lParam)
{
char sString[2001],sClassName[2001];
int hFunc=GetClassName(hwnd,(LPTSTR)sClassName,2000);
int hFunc2=GetWindowText(hwnd,(LPTSTR)sString,2000);
if(hFunc!=0)
{
[...] -
递归调用遍历注册表
星期日, 10月 22nd, 2006
/********************************************************************
created: 2006/10/22
created: 22:10:2006 1:44
file ext: cpp
author: Gleon
E-Mail: WinAsk@Gmail.CoM
purpose: 递归调用遍历注册表
*********************************************************************/
#include "stdafx.h"
#include "windows.h"
#define MAX_KEY_LENGTH 1024
int ReadKeyValue(HKEY hKey)
{
DWORD dwIndex,Type,ReSizeName,ReSizeValue;
TCHAR Name[1024];
TCHAR Value[1024];
int ret=0;
[...] -
于从文件句柄获得全路径
星期四, 10月 19th, 2006
从文件句柄获得全路径这个问题,似乎是个“老大难”问题。
很久以前我就在水木清华见到过。最近又不断有人提到。
其实问题并不难,只是解决办法有点绕,不是调用一个API就能解决的。
问题的关键在于,形如”X:”的Dos设备名都是符号链接(SymblicLink),而文件打开后文件对象中保存的是逻辑卷设备名(如”\Device\HarddiskVolumeX”)。前者可以转换成后者,而后者却不能简单地转换成前者。以至于从句柄得到的路径总是“缺少”盘符这一部分。实际上,把所有的”X:”都变成设备名去匹配路径就可以了。
下面是演示代码,很简单,所以就不加注释啦 ^_^
#include <windows.h>
#include <ntsecapi.h>
#pragma comment (lib,"ntdll.lib") // Copy From DDK
NTSYSAPI
NTSTATUS
NTAPI
ZwQueryObject(
IN HANDLE ObjectHandle,
IN ULONG ObjectInformationClass,
OUT PVOID ObjectInformation,
IN ULONG ObjectInformationLength,
OUT PULONG ReturnLength OPTIONAL
);
BOOL GetPathByHandle(HANDLE hFile, LPWSTR lpBuf, DWORD nBuf)
{
ULONG m, n;
WCHAR lpPath[MAX_PATH+4];
WCHAR lpDrive[MAX_PATH];
WCHAR lpDevName[MAX_PATH];
if (ZwQueryObject(hFile, 1, lpPath, MAX_PATH+4, &m) >= 0 &&
[...]