posts - 135,  comments - 384,  trackbacks - 0
摘要: 1. 扇三角把32开的书纸叠成三角形,每人出一个放在地上玩家轮流用手扇风,翻了就是自己赢的,收起来,只到地上的三角赢完,然后开始下一轮。2. 打牌子(音)把纸叠成正方形,两个人玩,每人出一个,对方的牌子放在地上,拿着自己的碰击对方地上的牌子(或通过撞击地方产生风来吹翻),如果对方的翻了则赢过来。3. 打玻璃珠挖一小坑,距小坑画一条线,大家从线上开始把珠子用手弹出来,目标是小坑,先进小坑的则变成防守方,把珠子拿在手中,等对方珠靠近小坑时,防守方可以选择打还是不打,不打的话,对方继续往小坑弹,打的话则可以从小坑后打击对方,直到对方也进入小坑为止。防守方也有风险,如没打到对方的珠子,或打的距离太近等阅读全文
posted @ 2012-01-09 00:17 81 阅读(8) 评论(0) 编辑
摘要: 1.自定义标签打印软件出售简单说明: 为朋友做的一个标签打印软件,功能简单好用,关键是能自定义,你想设计成什么样都可以。主要适用:合格证、价格标签、服装吊牌等。打印介质:普通不干胶纸,A4或其他尺寸。 其他:目前是设计和打印标签,可以按客户需求增加其他功能。2.屏幕共享软件说明:共享一台电脑的桌面给其他人看,像Net meetting,但本软件可以共享给多人看,管理主机可以指定共享某一台主机的桌面给其他所有人看。如果有需要可以增加语音功能,即把任何一个参会者的麦克风语音传送给所有参会者的电脑播出,可以实现共享拍板功能。相当于远程会议。适用环境:会议室,培训中心,可以不用投影仪,而直接把桌面显示阅读全文
posted @ 2011-10-20 14:57 81 阅读(12) 评论(0) 编辑
摘要: 目录前言 1. 对外语学习的主要误区 2. 造成“哑巴英语”的最主要原因 3. 英语环境的问题 4. 特殊群体 5. 语言关键期之争 6. 语言条件反射 7. 关于记忆力 8. 中国“英”雄 9. 二律背反? 10. 世纪之战 11. “学得”-“获得”之辩 12. 克氏理论实践篇 第一阶段、早期(Early Stage) 1. 看图识音 2. 全身反应法(Total Physical Response) 第二阶段、提高期(Upping the Ante) 1. 听力内容设计 2. 纽约人在北京 v.s 北京人在纽约 3. 寻找人工替...阅读全文
posted @ 2012-01-12 22:14 81 阅读(6) 评论(0) 编辑
1. 扇三角

把32开的书纸叠成三角形,每人出一个放在地上玩家轮流用手扇风,翻了就是自己赢的,收起来,只到地上的三角赢完,然后开始下一轮。

 

2. 打牌子(音)

把纸叠成正方形,两个人玩,每人出一个,对方的牌子放在地上,拿着自己的碰击对方地上的牌子(或通过撞击地方产生风来吹翻),如果对方的翻了则赢过来。

 

3. 打玻璃珠

挖一小坑,距小坑画一条线,大家从线上开始把珠子用手弹出来,目标是小坑,先进小坑的则变成防守方,把珠子拿在手中,等对方珠靠近小坑时,防守方可以选择打还是不打,不打的话,对方继续往小坑弹,打的话则可以从小坑后打击对方,直到对方也进入小坑为止。防守方也有风险,如没打到对方的珠子,或打的距离太近等,则需要从线上开始。具体玩法我也记不大清了。

 

4.拦水坝

在有流水的小沟中,每人用泥巴拦水坝,水坝可以有泄洪口。然后在最上流拦坝,等有一定水量后突然打开,洪水直接下泄,看谁修改的水坝能抵挡住洪水的冲击。

 

5. ban响泡

 属于玩泥巴类的,用泥巴捏成盆子样,然后用力往平地上扔,开口向下,由于气压盆子的底会被炸开并有砰的一声。对方需用泥巴补住开口的大小,炸开的越大,对方需的泥巴越多,算是赢的,很好玩。

 

6. 捏泥人

这个很常见,用泥巴捏成人或其他动物的形状,然后用手拿着进行一定的表演。

 

7.叠纸飞机

有各种叠法,然后往天上扔,看谁的飞机飞的时间长、远、平稳,人多时一起玩,很热闹。

 

8.捉迷藏

一般晚饭后,有月光,同伴们集中在一起,分成两组,一组藏(在村子里随便找地方),一组捉(到处找),再找一棵树作为大本营,由捉的一方派一人负责看守。被捉的人被发现时可以跑,但只要被摸后衣服就算被捉,退出游戏,被捉一方所有人的目标是在捉之前摸到代表大本营的那棵树,但由于有人看守,想摸是非常难的。把所有人捉住就算赢了。

9.撞架
也是晚饭后,有月光,很多人集中在一空场子上,分成两组或多组,每组中把一人架起来,即双腿放在前面人的两个肩膀上,后面两个人把空中这人的肩膀扛起来,相当于前后把这个抬起来。两组准备好后开始把中间这人架起来往一起撞,空中人负责用脚撞击对方,前面人负责前进方向,后面两人负责稳住阵角。一般人都不喜欢做前面的人,老是被对方的脚撞在脸上。最后经不住对方攻击,组合垮下来,上面的掉下来就算输了。有时对方的力量太大,后面的人扛不住,住后倒,哗啦倒一大片。玩起来人声鼎沸,热闹的要命,没玩过的人是体会不到的。

10.斗鸡
这个大家都知道,我们有一对一PK的,也有打群架的,谁最后一个还站着就是胜利!

11. 滚铁环

找一铁圈,再用铁丝做成勺子形的一个弯,就可以推着这个铁环跑,各种路况都可以,有段时间不推着就不会走路了。铁环最后有一定重量,不能太轻,记得村里油坊里打油用的那种最好。

 

 (想起来的话慢慢补充)

posted @ 2012-01-09 00:17 81 阅读(8) 评论(0) 编辑

原文:

http://www.cnblogs.com/NalrA/archive/2009/06/15/1503568.html

 

1.   System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName
     获取模块的完整路径。
2.   System.Environment.CurrentDirectory
     获取和设置当前目录(该进程从中启动的目录)的完全限定目录。
3.   System.IO.Directory.GetCurrentDirectory()
     获取应用程序的当前工作目录。这个不一定是程序从中启动的目录啊,有可能程序放在C:\www里,这个函数有可能返回C:\Documents and Settings\ZYB\,或者C:\Program Files\Adobe\,有时不一定返回什么东东,我也搞不懂了。
4.  System.AppDomain.CurrentDomain.BaseDirectory
     获取程序的基目录。
5.  System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase
     获取和设置包括该应用程序的目录的名称。
6.  System.Windows.Forms.Application.StartupPath
     获取启动了应用程序的可执行文件的路径。效果和2、5一样。只是5返回的字符串后面多了一个"\"而已
7.  System.Windows.Forms.Application.ExecutablePath
     获取启动了应用程序的可执行文件的路径及文件名,效果和1一样。

以上出处:九头龙的Blog

 

若在类库文件中获取以上各种信息则会产生使用类库的应用程序的目录信息.Highlight的比较常用,下面的是验证测试代码:

 


 1 Process process = Process.GetCurrentProcess();
 2             _fileName = "f://log.txt";
 3             _sw = new StreamWriter(_fileName);
 4             _sw.WriteLine("MainModule is :"+process.MainModule.FileName);
 5             _sw.WriteLine("Environment.CurrentDirectory is :"+Environment.CurrentDirectory);
 6             _sw.WriteLine("System.IO.Directory is :" + System.IO.Directory.GetCurrentDirectory());
 7             _sw.WriteLine("System.AppDomain.CurrentDomain.BaseDirectory is :" + System.AppDomain.CurrentDomain.BaseDirectory);
 8             _sw.WriteLine("System.AppDomain.CurrentDomain.DynamicDirectory is :" + System.AppDomain.CurrentDomain.DynamicDirectory);
 9             _sw.WriteLine("System.AppDomain.CurrentDomain.RelativeSearchPath is :" + System.AppDomain.CurrentDomain.RelativeSearchPath); 
10             _sw.WriteLine("System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase is : " + System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase);
11             _sw.WriteLine("System.Windows.Forms.Application.ExecutablePath is : " + System.Windows.Forms.Application.ExecutablePath);
12             _sw.Flush();
posted @ 2012-01-05 20:15 81 阅读(10) 评论(0) 编辑

留下记号,最近要用到:

方案1、使用WM_COPYDATA消息
方案2、使用WriteProcessMemory(),ReadProcessMemory()访问其他进程的内存
方案3、使用内存镜像文件
http://topic.csdn.net/u/20080123/09/12664978-2019-4ac9-93fe-86e8c0278d5b.html

 

内存镜像方式:

CreateFileMapping(...),OpenFileMapping(...),MapViewOfFile(..)

http://blog.csdn.net/rzjkl1980/article/details/5519230
 

 

posted @ 2011-12-24 20:39 81 阅读(12) 评论(0) 编辑

原作者:

http://www.cnblogs.com/armstrong-cn/archive/2011/08/24/2151713.html

读取wave文件配置信息

第一部分:

WAV文件结构解析:

WAVE文件由"块"组成。块的基本结构如下:

------------------------------
偏移量  名称    字节数    类型    
------------------------------
00      块标志    4       字符    
04      块长度    4       长整型 
08      块内容             数据   
--------------------------------

WAVE文件一般有四种块,它们依次是:RIFF块、格式块、附加块(可选),数据块

--------------------------------
名称    字节数         说明
--------------------------------
RIFF块   12          RIFF WAVE Chunk 
格式块   24或26      Format Chunk
附加块   12          Fact Chunk 
数据块   不定        Data Chunk
--------------------------------

1.RIFF块的数据结构
---------------------------------------------------
偏移量    名称      字节数   数据类型       内容
---------------------------------------------------
00     标志符      4       字符     “RIFF”的Ascii码

04     文件长度   4       长整形    文件的总字节数

08     WAV标志    4       字符     “WAVE”的Ascii码
---------------------------------------------------

2.格式块的数据结构
----------------------------------------------------------------------------
偏移地址  字节数    数据类型      内容
----------------------------------------------------------------------------
0C         4         字符       波形格式标志“fmt ”
10         4         长整型     格式块长度(一般=16,若=18表示最后有2字节附加信息)
14         2         整型      格式类别(值=1表示编码方式为PCMμ律编码)
16         2         整型       声道数(单声道=1,双声音=2)
18         4         长整型    采样频率(每秒样本数,表示每个通道的播放速度)
1C         4         长整型     数据传送速率(每秒字节=采样频率×每个样本字节数)
20         2         整型       每个样本字节数(又称基准块=每个样本位数×声道数÷8)
22         2        整型      每个样本位数(又称量化位数)
24         2         整型      附加信息(可选,通过块长度来判断有无)
----------------------------------------------------------------------------


3.附加块的数据结构
---------------------------------------------------
偏移地址      字节数   数据类型     内容
---------------------------------------------------
24         4         字符     标志符“fact”
28         4         长整形   块长度(=4)
2C         4 
---------------------------------------------------


4.数据块的数据结构
----------------------------------------
偏移地址 字节数   类型         内容
----------------------------------------
24          4        字符      数据标志符“data” 
28          4        长整型    样本数据长度 
2C       不定           样本数据 
----------------------------------------

第二部分:

参考VC代码:

void CWAVinfoDlg::OnBnClickedLoad() //读取信息,存入Buf中
{
DWORD dwFileLen;
pBuf
= NULL;

CFileDialog fileDlg(TRUE);
fileDlg.m_ofn.lpstrTitle
=_T("打开文件");
fileDlg.m_ofn.lpstrFilter
=_T("Wav音频文件(*.wav)\0*.wav\0");
if(IDOK == fileDlg.DoModal())
{
m_nPath
= fileDlg.GetPathName();
FileName
= fileDlg.GetFileName();
}
CFile file(m_nPath,CFile::modeRead
|CFile::typeBinary|CFile::shareDenyWrite);
dwFileLen
= file.GetLength();
FileSize
= dwFileLen;

//pBuf = new BYTE[dwFileLen + 1];
pBuf = new unsigned char[dwFileLen + 1]; //定义pBuf缓冲区,长度为 存档文件的长度 +1
pBuf[dwFileLen] = 0; //设置pBuf的索引(最后一个元素)为0,表示结束
file.Read(pBuf,dwFileLen); //将长度为dwFileLen的字符串从file中写到pBuf中,也就是全部,//**可以将二进制文件全部读入
file.Close();
UpdateData(FALSE);

analyse();
}

  


void CWAVinfoDlg::analyse()//分析wav文件信息
{
bool riff = false; //首先判断wav文件标志
bool wave = false;
bool fmt = false;

if ((pBuf[0] == 'R') && (pBuf[1] == 'I') && (pBuf[2] == 'F') && (pBuf[3] == 'F'))
{
riff
= true;
}
if ((pBuf[8] == 'W') && (pBuf[9] == 'A') && (pBuf[10] == 'V') && (pBuf[11] == 'E'))
{
wave
= true;
}
if ((pBuf[12] == 'f') && (pBuf[13] == 'm') && (pBuf[14] == 't'))
{
fmt
= true;
}

if (riff && wave && fmt) //wav文件标志正确
{
CString wav_size_str;
CString FileSize_str;
unsigned
double wav_size = 0.0;
int channel_num = 0;
int sample_rate = 0;
int sample_bit = 0;
unsigned
double length = 0.0;
CString length_str;

wav_size
= pBuf[43]*256*256*256 + pBuf[42]*256*256 + pBuf[41]*256 + pBuf[40];
channel_num
= pBuf[23]*256 + pBuf[22];
sample_rate
= pBuf[27]*256*256*256 + pBuf[26]*256*256 + pBuf[25]*256 + pBuf[24];
sample_bit
= pBuf[35]*256 + pBuf[34];

if (wav_size >= (1024*1024)) //通过文件信息得到wav大小
{
wav_size_str.Format(L
"%.2f MB",(wav_size/(1024.0*1024.0)));
}
else if (wav_size >= 1024)
{
wav_size_str.Format(L
"%.2f KB",(wav_size/1024.0));
}
else
{
wav_size_str.Format(L
"%f B",wav_size);
}
//通过wav大小得到持续时间(单位:秒)
length = (wav_size*8.0)/(sample_rate*channel_num*sample_bit*1.0);

if (FileSize >= (1024*1024)) //文件实际大小
{
FileSize_str.Format(L
"%.2f MB",(FileSize/(1024.0*1024.0)));
}
else if (FileSize >= 1024)
{
FileSize_str.Format(L
"%.2f KB",(FileSize/1024.0));
}
else
{
FileSize_str.Format(L
"%f B",FileSize);
}

CTimeSpan ts(length);
//格式化时间显示
length_str = ts.Format(_T("%H:%M:%S"));

MessageBox(L
"wav文件载入成功");
m_nInfo.Format(L
"文件大小: %s\r\nWav大小: %s\r\n通道数目: %d\r\n采样率 : %d HZ\r\n采样位数: %d bits\r\n持续时间: %s\r\n",FileSize_str,wav_size_str,channel_num,sample_rate,sample_bit,length_str);
UpdateData(FALSE);
}
else
{
MessageBox(L
"wav文件验证错误,不是正确的wav文件");
}
}

第三部分:

相关参考资料:

http://www.cnblogs.com/CPFlying/archive/2011/05/13/2045510.html

posted @ 2011-12-18 09:49 81 阅读(11) 评论(0) 编辑
摘要: 比较:public static extern int comp2(byte[] a, byte[] b, int count); [DllImport("msvcrt.dll", CallingConvention = CallingConvention.Cdecl, SetLastError = false)] static extern int memcmp(byte[] b1, byte[] b2, UIntPtr count); [DllImport("msvcrt.dll", CallingConvention = CallingConven阅读全文
posted @ 2011-12-15 16:02 81 阅读(7) 评论(0) 编辑
摘要: 以前一直用[DllImport("xx.dll")]声明,但在.net4中却出现了错误。在网上找到解决方法,在此做个备份:改声明: [DllImport("xx.dll", CallingConvention = CallingConvention.Cdecl)]阅读全文
posted @ 2011-12-15 14:12 81 阅读(12) 评论(0) 编辑
摘要: 原文:http://www.cnblogs.com/seerlin/archive/2009/03/10/1407478.html 第二部分:线程同步基础 同步要领 下面的表格列展了.NET对协调或同步线程动作的可用的工具: 简易阻止方法 构成 目的 Sleep 阻止给定的时间周期 Join...阅读全文
posted @ 2011-12-13 16:47 81 阅读(9) 评论(0) 编辑
摘要: 今天写多线程程序,使用WaitAll时出了这个错误,在网上查找后得出原因是[MTAThread]和[STAThread]的区别,这是个线程模型的问题,大概明白一些,但也不是很透彻,因为是程序比较大,也不愿意随便修改什么。 转念一想,干嘛非要WaitAll啊,直接用:foreach(var v in [。。]) v.WaitOne();不就ok了吗!阅读全文
posted @ 2011-12-12 19:26 81 阅读(8) 评论(0) 编辑
摘要: UDP广播与多播作者:legend使用UDP协议进行信息的传输之前不需要建议连接。换句话说就是客户端向服务器发送信息,客户端只需要给出服务器的ip地址和端口号,然后将信息封装到一个待发送的报文中并且发送出去。至于服务器端是否存在,或者能否收到该报文,客户端根本不用管。通 常我们讨论的udp的程序都是一对一的单播程序。本章将讨论一对多的服务:广播(broadcast)、多播(multicast)。对于广播,网络中的 所有主机都会接收一份数据副本。对于多播,消息只是发送到一个多播地址,网络知识将数据分发给哪些表示想要接收发送到该多播地址的数据的主机。总得来说, 只有UDP套接字允许广播或多播。UD阅读全文
posted @ 2011-12-08 21:15 81 阅读(15) 评论(0) 编辑