日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

代码集锦

發(fā)布時(shí)間:2023/12/20 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 代码集锦 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

原帖地址:http://space.itpub.net/23109131/viewspace-662112 1.創(chuàng)建文件夾
//using System.IO;
Directory.CreateDirectory(%%1); 2.創(chuàng)建文件
//using System.IO;
File.Create(%%1); 3.刪除文件
//using System.IO;
File.Delete(%%1); 4.刪除文件夾
//using System.IO;
Directory.Delete(%%1); 5.刪除一個(gè)目錄下所有的文件夾
//using System.IO;
foreach (string dirStr in Directory.GetDirectories(%%1))
{
?DirectoryInfo dir = new DirectoryInfo(dirStr);
?ArrayList folders=new ArrayList();
?FileSystemInfo[] fileArr = dir.GetFileSystemInfos();
?for (int i = 0; i < folders.Count; i++)
?{
??FileInfo f = folders[i] as FileInfo;
??if (f == null)
??{
???DirectoryInfo d = folders[i] as DirectoryInfo;
???d.Delete();
??}
?}
} 6.清空文件夾
//using System.IO;
Directory.Delete(%%1,true);
Directory.CreateDirectory(%%1); 7.讀取文件
//using System.IO;
StreamReader s = File.OpenText(%%1);
string %%2 = null;
while ((%%2 = s.ReadLine()) != null){
?%%3
}
s.Close(); 8.寫入文件
//using System.IO;
FileInfo f = new FileInfo(%%1);
StreamWriter w = f.CreateText();
w.WriteLine(%%2);
w.Close(); 9.寫入隨機(jī)文件
//using System.IO;
byte[] dataArray = new byte[100000];//new Random().NextBytes(dataArray);
using(FileStream FileStream = new FileStream(%%1, FileMode.Create)){
// Write the?data?to the file, byte by byte.
?for(int i = 0; i < dataArray.Length; i++){
??FileStream.WriteByte(dataArray[i]);
?}
// Set the stream position to the beginning of the file.
?FileStream.Seek(0, SeekOrigin.Begin);
// Read and verify the data.
?for(int i = 0; i < FileStream.Length; i++){
??if(dataArray[i] != FileStream.ReadByte()){
???//寫入數(shù)據(jù)錯(cuò)誤
???return;
??}
?}
//"數(shù)據(jù)流"+FileStream.Name+"已驗(yàn)證"
} 10.讀取文件屬性
//using System.IO;
FileInfo f = new FileInfo(%%1);//f.CreationTime,f.FullName
if((f.Attributes & FileAttributes.ReadOnly) != 0){
?%%2
}
else{
?%%3
} 11.寫入屬性
//using System.IO;
FileInfo f = new FileInfo(%%1);
//設(shè)置只讀
f.Attributes = myFile.Attributes | FileAttributes.ReadOnly;
//設(shè)置可寫
f.Attributes = myFile.Attributes & ~FileAttributes.ReadOnly; 12.枚舉一個(gè)文件夾中的所有文件夾
//using System.IO;
foreach (string %%2 in Directory.GetDirectories(%%1)){
?%%3
}
/*
DirectoryInfo dir = new DirectoryInfo(%%1);
FileInfo[] files = dir.GetFiles("*.*");
foreach(FileInfo %%2 in files){
?%%3
}
*/ 13.復(fù)制文件夾
/*
using System.IO;
using System.Collections;
*/
string path = (%%2.LastIndexOf("//") == %%2.Length - 1) ? %%2 : %%2+"//";
string parent = Path.GetDirectoryName(%%1);
Directory.CreateDirectory(path + Path.GetFileName(%%1));
DirectoryInfo dir = new DirectoryInfo((%%1.LastIndexOf("//") == %%1.Length - 1) ? %%1 : %%1 + "//");
FileSystemInfo[] fileArr = dir.GetFileSystemInfos();
Queue<FileSystemInfo> Folders = new Queue<FileSystemInfo>(dir.GetFileSystemInfos());
while (Folders.Count>0)
{
??????????????????? FileSystemInfo tmp = Folders.Dequeue();
??????????????????? FileInfo f = tmp as FileInfo;
??????????????????? if (f == null)
??????????????????? {
??????????????????????? DirectoryInfo d = tmp as DirectoryInfo;
??????????????????????? Directory.CreateDirectory(d.FullName.Replace((parent.LastIndexOf("//") == parent.Length - 1) ? parent : parent + "//", path));
??????????????????????? foreach (FileSystemInfo fi in d.GetFileSystemInfos())
??????????????????????? {
??????????????????????????? Folders.Enqueue(fi);
??????????????????????? }
??????????????????? }
??????????????????? else
??????????????????? {
??????????????????????? f.CopyTo(f.FullName.Replace(parent, path));
??????????????????? }
} 14.復(fù)制目錄下所有的文件夾到另一個(gè)文件夾下
/*
using System.IO;
using System.Collections;
*/
DirectoryInfo d = new DirectoryInfo(%%1);
foreach (DirectoryInfo dirs in d.GetDirectories())
{
??? Queue<FileSystemInfo> al = new Queue<FileSystemInfo>(dirs.GetFileSystemInfos());
??? while (al.Count > 0)
??? {
??????? FileSystemInfo temp = al.Dequeue();
??????? FileInfo file = temp as FileInfo;
??????? if (file == null)
??????? {
??????????? DirectoryInfo directory = temp as DirectoryInfo;
??????????? Directory.CreateDirectory(path + directory.Name);
??????????? foreach (FileSystemInfo fsi in directory.GetFileSystemInfos())
??????????????? al.Enqueue(fsi);
??????? }
??????? else
??????????? File.Copy(file.FullName, path + file.Name);
??? }
} 15.移動(dòng)文件夾
/*
using System.IO;
using System.Collections;
*/
??????????????? string filename = Path.GetFileName(%%1);
??????????????? string path=(%%2.LastIndexOf("//") == %%2.Length - 1) ? %%2 : %%2 + "//";
??????????????? if (Path.GetPathRoot(%%1) == Path.GetPathRoot(%%2))
??????????????????? Directory.Move(%%1, path + filename);
??????????????? else
??????????????? {
??????????????????? string parent = Path.GetDirectoryName(%%1);
??????????????????? Directory.CreateDirectory(path + Path.GetFileName(%%1));
??????????????????? DirectoryInfo dir = new DirectoryInfo((%%1.LastIndexOf("//") == %%1.Length - 1) ? %%1 : %%1 + "//");
??????????????????? FileSystemInfo[] fileArr = dir.GetFileSystemInfos();
??????????????????? Queue<FileSystemInfo> Folders = new Queue<FileSystemInfo>(dir.GetFileSystemInfos());
??????????????????? while (Folders.Count > 0)
??????????????????? {
??????????????????????? FileSystemInfo tmp = Folders.Dequeue();
??????????????????????? FileInfo f = tmp as FileInfo;
??????????????????????? if (f == null)
??????????????????????? {
??????????????????????????? DirectoryInfo d = tmp as DirectoryInfo;
??????????????????????????? DirectoryInfo dpath = new DirectoryInfo(d.FullName.Replace((parent.LastIndexOf("//") == parent.Length - 1) ? parent : parent + "//", path));
??????????????????????????? dpath.Create();
??????????????????????????? foreach (FileSystemInfo fi in d.GetFileSystemInfos())
??????????????????????????? {
??????????????????????????????? Folders.Enqueue(fi);
??????????????????????????? }
??????????????????????? }
??????????????????????? else
??????????????????????? {
??????????????????????????? f.MoveTo(f.FullName.Replace(parent, path));
??????????????????????? }
??????????????????? }
??????????????????? Directory.Delete(%%1, true);
??????????????? } 16.移動(dòng)目錄下所有的文件夾到另一個(gè)目錄下
/*
using System.IO;
using System.Collections;
*/
string filename = Path.GetFileName(%%1);
??????????????? if (Path.GetPathRoot(%%1) == Path.GetPathRoot(%%2))
??????????????????? foreach (string dir in Directory.GetDirectories(%%1))
??????????????????????? Directory.Move(dir, Path.Combine(%%2,filename));
??????????????? else
??????????????? {
??????????????????? foreach (string dir2 in Directory.GetDirectories(%%1))
??????????????????? {
??????????????????????? string parent = Path.GetDirectoryName(dir2);
??????????????????????? Directory.CreateDirectory(Path.Combine(%%2, Path.GetFileName(dir2)));
??????????????????????? string dir = (dir2.LastIndexOf("//") == dir2.Length - 1) ? dir2 : dir2 + "//";
??????????????????????? DirectoryInfo dirdir = new DirectoryInfo(dir);
??????????????????????? FileSystemInfo[] fileArr = dirdir.GetFileSystemInfos();
??????????????????????? Queue<FileSystemInfo> Folders = new Queue<FileSystemInfo>(dirdir.GetFileSystemInfos());
??????????????????????? while (Folders.Count > 0)
??????????????????????? {
??????????????????????????? FileSystemInfo tmp = Folders.Dequeue();
??????????????????????????? FileInfo f = tmp as FileInfo;
??????????????????????????? if (f == null)
??????????????????????????? {
??????????????????????????????? DirectoryInfo d = tmp as DirectoryInfo;
??????????????????????????????? DirectoryInfo dpath = new DirectoryInfo(d.FullName.Replace((parent.LastIndexOf("//") == parent.Length - 1) ? parent : parent + "//", %%2));
??????????????????????????????? dpath.Create();
??????????????????????????????? foreach (FileSystemInfo fi in d.GetFileSystemInfos())
??????????????????????????????? {
??????????????????????????????????? Folders.Enqueue(fi);
??????????????????????????????? }
??????????????????????????? }
??????????????????????????? else
??????????????????????????? {
??????????????????????????????? f.MoveTo(f.FullName.Replace(parent, %%2));
??????????????????????????? }
??????????????????????? }
??????????????????????? dirdir.Delete(true);
??????????????????? }
??????????????? } 17.以一個(gè)文件夾的框架在另一個(gè)目錄創(chuàng)建文件夾和空文件
/*
using System.IO;
using System.Collections;
*/
bool b=false;
string path = (%%2.LastIndexOf("//") == %%2.Length - 1) ? %%2 : %%2 + "//";
string parent = Path.GetDirectoryName(%%1);
Directory.CreateDirectory(path + Path.GetFileName(%%1));
DirectoryInfo dir = new DirectoryInfo((%%1.LastIndexOf("//") == %%1.Length - 1) ? %%1 : %%1 + "//");
FileSystemInfo[] fileArr = dir.GetFileSystemInfos();
Queue<FileSystemInfo> Folders = new Queue<FileSystemInfo>(dir.GetFileSystemInfos());
while (Folders.Count > 0)
{
??? FileSystemInfo tmp = Folders.Dequeue();
??? FileInfo f = tmp as FileInfo;
??? if (f == null)
??? {
??????? DirectoryInfo d = tmp as DirectoryInfo;
??????? Directory.CreateDirectory(d.FullName.Replace((parent.LastIndexOf("//") == parent.Length - 1) ? parent : parent + "//", path));
??????? foreach (FileSystemInfo fi in d.GetFileSystemInfos())
??????? {
??????????? Folders.Enqueue(fi);
??????? }
??? }
??? else
??? {
??????? if(b) File.Create(f.FullName.Replace(parent, path));
??? }
} 18.復(fù)制文件
//using System.IO;
File.Copy(%%1,%%2); 19.復(fù)制一個(gè)文件夾下所有的文件到另一個(gè)目錄
//using System.IO;
foreach (string fileStr in Directory.GetFiles(%%1))
?File.Copy((%%1.LastIndexOf("//") == %%1.Length - 1) ? %%1 +Path.GetFileName(fileStr): %%1 + "//"+Path.GetFileName(fileStr),(%%2.LastIndexOf("//") == %%2.Length - 1) ? %%2 +Path.GetFileName(fileStr): %%2 + "//"+Path.GetFileName(fileStr)); 20.提取擴(kuò)展名
//using System.IO;
string %%2=Path.GetExtension(%%1); 21.提取文件名
//using System.IO;
string %%2=Path.GetFileName(%%1); 22.提取文件路徑
//using System.IO;
string %%2=Path.GetDirectoryName(%%1); 23.替換擴(kuò)展名
//using System.IO;
File.ChangeExtension(%%1,%%2); 24.追加路徑
//using System.IO;
string %%3=Path.Combine(%%1,%%2); 25.移動(dòng)文件
//using System.IO;
File.Move(%%1,%%2+"//"+file.getname(%%1)); 26.移動(dòng)一個(gè)文件夾下所有文件到另一個(gè)目錄
foreach (string fileStr in Directory.GetFiles(%%1))
?File.Move((%%1.LastIndexOf("//") == %%1.Length - 1) ? %%1 +Path.GetFileName(fileStr): %%1 + "//"+Path.GetFileName(fileStr),(%%2.LastIndexOf("//") == %%2.Length - 1) ? %%2 +Path.GetFileName(fileStr): %%2 + "//"+Path.GetFileName(fileStr)); 27.指定目錄下搜索文件
/*
using System.Text;
using System.IO;
*/
string fileName=%%1;
string dirName=%%2;
?DirectoryInfo?? dirc=new?? DirectoryInfo(dirName);
?foreach(FileInfo?? file?? in?? dirc.GetFiles()) {
??if(file.Name.IndexOf(fileName)>-1)
???return file.FullName;
??}
??foreach(DirectoryInfo?? dir?? in?? dirc.GetDirectories())?? {??
???return?? GetFile(fileName,dir.FullName);??
??}
??return?? "找不到指定的文件";??
?} 28.打開對(duì)話框
OpenFileDialog penFileDialog=new OpenFileDialog();
openFileDialog.InitialDirectory=/"c:/";//注意這里寫路徑時(shí)要用c:而不是c://
openFileDialog.Filter=/"文本文件|*.*|C#文件|*.cs|所有文件|*.*/";
openFileDialog.RestoreDirectory=true;
openFileDialog.FilterIndex=1;
if (openFileDialog.ShowDialog()==DialogResult.OK) {
?fName=openFileDialog.FileName;
?File fileOpen=new File(fName);
?isFileHaveName=true;
?%%1=fileOpen.ReadFile();
?%%1.AppendText(/"/");
} 29.文件分割
//using System.IO;
FileStream fsr = new FileStream(%%1, FileMode.Open, FileAccess.Read);
byte[] btArr = new byte[fsr.Length];
fsr.Read(btArr, 0, btArr.Length);
fsr.Close();
string strFileName=%%1.Substring(%%1.LastIndexOf("//")+1);
FileStream fsw = new FileStream(%%2 + strFileName + "1", FileMode.Create, FileAccess.Write);
fsw.Write(btArr, 0, btArr.Length/2);
fsw.Close();
fsw = new FileStream(%%2 + strFileName + "2", FileMode.Create, FileAccess.Write);
fsw.Write(btArr, btArr.Length/2, btArr.Length-btArr.Length/2);
fsw.Close(); 30.文件合并
//using System.IO;
string strFileName = %%1.Substring(%%1.LastIndexOf("//") + 1);
FileStream fsr1 = new FileStream(%%2 + strFileName + "1", FileMode.Open, FileAccess.Read);
FileStream fsr2 = new FileStream(%%2 + strFileName + "2", FileMode.Open, FileAccess.Read);
byte[] btArr = new byte[fsr1.Length+fsr2.Length];
fsr1.Read(btArr, 0, Convert.ToInt32(fsr1.Length));
fsr2.Read(btArr, Convert.ToInt32(fsr1.Length), Convert.ToInt32(fsr2.Length));
fsr1.Close();fsr2.Close();
FileStream fsw = new FileStream(%%2 + strFileName, FileMode.Create, FileAccess.Write);
fsw.Write(btArr, 0, btArr.Length);
fsw.Close(); 31.文件簡(jiǎn)單加密
//using System.IO;
//讀文件
FileStream fsr = new FileStream(%%1, FileMode.Open, FileAccess.Read);
byte[] btArr = new byte[fsr.Length];
fsr.Read(btArr, 0, btArr.Length);
fsr.Close();
for (int i = 0; i < btArr.Length; i++){ //加密
?int ibt = btArr[i];
?ibt += 100;
?ibt %= 256;
?btArr[i] = Convert.ToByte(ibt);
}
//寫文件
string strFileName = Path.GetExtension(%%1);
FileStream fsw = new FileStream(%%2+"/" + "enc_" + strFileName, FileMode.Create, FileAccess.Write);
?fsw.Write(btArr, 0, btArr.Length);
?fsw.Close(); 32.文件簡(jiǎn)單解密
//using System.IO;
FileStream fsr = new FileStream(%%1, FileMode.Open, FileAccess.Read);
byte[] btArr = new byte[fsr.Length];
fsr.Read(btArr, 0, btArr.Length);
fsr.Close();
for (int i = 0; i < btArr.Length; i++){ //解密
?int ibt = btArr[i];
?ibt -= 100;
?ibt += 256;
?ibt %= 256;
?btArr[i] = Convert.ToByte(ibt);
}
//寫文件
string strFileName = Path.GetExtension(%%1);
FileStream fsw = new FileStream(%%2 +"/" + strFileName, FileMode.Create, FileAccess.Write);
fsw.Write(btArr, 0, btArr.Length);
fsw.Close(); 33.讀取ini文件屬性
//using System.Runtime.InteropServices;
//[DllImport("kernel32")]//返回取得字符串緩沖區(qū)的長(zhǎng)度
//private static extern long GetPrivateProfileString(string section,string key, string def,StringBuilder retVal,int size,string filePath);
string Section=%%1;
string Key=%%2;
string NoText=%%3;
string iniFilePath="Setup.ini";
string %%4=String.Empty;
?if(File.Exists(iniFilePath)){
??StringBuilder temp = new StringBuilder(1024);
??GetPrivateProfileString(Section,Key,NoText,temp,1024,iniFilePath);
??%%4=temp.ToString();
?} 34.合并一個(gè)目錄下所有的文件
//using System.IO;
FileStream fsw = new FileStream(%%2, FileMode.Create, FileAccess.Write);
foreach (string fileStr in Directory.GetFiles(%%1))
{
FileStream fsr1 = new FileStream(fileStr, FileMode.Open, FileAccess.Read);
byte[] btArr = new byte[fsr1.Length];
fsr1.Read(btArr, 0, Convert.ToInt32(fsr1.Length));
fsr1.Close();
fsw.Write(btArr, 0, btArr.Length);
}
fsw.Close(); 35.寫入ini文件屬性
//using System.Runtime.InteropServices;
//[DllImport("kernel32")]//返回0表示失敗,非0為成功
//private static extern long WritePrivateProfileString(string section,string key, string val,string filePath);
string Section=%%1;
string Key=%%2;
string Value=%%3;
string iniFilePath="Setup.ini";
bool %%4=false;
??? if(File.Exists(iniFilePath))
??? {
long pStation = WritePrivateProfileString(Section,Key,Value,iniFilePath);???
if(OpStation == 0)
{
??? %%4=false;
}
else
{
??? %%4=true;
}
??? } 36.獲得當(dāng)前路徑
string %%1=Environment.CurrentDirectory; 37.讀取XML數(shù)據(jù)庫(kù)
//using System.Xml;
XmlDocument doc=new XmlDocument();
doc.Load(%%1);
string %%9;
XmlElement xe=doc.GetElementById(%%7);
XmlNodeList elemList=xe.ChildNodes;
foreach(XmlNode elem in elemList)
{
if(elem.NodeType==%%8)
{
%%9=elem.Value;
break;
}
} 38.寫入XML數(shù)據(jù)庫(kù)
//using System.Xml;
XmlDocument doc=new XmlDocument();
doc.Load(%%1);
XmlNode root=doc.DocumentElement;
XmlElement book=doc.CreateElement(%%3);
XmlElement book=doc.CreateElement(%%5);
XmlElement port=doc.CreateElement(%%6);
book.SetAttribute(%%4,root.ChildNodes.Count.ToString());
author.InnerText=%%8;
book.appendChild(author);
book.appendChild(port);
root.appendChild(book);
doc.Save(%%1); 39.ZIP壓縮文件
/*
using System.IO;
using System.IO.Compression;
*/
FileStream infile;
try
{
?// Open the file as a FileStream object.
?infile = new FileStream(%%1, FileMode.Open, FileAccess.Read, FileShare.Read);
?byte[] buffer = new byte[infile.Length];
?// Read the file to ensure it is readable.
?int count = infile.Read(buffer, 0, buffer.Length);
?if (count != buffer.Length)
?{
??infile.Close();
//Test Failed: Unable to read data from file
??return;
?}
?infile.Close();
?MemoryStream ms = new MemoryStream();
?// Use the newly created memory stream for the compressed data.
?DeflateStream compressedzipStream = new DeflateStream(ms, CompressionMode.Compress, true);
?//Compression
?compressedzipStream.Write(buffer, 0, buffer.Length);
?// Close the stream.
?compressedzipStream.Close();
?//Original size: {0}, Compressed size: {1}", buffer.Length, ms.Length);
?FileInfo f = new FileInfo(%%2);
?StreamWriter w = f.CreateText();
?w.Write(buffer,0,ms.Length);
?w.Close();
} // end try
catch (InvalidDataException)
{
?//Error: The file being read contains invalid data.
} catch (FileNotFoundException)
{
?//Error:The file specified was not found.
} catch (ArgumentException)
{
?//Error: path is a zero-length string, contains only white space, or contains one or more invalid characters
} catch (PathTooLongException)
{
?//Error: The specified path, file name, or both exceed the system-defined maximum length. For example, on Windows-based platforms, paths must be less than 248 characters, and file names must be less than 260 characters.
} catch (DirectoryNotFoundException)
{
?//Error: The specified path is invalid, such as being on an unmapped drive.
} catch (IOException)
{
?//Error: An I/O error occurred while opening the file.
} catch (UnauthorizedAccessException)
{
?//Error: path specified a file that is read-only, the path is a directory, or caller does not have the required permissions.
} catch (IndexOutOfRangeException)
{
?//Error: You must provide parameters for MyGZIP.
} 40.ZIP解壓縮
/*
using System.IO;
using System.IO.Compression;
*/
FileStream infile;
try
{
??? // Open the file as a FileStream object.
??? infile = new FileStream(%%1, FileMode.Open, FileAccess.Read, FileShare.Read);
??? byte[] buffer = new byte[infile.Length];
??? // Read the file to ensure it is readable.
??? int count = infile.Read(buffer, 0, buffer.Length);
??? if (count != buffer.Length)
??? {
infile.Close();
//Test Failed: Unable to read data from file
return;
??? }
??? infile.Close();
??? MemoryStream ms = new MemoryStream();
??? // ms.Position = 0;
??? DeflateStream zipStream = new DeflateStream(ms, CompressionMode.Decompress);
??? //Decompression
??? byte[] decompressedBuffer = new byte[buffer.Length *2];
??? zipStream.Close();
FileInfo f = new FileInfo(%%2);
StreamWriter w = f.CreateText();
w.Write(decompressedBuffer);
w.Close();
} // end try
catch (InvalidDataException)
{
??? //Error: The file being read contains invalid data.
}
catch (FileNotFoundException)
{
??? //Error:The file specified was not found.
}
catch (ArgumentException)
{
??? //Error: path is a zero-length string, contains only white space, or contains one or more invalid characters
}
catch (PathTooLongException)
{
??? //Error: The specified path, file name, or both exceed the system-defined maximum length. For example, on Windows-based platforms, paths must be less than 248 characters, and file names must be less than 260 characters.
}
catch (DirectoryNotFoundException)
{
??? //Error: The specified path is invalid, such as being on an unmapped drive.
}
catch (IOException)
{
??? //Error: An I/O error occurred while opening the file.
}
catch (UnauthorizedAccessException)
{
??? //Error: path specified a file that is read-only, the path is a directory, or caller does not have the required permissions.
}
catch (IndexOutOfRangeException)
{
??? //Error: You must provide parameters for MyGZIP.
} 41.獲得應(yīng)用程序完整路徑
string %%1=Application.ExecutablePath; 42.ZIP壓縮文件夾
/*
using System.IO;
using System.IO.Compression;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
*/
??????? private void CreateCompressFile(Stream source, string destinationName)
??????? {
??????????? using (Stream destination = new FileStream(destinationName, FileMode.Create, FileAccess.Write))
??????????? {
??????????????? using (GZipStream utput = new GZipStream(destination, CompressionMode.Compress))
??????????????? {
??????????????????? byte[] bytes = new byte[4096];
??????????????????? int n;
??????????????????? while ((n = source.Read(bytes, 0, bytes.Length)) != 0)
??????????????????? {
??????????????????????? output.Write(bytes, 0, n);
??????????????????? }
??????????????? }
??????????? }
??????? }
ArrayList list = new ArrayList();
foreach (string f in Directory.GetFiles(%%1))
{
??? byte[] destBuffer = File.ReadAllBytes(f);
??? SerializeFileInfo sfi = new SerializeFileInfo(f, destBuffer);
??? list.Add(sfi);
}
IFormatter formatter = new BinaryFormatter();
using (Stream s = new MemoryStream())
{
??? formatter.Serialize(s, list);
??? s.Position = 0;
??? CreateCompressFile(s, %%2);
}
??????? [Serializable]
??????? class SerializeFileInfo
??????? {
??????????? public SerializeFileInfo(string name, byte[] buffer)
??????????? {
??????????????? fileName = name;
??????????????? fileBuffer = buffer;
??????????? }
??????????? string fileName;
??????????? public string FileName
??????????? {
??????????????? get
??????????????? {
??????????????????? return fileName;
??????????????? }
??????????? }
??????????? byte[] fileBuffer;
??????????? public byte[] FileBuffer
??????????? {
??????????????? get
??????????????? {
??????????????????? return fileBuffer;
??????????????? }
??????????? }
??????? } 43.遞歸刪除目錄下的文件
//using System.IO;
DirectoryInfo DInfo=new DirectoryInfo(%%1);
FileSystemInfo[] FSInfo=DInfo.GetFileSystemInfos();
for(int i=0;i<FSInfo.Length;i++)
{
FileInfo FInfo=new FileInfo(%%1+FSInfo[i].ToString());
FInfo.Delete();
} 44.驗(yàn)證DTD
/*
using System.Xml;
using System.Xml.Schema;
*/
XmlReaderSettings settings = new XmlReaderSettings();
settings.ProhibitDtd = false;
settings.ValidationType = ValidationType.DTD;
settings.ValidationEventHandler += new ValidationEventHandler(ValidationCallBack);
// Create the XmlReader object.
XmlReader reader = XmlReader.Create("my book.xml", settings);
// Parse the file.
while (reader.Read());
// Display any validation errors.
private static void ValidationCallBack(object sender, ValidationEventArgs e)
{
Console.WriteLine("Validation Error: {0}", e.Message);
} 45.Schema 驗(yàn)證
/*
using System.Xml;
using System.Xml.Schema;
*/
Boolean m_success;
XmlValidatingReader reader = null;
?? XmlSchemaCollection myschema = new XmlSchemaCollection();
ValidationEventHandler eventHandler = new ValidationEventHandler(ShowCompileErrors);
try
{
//Create the XML fragment to be parsed.
String xmlFrag = "<author xmlns='urn:bookstore- schema'xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>" +
"<first-name>Herman</first-name>" +
"<last-name>Melville</last-name>" +
"</author>";
//Create the XmlParserContext.
XmlParserContext context = new XmlParserContext(null, null, "", XmlSpace.None);
//Implement the reader.
reader = new XmlValidatingReader(xmlFrag, XmlNodeType.Element, context);
//Add the schema.
myschema.Add("urn:bookstore-schema", "c://Books.xsd");
//Set the schema type and add the schema to the reader.
reader.ValidationType = ValidationType.Schema;
reader.Schemas.Add(myschema);
while (reader.Read())
{
}
Console.WriteLine("Completed validating xmlfragment");
}
catch (XmlException XmlExp)
{
Console.WriteLine(XmlExp.Message);
}
catch(XmlSchemaException XmlSchExp)
{
Console.WriteLine(XmlSchExp.Message);
}
catch(Exception GenExp)
{
Console.WriteLine(GenExp.Message);
}
finally
{
Console.Read();
}
public static void ShowCompileErrors(object sender, ValidationEventArgs args)
{
Console.WriteLine("Validation Error: {0}", args.Message);
} 46.Grep
/*
using System.Collections;
using System.Text.RegularExpressions;
using System.IO;
using System.Security;
using CommandLine.Utility;
*/
//Traditionally grep stands for "Global Regular Expression Print".
//Global means that an entire file is searched.
//Regular Expression means that a regular expression string is used to establish a search pattern.
//Print means that the command will display its findings.
//Simply put, grep searches an entire file for the pattern you want and displays its findings.
//
//The use syntax is different from the traditional Unix syntax, I prefer a syntax similar to
//csc, the C# compiler.
//
// grep [/h|/H] - Usage Help
//
// grep [/c] [/i] [/l] [/n] [/r] /E:reg_exp /F:files
//
// /c - print a count of matching lines for each input file;
// /i - ignore case in pattern;
// /l - print just files (scanning will stop on first match);
// /n - prefix each line of output with line number;
// /r - recursive search in subdirectories;
//
// /E:reg_exp - the Regular Expression used as search pattern. The Regular Expression can be delimited by
// quotes like "..." and '...' if you want to include in it leading or trailing blanks;
//
// /F:files - the list of input files. The files can be separated by commas as in /F:file1,file2,file3
//and wildcards can be used for their specification as in /F:*file?.txt;
//
//Example:
//
// grep /c /n /r /E:" C Sharp " /F:*.cs
//Option Flags
private bool m_bRecursive;
private bool m_bIgnoreCase;
private bool m_bJustFiles;
private bool m_bLineNumbers;
private bool m_bCountLines;
private string m_strRegEx;
private string m_strFiles;
//ArrayList keeping the Files
private ArrayList m_arrFiles = new ArrayList();
//Properties
public bool Recursive
{
get { return m_bRecursive; }
set { m_bRecursive = value; }
} public bool IgnoreCase
{
get { return m_bIgnoreCase; }
set { m_bIgnoreCase = value; }
} public bool JustFiles
{
get { return m_bJustFiles; }
set { m_bJustFiles = value; }
} public bool LineNumbers
{
get { return m_bLineNumbers; }
set { m_bLineNumbers = value; }
} public bool CountLines
{
get { return m_bCountLines; }
set { m_bCountLines = value; }
} public string RegEx
{
get { return m_strRegEx; }
set { m_strRegEx = value; }
} public string Files
{
get { return m_strFiles; }
set { m_strFiles = value; }
} //Build the list of Files
private void GetFiles(String strDir, String strExt, bool bRecursive)
{
//search pattern can include the wild characters '*' and '?'
string[] fileList = Directory.GetFiles(strDir, strExt);
for(int i=0; i<fileList.Length; i++)
{
if(File.Exists(fileList[i]))
m_arrFiles.Add(fileList[i]);
}
if(bRecursive==true)
{
//Get recursively from subdirectories
string[] dirList = Directory.GetDirectories(strDir);
for(int i=0; i<dirList.Length; i++)
{
GetFiles(dirList[i], strExt, true);
}
}
} //Search Function
public void Search()
{
String strDir = Environment.CurrentDirectory;
//First empty the list
m_arrFiles.Clear();
//Create recursively a list with all the files complying with the criteria
String[] astrFiles = m_strFiles.Split(new Char[] {','});
for(int i=0; i<astrFiles.Length; i++)
{
//Eliminate white spaces
astrFiles[i] = astrFiles[i].Trim();
GetFiles(strDir, astrFiles[i], m_bRecursive);
}
//Now all the Files are in the ArrayList, open each one
//iteratively and look for the search string
String strResults = "Grep Results:/r/n/r/n";
String strLine;
int iLine, iCount;
bool bEmpty = true;
IEnumerator enm = m_arrFiles.GetEnumerator();
while(enm.MoveNext())
{
try
{
StreamReader sr = File.OpenText((string)enm.Current);
iLine = 0;
iCount = 0;
bool bFirst = true;
while((strLine = sr.ReadLine()) != null)
{
iLine++;
//Using Regular Expressions as a real Grep
Match mtch;
if(m_bIgnoreCase == true)
mtch = Regex.Match(strLine, m_strRegEx, RegexOptions.IgnoreCase);
else
mtch = Regex.Match(strLine, m_strRegEx);
if(mtch.Success == true)
{
bEmpty = false;
iCount++;
if(bFirst == true)
{
if(m_bJustFiles == true)
{
strResults += (string)enm.Current + "/r/n";
break;
}
else
strResults += (string)enm.Current + ":/r/n";
bFirst = false;
}
//Add the Line to Results string
if(m_bLineNumbers == true)
strResults += " " + iLine + ": " + strLine + "/r/n";
else
strResults += " " + strLine + "/r/n";
}
}
sr.Close();
if(bFirst == false)
{
if(m_bCountLines == true)
strResults += " " + iCount + " Lines Matched/r/n";
strResults += "/r/n";
}
}
catch(SecurityException)
{
strResults += "/r/n" + (string)enm.Current + ": Security Exception/r/n/r/n";
}
catch(FileNotFoundException)
{
strResults += "/r/n" + (string)enm.Current + ": File Not Found Exception/r/n";
}
}
if(bEmpty == true)
Console.WriteLine("No matches found!");
else
Console.WriteLine(strResults);
} //Print Help
private static void PrintHelp()
{
Console.WriteLine("Usage: grep [/h|/H]");
Console.WriteLine("?????? grep [/c] [/i] [/l] [/n] [/r] /E:reg_exp /F:files");
} Arguments CommandLine = new Arguments(args);
if(CommandLine["h"] != null || CommandLine["H"] != null)
{
PrintHelp();
return;
}
// The working object
ConsoleGrep grep = new ConsoleGrep();
// The arguments /e and /f are mandatory
if(CommandLine["E"] != null)
grep.RegEx = (string)CommandLine["E"];
else
{
Console.WriteLine("Error: No Regular Expression specified!");
Console.WriteLine();
PrintHelp();
return;
}
if(CommandLine["F"] != null)
grep.Files = (string)CommandLine["F"];
else
{
Console.WriteLine("Error: No Search Files specified!");
Console.WriteLine();
PrintHelp();
return;
}
grep.Recursive = (CommandLine["r"] != null);
grep.IgnoreCase = (CommandLine["i"] != null);
grep.JustFiles = (CommandLine["l"] != null);
if(grep.JustFiles == true)
grep.LineNumbers = false;
else
grep.LineNumbers = (CommandLine["n"] != null);
if(grep.JustFiles == true)
grep.CountLines = false;
else
grep.CountLines = (CommandLine["c"] != null);
// Do the search
grep.Search(); 47.直接創(chuàng)建多級(jí)目錄
//using System.IO;
DirectoryInfo di=new DirectoryInfo(%%1);
di.CreateSubdirectory(%%2); 48.批量重命名
//using System.IO;
string strOldFileName; string strNewFileName; string strOldPart =this.textBox1.Text.Trim();//重命名文件前的文件名等待替換字符串
string strNewPart = this.textBox2.Text.Trim();//重命名文件后的文件名替換字符串
string strNewFilePath;
string strFileFolder;??? //原始圖片目錄
int TotalFiles = 0; DateTime StartTime = DateTime.Now; //獲取開始時(shí)間??
FolderBrowserDialog f1 = new FolderBrowserDialog(); //打開選擇目錄對(duì)話框
if (f1.ShowDialog() == DialogResult.OK) {
?strFileFolder = f1.SelectedPath;
?DirectoryInfo di = new DirectoryInfo(strFileFolder);
?FileInfo[] filelist = di.GetFiles("*.*");
?int i = 0;
?foreach (FileInfo fi in filelist) {
??strOldFileName = fi.Name;
??strNewFileName = fi.Name.Replace(strOldPart, strNewPart);
??strNewFilePath = @strFileFolder + "//" + strNewFileName;
??filelist[i].MoveTo(@strNewFilePath); TotalFiles += 1;
??this.listBox1.Items.Add("文件名:" + strOldFileName + "已重命名為" + strNewFileName);
??i += 1;
?}
}
DateTime EndTime = DateTime.Now;//獲取結(jié)束時(shí)間
TimeSpan ts = EndTime - StartTime; this.listBox1.Items.Add("總耗時(shí):" + ts.Hours.ToString() + "時(shí)" +ts.Minutes.ToString() + "分" + ts.Seconds.ToString() + "秒"); 49.文本查找替換
/*
using System.Text;
using System.Text.RegularExpressions;
using System.IO;
*/
??????????? if (args.Length == 3)
??????????? {
ReplaceFiles(args[0],args[1],args[2],null);
??????????? } if (args.Length == 4)
??????????? {
if (args[3].Contains("v"))
{
??? ReplaceVariable(args[0], args[1], args[2], args[3]);
}
else
{
??? ReplaceFiles(args[0], args[1], args[2], args[3]);
}
??????????? } /** <summary>
??????? /// 替換環(huán)境變量中某個(gè)變量的文本值。可以是系統(tǒng)變量,用戶變量,臨時(shí)變量。替換時(shí)會(huì)覆蓋原始值。小心使用
??????? /// </summary>
??????? /// <param name="variable"></param>
??????? /// <param name="search"></param>
??????? /// <param name="replace"></param>
??????? /// <param name="options"></param>
??????? public static void ReplaceVariable(string variable, string search, string replace, string options)
??????? {
string variable=%%1;
?string search=%%2;
?string replace=%%3;
??????????? string text=Environment.GetEnvironmentVariable(variable);
??????????? System.Windows.Forms.MessageBox.Show(text);
??????????? text=ReplaceText(text, search, replace, options);
??????????? Environment.SetEnvironmentVariable(variable, text);
??????????? text = Environment.GetEnvironmentVariable(variable);
??????????? System.Windows.Forms.MessageBox.Show(text);
??????? } /** <summary>
??????? /// 批量替換文件文本
??????? /// </summary>
??????? /// <param name="args"></param>
??????? public static void ReplaceFiles(string path,string search, string replace, string options)
??????? {
string path=%%1;
string search=%%2;
string replace=%%3;
??????????? string[] fs;
??????????? if(File.Exists(path)){
ReplaceFile(path, search, replace, options);
return;
??????????? }
??????????? if (Directory.Exists(path))
??????????? {
fs = Directory.GetFiles(path);
foreach (string f in fs)
{ ReplaceFile(f, search, replace, options);
}
return;
??????????? }
??????????? int i=path.LastIndexOf("/");
??????????? if(i<0)i=path.LastIndexOf("/");
??????????? string d, searchfile;
??????????? if (i > -1)
??????????? {
d = path.Substring(0, i + 1);
searchfile = path.Substring(d.Length);
??????????? }
??????????? else
??????????? {
d = System.Environment.CurrentDirectory;
searchfile = path;
??????????? } searchfile = searchfile.Replace(".", @".");
??????????? searchfile = searchfile.Replace("?", @"[^.]?");
??????????? searchfile = searchfile.Replace("*", @"[^.]*");
??????????? //System.Windows.Forms.MessageBox.Show(d);? System.Windows.Forms.MessageBox.Show(searchfile);
??????????? if (!Directory.Exists(d)) return;
??????????? fs = Directory.GetFiles(d);
??????????? foreach (string f in fs)
??????????? {
if(System.Text.RegularExpressions.Regex.IsMatch(f,searchfile))
??? ReplaceFile(f, search, replace, options);
??????????? }
??????? }
???????
??????? /** <summary>
??????? /// 替換單個(gè)文本文件中的文本
??????? /// </summary>
??????? /// <param name="filename"></param>
??????? /// <param name="search"></param>
??????? /// <param name="replace"></param>
??????? /// <param name="options"></param>
??????? /// <returns></returns>
??????? public static bool ReplaceFile(string filename, string search, string replace,string options)
??????? {
string path=%%1;
string search=%%2;
string replace=%%3;
??????????? FileStream fs = File.OpenRead(filename);
??????????? //判斷文件是文本文件還二進(jìn)制文件。該方法似乎不科學(xué)
??????????? byte b;
??????????? for (long i = 0; i < fs.Length; i++)
??????????? {
b = (byte)fs.ReadByte();
if (b == 0)
{
??? System.Windows.Forms.MessageBox.Show("非文本文件");
??? return false;//有此字節(jié)則表示改文件不是文本文件。就不用替換了
}
??????????? }
??????????? //判斷文本文件編碼規(guī)則。
??????????? byte[] bytes = new byte[2];
??????????? Encoding coding=Encoding.Default;
??????????? if (fs.Read(bytes, 0, 2) > 2)
??????????? {
if (bytes == new byte[2] { 0xFF, 0xFE }) coding = Encoding.Unicode;
if (bytes == new byte[2] { 0xFE, 0xFF }) coding = Encoding.BigEndianUnicode;
if (bytes == new byte[2] { 0xEF, 0xBB }) coding = Encoding.UTF8;
??????????? }
??????????? fs.Close();
??????????? //替換數(shù)據(jù)
??????????? string text=File.ReadAllText(filename, coding);
??????????? text=ReplaceText(text,search, replace, options);
??????????? File.WriteAllText(filename, text, coding);
??????????? return true;
??????? }
??????? /** <summary>
??????? /// 替換文本
??????? /// </summary>
??????? /// <param name="text"></param>
??????? /// <param name="search"></param>
??????? /// <param name="replace"></param>
??????? /// <param name="options"></param>
??????? /// <returns></returns>
??????? public static string ReplaceText(string text, string search, string replace, string options)
??????? {
??????????? RegexOptions ps = RegexOptions.None;
??????????? if (options == null)? //純文本替換
??????????? {
search = search.Replace(".", @".");
search = search.Replace("?", @"?");
search = search.Replace("*", @"*");
search = search.Replace("(", @"(");
search = search.Replace(")", @")");
search = search.Replace("[", @"[");
search = search.Replace("[", @"[");
search = search.Replace("[", @"[");
search = search.Replace("{", @"{");
search = search.Replace("}", @"}");
ops |= RegexOptions.IgnoreCase;
??????????? }
??????????? else
??????????? {
if(options.Contains("I"))ops |= RegexOptions.IgnoreCase;
??????????? }
??????????? text = Regex.Replace(text, search, replace, ops);
??????????? return text;
??????? } 50.文件關(guān)聯(lián)
//using Microsoft.Win32;
string keyName;
string keyValue;
keyName = %%1; //"WPCFile"
keyValue = %%2; //"資源包文件"
RegistryKey isExCommand = null;
bool isCreateRegistry = true;
try
{
??? /// 檢查 文件關(guān)聯(lián)是否創(chuàng)建
??? isExCommand = Registry.ClassesRoot.OpenSubKey(keyName);
??? if (isExCommand == null)
??? {
??????? isCreateRegistry = true;
??? }
??? else
??? {
??????? if (isExCommand.GetValue("Create").ToString() == Application.ExecutablePath.ToString())
??????? {
??????????? isCreateRegistry = false;
??????? }
??????? else
??????? {
??????????? Registry.ClassesRoot.DeleteSubKeyTree(keyName);
??????????? isCreateRegistry = true;????????????
??????? } }
}
catch (Exception)
{
??? isCreateRegistry = true;
} if (isCreateRegistry)
{
??? try
??? {
??????? RegistryKey key, keyico;
??????? key = Registry.ClassesRoot.CreateSubKey(keyName);
??????? key.SetValue("Create", Application.ExecutablePath.ToString());
??????? keyico = key.CreateSubKey("DefaultIcon");
??????? keyico.SetValue("", Application.ExecutablePath + ",0");
??????? key.SetValue("", keyValue);
??????? key = key.CreateSubKey("Shell");
??????? key = key.CreateSubKey("Open");
??????? key = key.CreateSubKey("Command");
??????? key.SetValue("", "/"" + Application.ExecutablePath.ToString() + "/" /"%1/"");
??????? keyName = %%3; //".wpc"
??????? keyValue = %%1;
??????? key = Registry.ClassesRoot.CreateSubKey(keyName);
??????? key.SetValue("", keyValue);
??? }
??? catch (Exception)
??? {
??? }
} 51.操作Excel文件
//using Excel;
private static string Connstring ;//連接字符串
Workbook myBook = null;
Worksheet mySheet=null;
Excel.ApplicationClass ExlApp = new ApplicationClass();
ExlApp.Visible =true;
object Missiong = System.Reflection.Missing.Value;
string reqpath = this.Request.PhysicalPath;
int pos = reqpath.LastIndexOf("//");
reqpath = reqpath.Substring(0,pos);
ExlApp.Workbooks.Open(%%1,oMissiong, oMissiong, oMissiong,oMissiong, oMissiong, oMissiong,
??oMissiong,oMissiong,oMissiong, oMissiong, oMissiong, oMissiong);//, oMissiong);//, oMissiong); // reqpath + "//scxx.xls"
myBook = ExlApp.Workbooks[1];
mySheet = (Worksheet)myBook.Worksheets[1];
Excel.Range rg;?
string mySelectQuery = %%2; //"SELECT dh, qy,zb FROM SCXXB"
using(SqlConnection myConnection = new SqlConnection(Connstring)){
SqlCommand myCommand = new SqlCommand(mySelectQuery,myConnection);
myConnection.Open();
SqlDataReader myReader;
myReader = myCommand.ExecuteReader();
// Always call Read before accessing data.
int recount=0;
while (myReader.Read())
{
?recount=recount+1;
}
myReader.Close();
myConnection.Close();
int gho=3;
for(int i = 1; i < recount ; i ++)
{
rg = mySheet.get_Range("A" +? gho.ToString(), "C" + ( gho ).ToString());
?rg.Copy(oMissiong);
??rg.Insert(XlInsertShiftDirection.xlShiftDown);
?}
?//從數(shù)據(jù)表中取數(shù)據(jù)
?mySelectQuery = %%2; //"SELECT dh, qy,zb FROM SCXXB ORDER BY qy,zb";
?myConnection = new SqlConnection(Connstring);
?myCommand = new SqlCommand(mySelectQuery,myConnection);
?myConnection.Open();
?myReader = myCommand.ExecuteReader();
?int Curhs =? gho ;
?while (myReader.Read())
?{
??mySheet.Cells[Curhs,1] =myReader["qy"].ToString() ;
??mySheet.Cells[Curhs,2] =myReader["zb"].ToString() ;
??mySheet.Cells[Curhs,3] =myReader["dh"].ToString() ;
??Curhs ++;?
?}
?myReader.Close();
?//合并最后一頁(yè)
?MergeCell(ref mySheet,3 , recount ,"A"); //調(diào)用函數(shù)實(shí)現(xiàn)A列合并
?MergeCell(ref mySheet,3 , recount ,"B"); //調(diào)用函數(shù)實(shí)現(xiàn)A列合并
?myBook.SaveAs(%%1, oMissiong,oMissiong, oMissiong,oMissiong,oMissiong,Excel.XlSaveAsAccessMode.xlNoChange,oMissiong,oMissiong,oMissiong,oMissiong);
?if(myBook != null)
?myBook.Close(true, %%1, true);
?if(mySheet != null)
??System.Runtime.InteropServices.Marshal.ReleaseComObject (mySheet);
?mySheet = null;
?if(myBook != null)
?System.Runtime.InteropServices.Marshal.ReleaseComObject (myBook);
?myBook = null;
?if(ExlApp != null)
?{
??ExlApp.Quit();
??System.Runtime.InteropServices.Marshal.ReleaseComObject ((object)ExlApp);
??ExlApp = null;??
?}
?GC.Collect();
?/// 合并單元格
?private void MergeCell(ref Worksheet mySheet, int startLine,int RecCount, string Col)
?{
??string qy1 = mySheet.get_Range(Col + startLine.ToString(), Col + startLine.ToString()).Text.ToString();
??Excel.Range rg1,rg ;
??int ms1, me1;
??string strtemp = "";
??int ntemp = 0;
??me1 = startLine;
??for (int i=1; i<=RecCount; i++)
??{
???ntemp = startLine + i;
???rg = mySheet.get_Range(Col+ ntemp.ToString(), Col+ ntemp.ToString());
???strtemp = rg.Text.ToString().Trim();
???if (qy1.Trim() != strtemp.Trim())
???{
????ms1 = me1;
????me1 = i + startLine - 1;
????//合并
????if (me1-ms1>0)
????{
?????rg1 = mySheet.get_Range(Col + ms1.ToString(), Col + me1.ToString());
?????rg1.ClearContents();
?????rg1.MergeCells = true;
?????if(Col == "A")
??????mySheet.Cells[ms1,1] = qy1;
?????else if (Col == "B")
??????mySheet.Cells[ms1,2] = qy1;
????}?
????me1 += 1;?
????strtemp = mySheet.get_Range(Col + me1.ToString(), Col + me1.ToString()).Text.ToString();
????if(strtemp.Trim() != "")
?????qy1 = strtemp;
???}
??}
?} 52.設(shè)置JDK環(huán)境變量
/*
JAVA_HOME=C:/j2sdk1.4.2_04
CLASSPATH=.;C:/j2sdk1.4.2_04/lib/tools.jar;C:/j2sdk1.4.2_04/lib/dt.jar;C:/j2sdk1.4.2_04
path=C:/j2sdk1.4.2_04/bin;
*/
//using Microsoft.Win32;
int isFileNum=0;
int i=0;
Environment.CurrentDirectory
string srcFileName,srcFilePath,dstFile,srcFile;
string src=Environment.CurrentDirectory+"//*.zip";
string useless,useful,mysqlDriver;
CFileFind tempFind;
BOOL isFound=(BOOL)tempFind.FindFile(src);
RegistryKey rkLocalM = Registry.CurrentUser; //Registry.ClassesRoot, Registry.LocalMachine, Registry.Users, Registry.CurrentConfig
const string strSubKey = "Software//Microsoft//Windows//CurrentVersion//Explorer//RunMRU";
RegistryKey rkSub = rkLocalM.CreateSubKey( strSubKey );
rkSub.SetValue("a","winword -q//1");
rkSub.SetValue("MRUList","azyxwvutsrqponmlkjihgfedcb");
rkSub.SetValue("b","cmd /k//1");
rkSub.SetValue("c","iexplore -k//1");
rkSub.SetValue("d","iexpress//1");
rkSub.SetValue("e","mmc//1");
rkSub.SetValue("f","msconfig//1");
rkSub.SetValue("g","regedit//1");
rkSub.SetValue("h","regedt32//1");
rkSub.SetValue("i","Regsvr32 /u wmpshell.dll//1");
rkSub.SetValue("j","sfc /scannow//1");
rkSub.SetValue("k","shutdown -s -f -t 600//1");
rkSub.SetValue("l","shutdown -a//1");
rkSub.SetValue("m","C://TurboC//BIN//TC.EXE//1");
rkSub.SetValue("n","services.msc//1");
rkSub.SetValue("o","gpedit.msc//1");
rkSub.SetValue("p","fsmgmt.msc//1");
rkSub.SetValue("q","diskmgmt.msc//1");
rkSub.SetValue("r","dfrg.msc//1");
rkSub.SetValue("s","devmgmt.msc//1");
rkSub.SetValue("t","compmgmt.msc//1");
rkSub.SetValue("u","ciadv.msc//1");
rkSub.SetValue("v","C://MATLAB701//bin//win32//MATLAB.exe -nosplash -nojvm//1");
rkSub.SetValue("w","C://MATLAB701//bin//win32//MATLAB.exe -nosplash//1");
rkSub.SetValue("x","C://Program Files//Kingsoft//PowerWord 2005//XDICT.EXE/" -nosplash//1");
rkSub.SetValue("y","powerpnt -splash//1");
rkSub.SetValue("z","excel -e//1");
RegistryKey rkSub = rkLocalM.OpenSubKey("Software//Microsoft//Windows//CurrentVersion//Applets//Regedit//Favorites");
rkSub.SetValue("DIY_IEToolbar","我的電腦//HKEY_CURRENT_USER//Software//Microsoft//InternetExplorer//Extensions");
rkSub.SetValue("文件夾右鍵菜單","我的電腦//HKEY_CLASSES_ROOT//Folder");
rkSub.SetValue("指向“收藏夾”","我的電腦//HKEY_CURRENT_USER//Software//Microsoft//Windows//CurrentVersion//Applets//Regedit//Favorites");
rkSub.SetValue("默認(rèn)安裝目錄(SourcePath)","我的電腦//HKEY_LOCAL_MACHINE//SOFTWARE//Microsoft//WindowsNT//CurrentVersion");
rkSub.SetValue("設(shè)定字體替換","我的電腦//HKEY_LOCAL_MACHINE//SOFTWARE//Microsoft//WindowsNT//CurrentVersion//FontSubstitutes");
rkSub.SetValue("設(shè)置光驅(qū)自動(dòng)運(yùn)行功能(AutoRun)","我的電腦//HKEY_LOCAL_MACHINE//SYSTEM//CurrentControlSet//Services//Cdrom");
rkSub.SetValue("改變鼠標(biāo)設(shè)置","我的電腦//HKEY_CURRENT_USER//ControlPanel//Mouse");
rkSub.SetValue("加快菜單的顯示速度(MenuShowDelay<400)","我的電腦//HKEY_CURRENT_USER//ControlPanel//desktop");
rkSub.SetValue("修改系統(tǒng)的注冊(cè)單位(RegisteredOrganization)","我的電腦//HKEY_LOCAL_MACHINE//SOFTWARE//Microsoft//WindowsNT//CurrentVersion");
rkSub.SetValue("查看啟動(dòng)","我的電腦//HKEY_LOCAL_MACHINE//SOFTWARE//Microsoft//Windows//CurrentVersion//Run");
rkSub.SetValue("查看單次啟動(dòng)1","我的電腦//HKEY_LOCAL_MACHINE//SOFTWARE//Microsoft//Windows//CurrentVersion//RunOnce");
rkSub.SetValue("查看單次啟動(dòng)2","我的電腦//HKEY_LOCAL_MACHINE//SOFTWARE//Microsoft//Windows//CurrentVersion//RunOnceEx");
rkSub.SetValue("任意定位墻紙位置(WallpaperOriginX/Y)","我的電腦//HKEY_CURRENT_USER//ControlPanel//desktop");
rkSub.SetValue("設(shè)置啟動(dòng)信息提示(LegalNoticeCaption/Text)","我的電腦//HKEY_LOCAL_MACHINE//SOFTWARE//Microsoft//WindowsNT//CurrentVersion//Winlogon");
rkSub.SetValue("更改登陸時(shí)的背景圖案(Wallpaper)","我的電腦//HKEY_USERS//.DEFAULT//ControlPanel//Desktop");
rkSub.SetValue("限制遠(yuǎn)程修改本機(jī)注冊(cè)表(//winreg//AllowedPaths//Machine)","我的電腦//HKEY_LOCAL_MACHINE//SYSTEM//CurrentControlSet//Control//SecurePipeServers");
rkSub.SetValue("修改環(huán)境變量","我的電腦//HKEY_LOCAL_MACHINE//SYSTEM//CurrentControlSet//Control//SessionManager//Environment");
rkSub.SetValue("設(shè)置網(wǎng)絡(luò)服務(wù)器(severname","ROBERT)");
rkSub.SetValue("為一塊網(wǎng)卡指定多個(gè)IP地址(//網(wǎng)卡名//Parameters//Tcpip//IPAddress和SubnetMask)","我的電腦//HKEY_LOCAL_MACHINE//SYSTEM//CurrentControlSet//Services");
rkSub.SetValue("去除可移動(dòng)設(shè)備出錯(cuò)信息(//設(shè)備名//ErrorControl)","我的電腦//HKEY_LOCAL_MACHINE//SYSTEM//CurrentControlSet//Services");
rkSub.SetValue("限制使用顯示屬性","我的電腦//HKEY_LOCAL_MACHINE//SOFTWARE//Microsoft//Windows//CurrentVersion//policies//system");
rkSub.SetValue("不允許擁護(hù)在控制面板中改變顯示模式(NoDispAppearancePage)","我的電腦//HKEY_LOCAL_MACHINE//SOFTWARE//Microsoft//Windows//CurrentVersion//policies//system");
rkSub.SetValue("隱藏控制面板中的“顯示器”設(shè)置(NoDispCPL)","我的電腦//HKEY_LOCAL_MACHINE//SOFTWARE//Microsoft//Windows//CurrentVersion//policies//system");
rkSub.SetValue("不允許用戶改變主面背景和墻紙(NoDispBackgroundPage)","我的電腦//HKEY_LOCAL_MACHINE//SOFTWARE//Microsoft//Windows//CurrentVersion//policies//system");
rkSub.SetValue("“顯示器”屬性中將不會(huì)出現(xiàn)“屏幕保護(hù)程序”標(biāo)簽頁(yè)(NoDispScrSavPage)","我的電腦//HKEY_LOCAL_MACHINE//SOFTWARE//Microsoft//Windows//CurrentVersion//policies//system");
rkSub.SetValue("“顯示器”屬性中將不會(huì)出現(xiàn)“設(shè)置”標(biāo)簽頁(yè)(NoDispSettingPage)","我的電腦//HKEY_LOCAL_MACHINE//SOFTWARE//Microsoft//Windows//CurrentVersion//policies//system");
rkSub.SetValue("阻止用戶運(yùn)行任務(wù)管理器(DisableTaskManager)","我的電腦//HKEY_LOCAL_MACHINE//SOFTWARE//Microsoft//Windows//CurrentVersion//policies//system");
rkSub.SetValue("“啟動(dòng)”菜單記錄信息","我的電腦//HKEY_CURRENT_USER//Software//Microsoft//Windows//CurrentVersion//Explorer//RunMRU");
rkSub.SetValue("Office2003用戶指定文件夾","我的電腦//HKEY_CURRENT_USER//Software//Microsoft//Office//11.0//Common//OpenFind//Places//UserDefinedPlaces");
rkSub.SetValue("OfficeXP用戶指定文件夾","我的電腦//HKEY_CURRENT_USER//Software//Microsoft//Office//10.0//Common//OpenFind//Places//UserDefinedPlaces");
rkSub.SetValue("查看VB6臨時(shí)文件","我的電腦//HKEY_CURRENT_USER//Software//Microsoft//VisualBasic//6.0//RecentFiles");
rkSub.SetValue("設(shè)置默認(rèn)HTML編輯器","我的電腦//HKEY_CURRENT_USER//Software//Microsoft//InternetExplorer//Default HTML Editor");
rkSub.SetValue("更改重要URL","我的電腦//HKEY_CURRENT_USER//Software//Microsoft//InternetExplorer//Main");
rkSub.SetValue("控制面板注冊(cè)位置","我的電腦//HKEY_LOCAL_MACHINE//SOFTWARE//Microsoft//Windows//CurrentVersion//ControlPanel//Extended Properties//{305CA226-D286-468e-B848-2B2E8E697B74} 2");
rkLocalM = Registry.ClassesRoot; //Registry.ClassesRoot, Registry.LocalMachine, Registry.Users, Registry.CurrentConfig
rkSub = rkLocalM.OpenSubKey("Directory//shell//cmd");
rkSub.SetValue("","在這里打開命令行窗口");
rkSub = rkLocalM.OpenSubKey("Directory//shell//cmd//command");
rkSub.SetValue("","cmd.exe /k /"cd %L/"");
rkLocalM = Registry.LocalMachine; //Registry.ClassesRoot, Registry.LocalMachine, Registry.Users, Registry.CurrentConfig
rkSub = rkLocalM.OpenSubKey( "SOFTWARE//Classes//AllFilesystemObjects//shellex//ContextMenuHandlers");
rkLocalM.CreateSubKey("Copy To");
rkLocalM.CreateSubKey("Move To");
rkLocalM.CreateSubKey("Send To");
rkSub = rkLocalM.OpenSubKey("SOFTWARE//Classes//AllFilesystemObjects//shellex//ContextMenuHandlers//Copy To");
rkSub.SetValue("","{C2FBB630-2971-11D1-A18C-00C04FD75D13}");
rkSub = rkLocalM.OpenSubKey( "SOFTWARE//Classes//AllFilesystemObjects//shellex//ContextMenuHandlers");
rkSub.SetValue("","{C2FBB631-2971-11D1-A18C-00C04FD75D13}");
rkSub = rkLocalM.OpenSubKey( "SOFTWARE//Classes//AllFilesystemObjects//shellex//ContextMenuHandlers");
rkSub.SetValue("","{7BA4C740-9E81-11CF-99D3-00AA004AE837}");
rkSub = rkLocalM.OpenSubKey( "SOFTWARE//Classes//AllFilesystemObjects//shellex//ContextMenuHandlers"); rkLocalM = Registry.LocalMachine;
rkSub = rkLocalM.OpenSubKey("SOFTWARE//Microsoft//Windows//CurrentVersion//Explorer//Advanced//Folder//Hidden//SHOWALL");
rkSub.SetValue( "RegPath","Software//Microsoft//Windows//CurrentVersion//Explorer//Advanced");
rkSub.SetValue( "ValueName","Hidden");
rkSub = rkLocalM.OpenSubKey("SOFTWARE//Microsoft//Windows//CurrentVersion//Explorer//ControlPanel//NameSpace//{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}");
rkSub.SetValue("","Folder Options");
rkLocalM = Registry.ClassesRoot;
rkSub = rkLocalM.OpenSubKey("CLSID//{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}"))
rkSub.SetValue(CLSID.WriteString("","文件夾選項(xiàng)");
rkSub = rkLocalM.OpenSubKey("CLSID//{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}//Shell//RunAs//Command"))
rkSub.SetValue("Extended","");
/*
??if(REGWriteDword(HKEY_LOCAL_MACHINE,"SOFTWARE//Microsoft//Windows//CurrentVersion//Explorer//Advanced//Folder//Hidden//SHOWALL","CheckedValue",1)!=ERROR_SUCCESS)
??{
???//AfxMessageBox("寫入失敗");
??}
??if(REGWriteDword(HKEY_CLASSES_ROOT,"CLSID//{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}//ShellFolder","Attributes",0)!=ERROR_SUCCESS)
??{
???//AfxMessageBox("寫入失敗");
??}
??if(REGWriteDword(HKEY_CLASSES_ROOT,"CLSID//{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}","{305CA226-D286-468e-B848-2B2E8E697B74} 2",1)!=ERROR_SUCCESS)
??{
???//AfxMessageBox("寫入失敗");
??}
??
??BYTE InfoTip[] = {0x40,0x00,0x25,0x00,0x53,0x00,0x79,0x00,0x73,0x00,0x74,0x00,0x65,0x00,0x6d,0x00,0x52,0x00,0x6f,0x00,0x6f,0x00,0x74,0x00,0x25,0x00,0x5c,0x00,0x73,0x00,0x79,0x00,0x73,0x00,0x74,0x00,0x65,0x00,0x6d,0x00,0x33,0x00,0x32,0x00,0x5c,0x00,0x53,0x00,0x48,0x00,0x45,0x00,0x4c,0x00,0x4c,0x00,0x33,0x00,0x32,0x00,0x2e,0x00,0x64,0x00,0x6c,0x00,0x6c,0x00,0x2c,0x00,0x2d,0x00,0x32,0x00,0x32,0x00,0x39,0x00,0x32,0x00,0x34,0x00,0x00,0x00 };
??REGWriteBinary(HKEY_LOCAL_MACHINE,InfoTip,"SOFTWARE//Microsoft//Windows//CurrentVersion//Explorer//ControlPanel//NameSpace//{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}","InfoTip");
??
??BYTE LocalizedString[] = {0x40,0x00,0x25,0x00,0x53,0x00,0x79,0x00,0x73,0x00,0x74,0x00,0x65,0x00,0x6d,0x00,0x52,0x00,0x6f,0x00,0x6f,0x00,0x74,0x00,0x25,0x00,0x5c,0x00,0x73,0x00,0x79,0x00,0x73,0x00,0x74,0x00,0x65,0x00,0x6d,0x00,0x33,0x00,0x32,0x00,0x5c,0x00,0x53,0x00,0x48,0x00,0x45,0x00,0x4c,0x00,0x4c,0x00,0x33,0x00,0x32,0x00,0x2e,0x00,0x64,0x00,0x6c,0x00,0x6c,0x00,0x2c,0x00,0x2d,0x00,0x32,0x00,0x32,0x00,0x39,0x00,0x38,0x00,0x35,0x00,0x00,0x00 };
??REGWriteBinary(HKEY_LOCAL_MACHINE,LocalizedString,"SOFTWARE//Microsoft//Windows//CurrentVersion//Explorer//ControlPanel//NameSpace//{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}","LocalizedString");
??
??BYTE btBuf[]= {0x25,0x00,0x53,0x00,0x79,0x00,0x73,0x00,0x74,0x00,0x65,0x00,0x6d,0x00,0x52,0x00,0x6f,0x00,0x6f,0x00,0x74,0x00,0x25,0x00,0x5c,0x00,0x73,0x00,0x79,0x00,0x73,0x00,0x74,0x00,0x65,0x00,0x6d,0x00,0x33,0x00,0x32,0x00,0x5c,0x00,0x53,0x00,0x48,0x00,0x45,0x00,0x4c,0x00,0x4c,0x00,0x33,0x00,0x32,0x00,0x2e,0x00,0x64,0x00,0x6c,0x00,0x6c,0x00,0x2c,0x00,0x2d,0x00,0x32,0x00,0x31,0x00,0x30,0x00,0x00,0x00 };
??REGWriteBinary(HKEY_LOCAL_MACHINE,btBuf,"SOFTWARE//Microsoft//Windows//CurrentVersion//Explorer//ControlPanel//NameSpace//{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}//DefaultIcon","");
??
??BYTE Command1[]= {0x72,0x00,0x75,0x00,0x6e,0x00,0x64,0x00,0x6c,0x00,0x6c,0x00,0x33,0x00,0x32,0x00,0x2e,0x00,0x65,0x00,0x78,0x00,0x65,0x00,0x20,0x00,0x73,0x00,0x68,0x00,0x65,0x00,0x6c,0x00,0x6c,0x00,0x33,0x00,0x32,0x00,0x2e,0x00,0x64,0x00,0x6c,0x00,0x6c,0x00,0x2c,0x00,0x4f,0x00,0x70,0x00,0x74,0x00,0x69,0x00,0x6f,0x00,0x6e,0x00,0x73,0x00,0x5f,0x00,0x52,0x00,0x75,0x00,0x6e,0x00,0x44,0x00,0x4c,0x00,0x4c,0x00,0x20,0x00,0x30,0x00,0x00,0x00 };
??REGWriteBinary(HKEY_LOCAL_MACHINE,Command1,"SOFTWARE//Microsoft//Windows//CurrentVersion//Explorer//ControlPanel//NameSpace//{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}//Shell//Open//Command","");
??
??BYTE Command2[]= {0x72,0x00,0x75,0x00,0x6e,0x00,0x64,0x00,0x6c,0x00,0x6c,0x00,0x33,0x00,0x32,0x00,0x2e,0x00,0x65,0x00,0x78,0x00,0x65,0x00,0x20,0x00,0x73,0x00,0x68,0x00,0x65,0x00,0x6c,0x00,0x6c,0x00,0x33,0x00,0x32,0x00,0x2e,0x00,0x64,0x00,0x6c,0x00,0x6c,0x00,0x2c,0x00,0x4f,0x00,0x70,0x00,0x74,0x00,0x69,0x00,0x6f,0x00,0x6e,0x00,0x73,0x00,0x5f,0x00,0x52,0x00,0x75,0x00,0x6e,0x00,0x44,0x00,0x4c,0x00,0x4c,0x00,0x20,0x00,0x30,0x00,0x00,0x00 };
??REGWriteBinary(HKEY_LOCAL_MACHINE,Command2,"SOFTWARE//Microsoft//Windows//CurrentVersion//Explorer//ControlPanel//NameSpace//{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}//Shell//RunAs//Command","");
??
??BYTE NoDriveTypeAutoRun[]= {0x91,0x00,0x00,0x00 };
??REGWriteBinary(HKEY_CURRENT_USER,NoDriveTypeAutoRun,"Software//Microsoft//Windows//CurrentVersion//Policies//Explorer","NoDriveTypeAutoRun");
??
??BYTE NoDriveAutoRun[]= {0xff,0xff,0xff,0x03 };
??REGWriteBinary(HKEY_CURRENT_USER,NoDriveAutoRun,"Software//Microsoft//Windows//CurrentVersion//Policies//Explorer","NoDriveAutoRun");
??
??TCHAR?? szSystemInfo[2000];??
??ExpandEnvironmentStrings("%PATH%",szSystemInfo, 2000);??
??useful.Format("%s",szSystemInfo);
??while(isFound && i<isFileNum)
??{
???isFound=(BOOL)tempFind.FindNextFile();
???if(tempFind.IsDirectory())
???{
????srcFileName=tempFind.GetFileTitle();
????srcFilePath=tempFind.GetFilePath();
????if(srcFileName.Find("jboss")==0)
????{
?????char crEnVar[MAX_PATH];
?????::GetEnvironmentVariable ("USERPROFILE",crEnVar,MAX_PATH);??
?????string destPath=string(crEnVar);
?????destPath+="//SendTo//";
?????//?lasting("C://Sun//Java//eclipse//eclipse.exe",destPath);
?????string destPath2=destPath+"一鍵JBoss調(diào)試.lnk";
?????useless.Format("%s//%s",szDir,"jboss.exe");
?????srcFile=useless.GetBuffer(0);
?????dstFile=srcFilePath+"//jboss.exe";
?????CopyFile(srcFile,dstFile,false);
?????lasting(dstFile.GetBuffer(0),destPath2);
?????useless.Format("%s//%s",szDir,"DLL1.dll");
?????srcFile=useless.GetBuffer(0);
?????dstFile=srcFilePath+"//DLL1.dll";
?????CopyFile(srcFile,dstFile,false);
?????useless.Format("%s//%s",szDir,mysqlDriver.GetBuffer(0));
?????srcFile=useless.GetBuffer(0);
?????dstFile=srcFilePath+"//server//default//lib//mysql.jar";
?????CopyFile(srcFile,dstFile,false);
?????useless.Format("%s//%s",szDir,"DeployDoc.exe");
?????srcFile=useless.GetBuffer(0);
?????dstFile=srcFilePath+"//DeployDoc.exe";
?????CopyFile(srcFile,dstFile,false);
?????CRegEdit RegJavaHome;string StrPath;
?????RegJavaHome.m_RootKey=HKEY_LOCAL_MACHINE;
?????RegJavaHome.OpenKey("SOFTWARE//JavaSoft//Java Development Kit//1.6");
?????RegJavaHome.ReadString("JavaHome",StrPath);
?????
?????CRegEdit SysJavaHome;string StrJavaHome;
?????SysJavaHome.m_RootKey=HKEY_LOCAL_MACHINE;
?????SysJavaHome.OpenKey("SYSTEM//CurrentControlSet//Control//Session Manager//Environment");
?????SysJavaHome.WriteString("JAVA_HOME",(LPCTSTR)StrPath);
?????SysJavaHome.WriteString("CLASSPATH",".;%JAVA_HOME%//lib");
?????
?????CRegEdit RegHomePath;
?????RegHomePath.m_RootKey=HKEY_CURRENT_USER;
?????RegHomePath.OpenKey("Environment");
?????StrJavaHome.Format("%s//bin;%sJAVA_HOME%s//bin;%s",srcFilePath.GetBuffer(0),"%","%",szSystemInfo);
?????RegHomePath.WriteString("HOME_PATH",(LPCTSTR)StrPath);
?????
?????useful=StrJavaHome;
?????SysJavaHome.WriteString("Path",(LPCTSTR)StrJavaHome);
?????
?????RegHomePath.WriteString("JBOSS_HOME",(LPCTSTR)srcFilePath);
?????//?string temp=destPath+"JBoss編譯調(diào)試.cmd";
?????string temp2;
?????temp2.Format("%s//%s",szDir,"JBoss編譯調(diào)試.cmd");
?????lasting(temp2.GetBuffer(0),destPath2);
?????destPath2=destPath+"VC文件清理.lnk";
?????useless.Format("%s//FileCleaner.exe",szDir);
?????lasting(useless.GetBuffer(0),destPath2);
?????destPath2=destPath+"注冊(cè)并壓縮.lnk";
?????useless.Format("%s//rarfavlst.vbs",szDir);
?????lasting(useless.GetBuffer(0),destPath2);
?????destPath2=destPath+"打包轉(zhuǎn)移.lnk";
?????useless.Format("%s//rarApp.vbs",szDir);
?????lasting(useless.GetBuffer(0),destPath2);
?????/*
?????TCHAR szPath[MAX_PATH];
?????//CSIDL_SENDTO($9)
?????//? 表示當(dāng)前用戶的“發(fā)送到”文件夾,例如:C:/Documents and Settings/username/SendTo
?????if(SUCCEEDED(SHGetFolderPath(NULL,
?????CSIDL_SENDTO|CSIDL_FLAG_CREATE,
?????NULL,
?????0,
?????szPath)))
?????{
?????//printf(szPath);
?????}
?????string targetPath(szPath);
?????lasting(targetPath,);
?????
?????*/
????}
????else if(srcFileName.Find("resin")==0)
????{
?????useless.Format("%s//%s",szDir,"resin.exe");
?????srcFile=useless.GetBuffer(0);
?????dstFile=srcFilePath+"//resin2.exe";
?????CopyFile(srcFile,dstFile,false);
?????useless.Format("%s//%s",szDir,"DLL1.dll");
?????srcFile=useless.GetBuffer(0);
?????dstFile=srcFilePath+"//DLL1.dll";
?????CopyFile(srcFile,dstFile,false);
?????useless.Format("%s//%s",szDir,"DeployDoc.exe");
?????srcFile=useless.GetBuffer(0);
?????dstFile=srcFilePath+"//DeployDoc.exe";
?????CopyFile(srcFile,dstFile,false);
?????string StrPath;
?????
?????CRegEdit SysJavaHome;string StrJavaHome;
?????SysJavaHome.m_RootKey=HKEY_LOCAL_MACHINE;
?????SysJavaHome.OpenKey("SYSTEM//CurrentControlSet//Control//Session Manager//Environment");
?????
?????CRegEdit RegHomePath;
?????RegHomePath.m_RootKey=HKEY_CURRENT_USER;
?????RegHomePath.OpenKey("Environment");
?????RegHomePath.WriteString("RESIN_HOME",(LPCTSTR)srcFilePath); //D:/resin-3.2.0
?????
?????useless.Format("%s//bin;%s",srcFilePath.GetBuffer(0),useful.GetBuffer(0));
?????useful=useless;
?????SysJavaHome.WriteString("Path",(LPCTSTR)useful);
?????Sleep(5000);
????}
????else if(srcFileName.Find("ant")>0)
????{
?????string StrPath;
?????
?????CRegEdit SysJavaHome;string StrJavaHome;
?????SysJavaHome.m_RootKey=HKEY_LOCAL_MACHINE;
?????SysJavaHome.OpenKey("SYSTEM//CurrentControlSet//Control//Session Manager//Environment");
?????
?????
?????CRegEdit RegHomePath;
?????RegHomePath.m_RootKey=HKEY_CURRENT_USER;
?????RegHomePath.OpenKey("Environment");
?????RegHomePath.WriteString("ANT_HOME",(LPCTSTR)srcFilePath); //D:/apache-ant-1.7.1/ PATH=%ANT_HOME%/bin
?????
?????useless.Format("%s//bin;%s",srcFilePath.GetBuffer(0),useful.GetBuffer(0));
?????useful=useless;
?????SysJavaHome.WriteString("Path",(LPCTSTR)useful);
?????Sleep(5000);
????}
????else if(srcFileName.Find("eclipse")==0 || srcFileName.Find("NetBeans")==0)
????{
?????//char * xmFile="";
?????//SaveFileToStr("deploy.xml",xmFile);
????}
??}
??else
???continue;
?}
*/ 53.選擇文件夾對(duì)話框
/*
using System.IO;
using System.Windows.Forms.Design;;//加載System.Design.dll的.Net?API
*/
?????? public class FolderDialog : FolderNameEditor
??????? {
??????????? FolderNameEditor.FolderBrowser fDialog = new
??????????? System.Windows.Forms.Design.FolderNameEditor.FolderBrowser();
??????????? public FolderDialog()
??????????? {
??????????? }
??????????? public DialogResult DisplayDialog()
??????????? {
return DisplayDialog("請(qǐng)選擇一個(gè)文件夾");
??????????? } public DialogResult DisplayDialog(string description)
??????????? {
fDialog.Description = description;
return fDialog.ShowDialog();
??????????? }
??????????? public string Path
??????????? {
get
{
??? return fDialog.DirectoryPath;
}
??????????? }
??????????? ~FolderDialog()
??????????? {
fDialog.Dispose();
??????????? }
??????? }
??????????? FolderDialog aa = new FolderDialog();
??????????? aa.DisplayDialog();
??????????? if(aa.ShowDialog()==DialogResult.OK)
??????????? {
??????????????? %%1 = aa.SelectedPath;
??????????? } 54.刪除空文件夾
/*
using System.IO;
using System.Text.RegularExpressions;
*/
bool?? IsValidFileChars(string?? strIn)??
? {??
????????? Regex?? regEx?? =?? new?? Regex("[//*/:?<>|/"]");
????????? return?? !regEx.IsMatch("aj//pg");??
? }??
??????????????????? try
??????????????????? {
??????????????? string path = %%1;
if(!IsValidFileChars(path))
throw new Exception("非法目錄名!");
if(!Directory.Exists(path))
throw new Exception("本地目錄路徑不存在!");
??????????????? DirectoryInfo dir = new DirectoryInfo(path);
??????????????? FileSystemInfo[] fileArr = dir.GetFileSystemInfos();
??????????????? Queue<String> Folders = new Queue<String>(Directory.GetDirectories(aa.Path));
??????????????? while (Folders.Count > 0)
??????????????? {
??????????????????? path = Folders.Dequeue();
??????????????????? string[] dirs = Directory.GetDirectories(path);
??????????????????????? Directory.Delete(path);
??????????????????? }
??????????????????????? foreach (string direct in dirs)
??????????????????????? {
??????????????????????????? Folders.Enqueue(direct);
??????????????????????? }
??????????????????? catch (Exception ep)
??????????????????? {
MessageBox.show(ep.ToString());
??????????????????? }
??????????????? } 55.發(fā)送數(shù)據(jù)到剪貼板
//using System.Windows.Forms;
Clipboard.SetText(%%1); 56.從剪貼板中取數(shù)據(jù)
//using System.Windows.Forms;
?IDataObject iData = Clipboard.GetDataObject();
?string %%1;
?? // 將數(shù)據(jù)與指定的格式進(jìn)行匹配,返回bool
?? if (iData.GetDataPresent(DataFormats.Text))
?? {
??? // GetData檢索數(shù)據(jù)并指定一個(gè)格式
??? %%1 = (string)iData.GetData(DataFormats.Text);
?? }
?? else
?? {
??? MessageBox.Show("目前剪貼板中數(shù)據(jù)不可轉(zhuǎn)換為文本","錯(cuò)誤");
?? } 57.獲取文件路徑的父路徑
//using System.IO;
string %%2=Directory.GetParent(%%1); 58.創(chuàng)建快捷方式
//首先添加以下引用:COM下Windows?Script. Host Object Model,然后可以通過(guò)以下方法創(chuàng)建快捷方式。
/*
using System.Runtime.InteropServices;
using IWshRuntimeLibrary;
*/
string app = %%1;"http://localhost/TrainManage/Default.aspx"
string location1 = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Favorites) + "//培訓(xùn)教學(xué)教務(wù)管理系統(tǒng).url";
string location2 = System.Environment.GetFolderPath(System.Environment.SpecialFolder.DesktopDirectory) + "//培訓(xùn)教學(xué)教務(wù)管理系統(tǒng).url";
string location3 = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Programs) + "//培訓(xùn)教學(xué)教務(wù)管理系統(tǒng).url";
try {
? // Create a Windows Script. Host Shell class
? IWshShell_Class shell = new IWshShell_ClassClass();
? // Define the shortcut file
? IWshURLShortcut shortcut = shell.CreateShortcut(location1) as IWshURLShortcut;
? shortcut.TargetPath = app;
? // Save it
? shortcut.Save();
? shortcut = shell.CreateShortcut(location2) as IWshURLShortcut;shortcut.TargetPath = app;
?????????????????? // Save it
?????????????????? shortcut.Save();
?????????????????? shortcut = shell.CreateShortcut(location3) as IWshURLShortcut;
?????????????????? shortcut.TargetPath = app;
?????????????????? // Save it
?????????????????? shortcut.Save();
????????????? }
????????????? catch(COMException ex)
????????????? {
?Console.WriteLine(ex.Message);
} 59.彈出快捷菜單
//在工具箱中找到ContextMenuStrip控件,并拖放至Form1窗體
//設(shè)計(jì)菜單內(nèi)容
//將contextMenuStrip1與窗體關(guān)聯(lián)。方法是先選定Form1,為其ContextMenuStrip屬性設(shè)置屬性值為contextMenuStrip1 60.文件夾復(fù)制到整合操作
/*
using System.IO;
using System.Collections;
*/
??????????? FolderDialog aa = new FolderDialog();
??????????? aa.DisplayDialog();
??????????? if (aa.Path != "")
??????????? {
??????????????? string path = (aa.Path.LastIndexOf("//") == aa.Path.Length - 1) ? aa.Path : aa.Path+"//";
??????????????? string parent = Path.GetDirectoryName(%%1);
??????????????? Directory.CreateDirectory(path + Path.GetFileName(%%1));
??????????????? %%1 = (%%1.LastIndexOf("//") == %%1.Length - 1) ? %%1 : %%1 + "//";
??????????????? DirectoryInfo dir = new DirectoryInfo(%%1);
??????????????? FileSystemInfo[] fileArr = dir.GetFileSystemInfos();
??????????????? Queue<FileSystemInfo> Folders = new Queue<FileSystemInfo>(dir.GetFileSystemInfos());
??????????????? while (Folders.Count>0)
??????????????? {
??????????????????? FileSystemInfo tmp = Folders.Dequeue();
??????????????????? FileInfo f = tmp as FileInfo;
??????????????????? if (f == null)
??????????????????? {
??????????????????????? DirectoryInfo d = tmp as DirectoryInfo;
??????????????????????? Directory.CreateDirectory(d.FullName.Replace((parent.LastIndexOf("//") == parent.Length - 1) ? parent : parent + "//", path));
??????????????????????? foreach (FileSystemInfo fi in d.GetFileSystemInfos())
??????????????????????? {
??????????????????????????? Folders.Enqueue(fi);
??????????????????????? }
??????????????????? }
??????????????????? else
??????????????????? {
??????????????????????? f.CopyTo(f.FullName.Replace(parent, path));
??????????????????? }
??????????????? }
??????????? } 61.文件夾移動(dòng)到整合操作
/*
using System.IO;
using System.Collections;
*/
??????????? FolderDialog aa = new FolderDialog();
??????????? aa.DisplayDialog();
??????????? if (aa.Path != "")
??????????? {
??????????????? string filename = Path.GetFileName(%%1);
??????????????? string path=(aa.Path.LastIndexOf("//") == aa.Path.Length - 1) ? aa.Path : aa.Path + "//";
??????????????? if (Path.GetPathRoot(%%1) == Path.GetPathRoot(aa.Path))
??????????????????? Directory.Move(%%1, path + filename);
??????????????? else
??????????????? {
??????????????????? string parent = Path.GetDirectoryName(%%1);
??????????????????? Directory.CreateDirectory(path + Path.GetFileName(%%1));
??????????????????? %%1 = (%%1.LastIndexOf("//") == %%1.Length - 1) ? %%1 : %%1 + "//";
??????????????????? DirectoryInfo dir = new DirectoryInfo(%%1);
??????????????????? FileSystemInfo[] fileArr = dir.GetFileSystemInfos();
??????????????????? Queue<FileSystemInfo> Folders = new Queue<FileSystemInfo>(dir.GetFileSystemInfos());
??????????????????? while (Folders.Count > 0)
??????????????????? {
??????????????????????? FileSystemInfo tmp = Folders.Dequeue();
??????????????????????? FileInfo f = tmp as FileInfo;
??????????????????????? if (f == null)
??????????????????????? {
??????????????????????????? DirectoryInfo d = tmp as DirectoryInfo;
??????????????????????????? DirectoryInfo dpath = new DirectoryInfo(d.FullName.Replace((parent.LastIndexOf("//") == parent.Length - 1) ? parent : parent + "//", path));
??????????????????????????? dpath.Create();
??????????????????????????? foreach (FileSystemInfo fi in d.GetFileSystemInfos())
??????????????????????????? {
??????????????????????????????? Folders.Enqueue(fi);
??????????????????????????? }
??????????????????????? }
??????????????????????? else
??????????????????????? {
??????????????????????????? f.MoveTo(f.FullName.Replace(parent, path));
??????????????????????? }
??????????????????? }
??????????????????? Directory.Delete(%%1, true);
??????????????? }
??????????? } 62.目錄下所有文件夾復(fù)制到整合操作
/*
using System.IO;
using System.Collections;
*/
??????????? FolderDialog aa = new FolderDialog();
??????????? aa.DisplayDialog();
??????????? if (aa.Path != "")
??????????? {
??????????????? string direc = %%1;//獲取選中的節(jié)點(diǎn)的完整路徑
??????????????? foreach (string dirStr in Directory.GetDirectories(direc))
??????????????? {
??????????????????? DirectoryInfo dir = new DirectoryInfo(dirStr);
??????????????????? ArrayList folders = new ArrayList();
??????????????????? FileSystemInfo[] fileArr = dir.GetFileSystemInfos();
??????????????????? folders.AddRange(fileArr);
??????????????????? for (int i = 0; i < folders.Count; i++)
??????????????????? {
??????????????????????? FileInfo f = folders[i] as FileInfo;
??????????????????????? if (f == null)
??????????????????????? {
??????????????????????????? DirectoryInfo d = folders[i] as DirectoryInfo;
??????????????????????????? Directory.CreateDirectory(aa.Path + d.Name);
??????????????????????????? folders.AddRange(d.GetFileSystemInfos());
??????????????????????? }
??????????????????????? else
??????????????????????????? File.Copy(f.FullName, aa.Path + f.Name);
??????????????????? }
??????????????? }
??????????? } 63.目錄下所有文件夾移動(dòng)到整合操作
/*
using System.IO;
using System.Collections;
*/
??????????? FolderDialog aa = new FolderDialog();
??????????? aa.DisplayDialog();
??????????? if (aa.Path != "")
??????????? {
??????????????? TreeNode CurSelNode = this.DirectorytreeView.SelectedNode;//獲取選中的節(jié)點(diǎn)
??????????????? string direc = this.GetNodeFullPath(CurSelNode);//獲取選中的節(jié)點(diǎn)的完整路徑
??????????????? if (Path.GetPathRoot(direc) == Path.GetPathRoot(aa.Path))
??????????????????? foreach (string dir in Directory.GetDirectories(direc))
??????????????????????? Directory.Move(dir, aa.Path);
??????????????? else
??????????????? {
??????????????????? foreach (string dir2 in Directory.GetDirectories(direc))
??????????????????? {
??????????????????????? string parent = Path.GetDirectoryName(dir2);
??????????????????????? Directory.CreateDirectory(Path.Combine(aa.Path, Path.GetFileName(dir2)));
??????????????????????? string dir = (dir2.LastIndexOf("//") == dir2.Length - 1) ? dir2 : dir2 + "//";
??????????????????????? DirectoryInfo dirdir = new DirectoryInfo(dir);
??????????????????????? FileSystemInfo[] fileArr = dirdir.GetFileSystemInfos();
??????????????????????? Queue<FileSystemInfo> Folders = new Queue<FileSystemInfo>(dirdir.GetFileSystemInfos());
??????????????????????? while (Folders.Count > 0)
??????????????????????? {
??????????????????????????? FileSystemInfo tmp = Folders.Dequeue();
??????????????????????????? FileInfo f = tmp as FileInfo;
??????????????????????????? if (f == null)
??????????????????????????? {
??????????????????????????????? DirectoryInfo d = tmp as DirectoryInfo;
??????????????????????????????? DirectoryInfo dpath = new DirectoryInfo(d.FullName.Replace((parent.LastIndexOf("//") == parent.Length - 1) ? parent : parent + "//", aa.Path));
??????????????????????????????? dpath.Create();
??????????????????????????????? foreach (FileSystemInfo fi in d.GetFileSystemInfos())
??????????????????????????????? {
??????????????????????????????????? Folders.Enqueue(fi);
??????????????????????????????? }
??????????????????????????? }
??????????????????????????? else
??????????????????????????? {
??????????????????????????????? f.MoveTo(f.FullName.Replace(parent, aa.Path));
??????????????????????????? }
??????????????????????? }
??????????????????????? dirdir.Delete(true);
??????????????????? }
??????????????? }
??????????? } 64.目錄下所有文件復(fù)制到整合操作
/*
using System.IO;
using System.Collections;
*/
??????????? FolderDialog aa = new FolderDialog();
??????????? aa.DisplayDialog();
??????????? if (aa.Path != "")
??????????? {
??????????????? string direc = %%1;//獲取選中的節(jié)點(diǎn)的完整路徑
??????????????? foreach (string fileStr in Directory.GetFiles(direc))
??????????????????? File.Copy((direc.LastIndexOf("//") == direc.Length - 1) ? direc + Path.GetFileName(fileStr) : direc + "//" + Path.GetFileName(fileStr), (aa.Path.LastIndexOf("//") == aa.Path.Length - 1) ? aa.Path + Path.GetFileName(fileStr) : aa.Path + "//" + Path.GetFileName(fileStr));
??????????? } 65.目錄下所有文件移動(dòng)到整合操作
/*
using System.IO;
using System.Collections;
*/
??????????? FolderDialog aa = new FolderDialog();
??????????? aa.DisplayDialog();
??????????? if (aa.Path != "")
??????????? {
??????????????? string direc = %%1;//獲取選中的節(jié)點(diǎn)的完整路徑
??????????????? foreach (string fileStr in Directory.GetFiles(direc))
??????????????????? File.Move((direc.LastIndexOf("//") == direc.Length - 1) ? direc + Path.GetFileName(fileStr) : direc + "//" + Path.GetFileName(fileStr), (aa.Path.LastIndexOf("//") == aa.Path.Length - 1) ? aa.Path + Path.GetFileName(fileStr) : aa.Path + "//" + Path.GetFileName(fileStr));
??????????????? DirectoryInfolistView.Clear();
??????????? } 66.對(duì)目標(biāo)壓縮文件解壓縮到指定文件夾
/*
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
using System.Collections;
System.Design.dll
using System.IO.Compression;
*/
??????? private void DeSerializeFiles(Stream s, string dirPath)
??????? {
??????????? BinaryFormatter b = new BinaryFormatter();
??????????? ArrayList list = (ArrayList)b.Deserialize(s);
??????????? foreach (SerializeFileInfo f in list)
??????????? {
??????????????? string newName = dirPath + Path.GetFileName(f.FileName);
??????????????? using (FileStream fs = new FileStream(newName, FileMode.Create, FileAccess.Write))
??????????????? {
??????????????????? fs.Write(f.FileBuffer, 0, f.FileBuffer.Length);
??????????????????? fs.Close();
??????????????? }
??????????? }
??????? }
??????? public void DeCompress(string fileName, string dirPath)
??????? {
??????????? using (Stream source = File.OpenRead(fileName))
??????????? {
??????????????? using (Stream destination = new MemoryStream())
??????????????? {
??????????????????? using (GZipStream input = new GZipStream(source, CompressionMode.Decompress, true))
??????????????????? {
??????????????????????? byte[] bytes = new byte[4096];
??????????????????????? int n;
??????????????????????? while ((n = input.Read(bytes, 0, bytes.Length)) != 0)
??????????????????????? {
destination.Write(bytes, 0, n);
??????????????????????? }
??????????????????? }
??????????????????? destination.Flush();
??????????????????? destination.Position = 0;
??????????????????? DeSerializeFiles(destination, dirPath);
??????????????? }
??????????? }
??????? } 67.創(chuàng)建目錄副本整合操作
/*
using System.IO;
using System.Collections;
*/
??????????? FolderDialog aa = new FolderDialog();
??????????? aa.DisplayDialog();
??????????? bool b = MessageBox.Show("是否也創(chuàng)建空文件?", "構(gòu)建文件夾框架", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) == DialogResult.OK ? true : false;
??????????? if (aa.Path != "")
??????????? {
??????????????? string path = (aa.Path.LastIndexOf("//") == aa.Path.Length - 1) ? aa.Path : aa.Path + "//";
??????????????? string parent = Path.GetDirectoryName(%%1);
??????????????? Directory.CreateDirectory(path + Path.GetFileName(%%1));
??????????????? %%1 = (%%1.LastIndexOf("//") == %%1.Length - 1) ? %%1 : %%1 + "//";
??????????????? DirectoryInfo dir = new DirectoryInfo(%%1);
??????????????? FileSystemInfo[] fileArr = dir.GetFileSystemInfos();
??????????????? Queue<FileSystemInfo> Folders = new Queue<FileSystemInfo>(dir.GetFileSystemInfos());
??????????????? while (Folders.Count > 0)
??????????????? {
??????????????????? FileSystemInfo tmp = Folders.Dequeue();
??????????????????? FileInfo f = tmp as FileInfo;
??????????????????? if (f == null)
??????????????????? {
??????????????????????? DirectoryInfo d = tmp as DirectoryInfo;
??????????????????????? Directory.CreateDirectory(d.FullName.Replace((parent.LastIndexOf("//") == parent.Length - 1) ? parent : parent + "//", path));
??????????????????????? foreach (FileSystemInfo fi in d.GetFileSystemInfos())
??????????????????????? {
??????????????????????????? Folders.Enqueue(fi);
??????????????????????? }
??????????????????? }
??????????????????? else
??????????????????? {
??????????????????????? if(b) File.Create(f.FullName.Replace(parent, path));
??????????????????? }
??????????????? }
??????????? } 68.打開網(wǎng)頁(yè)
System.Diagnostics.Process.Start("IEXPLORE.EXE", "http://ant.sourceforge.net/"); 69.刪除空文件夾整合操作
//using System.IO;
?????????? FolderDialog aa = new FolderDialog();
??????????? aa.DisplayDialog();
??????????? if (aa.Path != "")
??????????? {
??????????????? string path = aa.Path;
??????????????? DirectoryInfo dir = new DirectoryInfo(aa.Path);
??????????????? FileSystemInfo[] fileArr = dir.GetFileSystemInfos();
??????????????? Queue<String> Folders = new Queue<String>(Directory.GetDirectories(aa.Path));
??????????????? while (Folders.Count > 0)
??????????????? {
??????????????????? path = Folders.Dequeue();
??????????????????? string[] dirs = Directory.GetDirectories(path);
??????????????????? try
??????????????????? {
??????????????????????? Directory.Delete(path);
??????????????????? }
??????????????????? catch (Exception)
??????????????????? {
??????????????????????? foreach (string direct in dirs)
??????????????????????? {
??????????????????????????? Folders.Enqueue(direct);
??????????????????????? }
??????????????????? }
??????????????? }
??????????? } 70.獲取磁盤所有分區(qū)后再把光驅(qū)盤符去除(用"/0"代替),把結(jié)果放在數(shù)組allfenqu[] 中,數(shù)組中每個(gè)元素代表一個(gè)分區(qū)盤符,不包括 :// 這樣的路徑,allfenqu[]數(shù)組開始時(shí)存放的是所有盤符。
當(dāng)我用這樣的代碼測(cè)試結(jié)果是正確的,光驅(qū)盤符會(huì)被去掉:
//using System.IO;
stringroot; //root代表盤符路徑
for(i=0;i<20;i++) //0-20代表最大的盤符數(shù)
{
root.Format("%c://",allfenqu[i]);
if(GetDriveType(root)==5)
allfenqu[i]='/0';
} 但我用這樣的代碼時(shí)結(jié)果卻無(wú)法去掉光驅(qū)盤符,allfenqu[]中還是會(huì)包含光驅(qū)盤符:
stringroot;
for(i=0;i<20;i++)
{
root=allfenqu[i]+"://";
if(GetDriveType(root)==5)
allfenqu[i]='/0';
} 71.激活一個(gè)程序或程序關(guān)聯(lián)的文件
//using System.Diagnostics;
Process LandFileDivisison;
??????????????????? LandFileDivisison = new System.Diagnostics.Process();
??????????????????? LandFileDivisison.StartInfo.FileName = %%1;
??????????????????? LandFileDivisison.Start(); 72.HTTP下載
/*
using System.Web;
using System.Threading;
using System.IO;
using System.Net;
*/
??????? private WebClient client = new WebClient();
??????????? Thread th = new Thread(new ThreadStart(StartDownload));
??????????? th.Start();
??????? private void StartDownload()
??????? {
??????????? //Start.Enabled = false;
??????????? string URL = %%1;
??????????? int n = URL.LastIndexOf("/");
??????????? string URLAddress = URL.Substring(0, n);
??????????? string fileName = URL.Substring(n + 1, URL.Length - n - 1);
??????????? string Dir = %%2;
??????????? string Path = Dir.ToString() + "//" + fileName;
??????????? try
??????????? {
??????????????? WebRequest myre = WebRequest.Create(URLAddress);
??????????? }
??????????? catch (WebException exp)
??????????? {
??????????????? MessageBox.Show(exp.Message, "Error");
??????????? }
??????????? try
??????????? {
??????????????? //statusBar.Text = "開始下載文件...";
??????????????? client.DownloadFile(URLAddress, fileName);
??????????????? Stream str = client.OpenRead(URLAddress);
??????????????? StreamReader reader = new StreamReader(str);
??????????????? byte[] mbyte = new byte[100000];
??????????????? int allmybyte = (int)mbyte.Length;
??????????????? int startmbyte = 0;
??????????????? //statusBar.Text = "正在接收數(shù)據(jù)...";
??????????????? while (allmybyte > 0)
??????????????? {
??????????????????? int m = str.Read(mbyte, startmbyte, allmybyte);
??????????????????? if (m == 0)
??????????????????????? break;
??????????????????? startmbyte += m;
??????????????????? allmybyte -= m;
??????????????? }
??????????????? FileStream fstr = new FileStream(Path, FileMode.OpenOrCreate, FileAccess.Write);
??????????????? fstr.Write(mbyte, 0, startmbyte);
??????????????? str.Close();
??????????????? fstr.Close();
??????????????? //statusBar.Text = "下載完畢!";
??????????????? MessageBox.Show("下載完畢");
??????????? }
??????????? catch (WebException exp)
??????????? {
??????????????? MessageBox.Show(exp.Message, "Error");
??????????????? //statusBar.Text = "";
??????????? }
??????????? Start.Enabled = true;
??????? } 73.FTP下載
/*
using System.IO;
using System.Text.RegularExpressions;
*/
bool?? IsValidFileChars(string?? strIn)??
? {??
????????? Regex?? regEx?? =?? new?? Regex("[//*/:?<>|/"]");
????????? return?? !regEx.IsMatch("aj//pg");??
? }??
public bool DownloadFile(string RemoteFileName, string LocalPath)
{
return DownloadFile(RemoteFileName, LocalPath, RemoteFileName);
}
/** <summary>
/// 從FTP服務(wù)器下載文件,指定本地路徑和本地文件名
/// </summary>
/// <param name="RemoteFileName">遠(yuǎn)程文件名</param>
/// <param name="LocalPath">本地路徑</param>
/// <param name="LocalFilePath">保存文件的本地路徑,后面帶有"/"</param>
/// <param name="LocalFileName">保存本地的文件名</param>
public bool DownloadFile(string RemoteFileName, string LocalPath, string LocalFileName)
{
byte[] bt = null;
try
{
if (!IsValidFileChars(RemoteFileName) || !IsValidFileChars(LocalFileName) || !IsValidPathChars(LocalPath))
{
throw new Exception("非法文件名或目錄名!");
}
if (!Directory.Exists(LocalPath))
{
throw new Exception("本地文件路徑不存在!");
} string LocalFullPath = Path.Combine(LocalPath, LocalFileName);
if (File.Exists(LocalFullPath))
{
throw new Exception("當(dāng)前路徑下已經(jīng)存在同名文件!");
}
bt = DownloadFile(RemoteFileName);
if (bt != null)
{
FileStream stream = new FileStream(LocalFullPath, FileMode.Create);
stream.Write(bt, 0, bt.Length);
stream.Flush();
stream.Close();
return true;
}
else
{
return false;
}
}
catch (Exception ep)
{
ErrorMsg = ep.ToString();
throw ep;
}
} /** <summary>
/// 從FTP服務(wù)器下載文件,返回文件二進(jìn)制數(shù)據(jù)
/// </summary>
/// <param name="RemoteFileName">遠(yuǎn)程文件名</param>
public byte[] DownloadFile(string RemoteFileName)
{
try
{
if (!IsValidFileChars(RemoteFileName))
{
throw new Exception("非法文件名或目錄名!");
}
Response = Open(new Uri(this.Uri.ToString() + RemoteFileName), WebRequestMethods.Ftp.DownloadFile);
Stream Reader = Response.GetResponseStream(); MemoryStream mem = new MemoryStream(1024 * 500);
byte[] buffer = new byte[1024];
int bytesRead = 0;
int TotalByteRead = 0;
while (true)
{
bytesRead = Reader.Read(buffer, 0, buffer.Length);
TotalByteRead += bytesRead;
if (bytesRead == 0)
break;
mem.Write(buffer, 0, bytesRead);
}
if (mem.Length > 0)
{
return mem.ToArray();
}
else
{
return null;
}
}
catch (Exception ep)
{
ErrorMsg = ep.ToString();
throw ep;
}
} 74.寫圖像到剪切板 setClipboardImage
//using System.IO;
Bitmap?? bm?? =new?? Bitmap(filename);??
Clipboard.SetDataObject(bm,true); 75.從剪貼板復(fù)制圖像到窗體
??????????? if (Clipboard.ContainsImage())
??????????? {
?????????????? this.pictureBox1.Image =? Clipboard.GetImage();
??????????? }
剪貼板中的數(shù)據(jù)類型??
//using System.IO;
d.GetDataPresent(DataFormats.Bitmap)//(.Text?????? .Html)??
? Bitmap?? b?? =?? (Bitmap)d.GetData(DataFormat?? Bitmap)??
? 粘貼??
? IDataObject?? data?? =?? Clipboard.GetDataObjects;??
? if(Data.GetDataPresent(DataFormats.Bipmap))??
? {??
? b.Save(@"C:/mymap.bmp");??
? } 76.刪除文件夾下的所有文件且不刪除文件夾下的文件夾
//using System.IO; 77.XML遍歷結(jié)點(diǎn)屬性值
//using System.IO; 78.拷貝文件名復(fù)制文件
//添加引用System.Windows.Forms
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Windows.Forms;
namespace ConsoleApplication1
{
??? class Program
??? {
??????? static void Main(string[] args)
??????? {
??????????? IDataObject iData = Clipboard.GetDataObject();
??????????? string str;
??????????? // 將數(shù)據(jù)與指定的格式進(jìn)行匹配,返回bool
??????????? if (iData.GetDataPresent(DataFormats.Text))
??????????? {
??????????????? // GetData檢索數(shù)據(jù)并指定一個(gè)格式
??????????????? str = (string)iData.GetData(DataFormats.Text);
??????????????? File.Copy(str, @"C:/" + Path.GetFileName(str));
??????????? }
??????????? else
??????????? {
??????????????? MessageBox.Show("目前剪貼板中數(shù)據(jù)不可轉(zhuǎn)換為文本", "錯(cuò)誤");
??????????? }
??????? }
??? }
} 79.開源程序庫(kù)Xercesc-C++代碼工程中內(nèi)聯(lián)
using System;
using System.IO;
using System.Collections;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Text; public class InlineXercesc
{
??? private const String filter = ".cpp";
??? private ArrayList all = new ArrayList();
??? private Queue<String> fal2 = new Queue<String>();
??? private static String CurDir = Environment.CurrentDirectory;
??? public InlineXercesc(String lib)
??? {
??????? string SourceLib = "D://Desktop//大項(xiàng)目//xerces-c-3.0.1//src";
??????? string pattern = "include.*?" + lib + ".*?>"; // 第一個(gè)參數(shù)為需要匹配的字符串
??????? Match matcher = null;
??????? Queue<string> fal = new Queue<string>();
??????? DirectoryInfo delfile = new DirectoryInfo(CurDir);
??????? foreach (DirectoryInfo files2 in delfile.GetDirectories())
??????? {
??????????? String enumDir = CurDir + "//" + files2.Name + "//";
??????????? FileSystemInfo[] fileArr = files2.GetFileSystemInfos();
??????????? Queue<FileSystemInfo> folderList = new Queue<FileSystemInfo>(fileArr);
??????????? while (folderList.Count > 0)
??????????? {
??????????????? FileSystemInfo tmp = folderList.Dequeue();
??????????????? FileInfo f = tmp as FileInfo;
??????????????? if (f == null)
??????????????? {
??????????????????? DirectoryInfo d = tmp as DirectoryInfo;
??????????????????? foreach (FileSystemInfo fi in d.GetFileSystemInfos())
??????????????????? {
??????????????????????? folderList.Enqueue(fi);
??????????????????? }
??????????????? }
??????????????? else
??????????????? {
??????????????????? StreamReader br = null;
??????????????????? try
??????????????????? {
??????????????????????? br = new StreamReader(file);
??????????????????????? // 打開文件
??????????????????? }
??????????????????? catch (IOException e)
??????????????????? {
??????????????????????? // 沒(méi)有打開文件,則產(chǎn)生異常
??????????????????????? System.Console.Error.WriteLine("Cannot read '" + f.FullName + "': " + e.Message);
??????????????????????? continue;
??????????????????? }
??????????????????? String line;
??????????????????? StringBuilder sb = new StringBuilder(2048);
??????????????????? while ((line = br.ReadLine()) != null)
??????????????????? {
??????????????????????? // 讀入一行,直到文件結(jié)束
??????????????????????? matcher = Regex.Match(line, pattern); // 匹配字符串
??????????????????????? if (matcher.Success == true)
??????????????????????? {
??????????????????????????? // 如果有匹配的字符串,則輸出
??????????????????????????? sb.Append(line.Replace(line.Substring(line.IndexOf("<"), (line.LastIndexOf("/") + 1) - (line.IndexOf("<"))), "/"").Replace('>', '/"'));
??????????????????????????? line = line.Substring(line.IndexOf("<") + 1, (line.LastIndexOf(">")) - (line.IndexOf("<") + 1)).Replace('/', '//');
??????????????????????????? fal.Enqueue(SourceLib + "//" + line);
??????????????????????? }
??????????????????????? else
??????????????????????? {
??????????????????????????? sb.Append(line);
??????????????????????? }
??????????????????????? sb.Append("/r/n");
??????????????????? }
??????????????????? br.Close(); // 關(guān)閉文件
??????????????????? StreamWriter w = new StreamWriter(f.FullName);
??????????????????? w.WriteLine(sb.ToString());
??????????????????? w.Close();
??????????????? }
??????????? }
??????????? while (fal.Count > 0)
??????????? {
??????????????? String file = fal.Dequeue(); // 第2個(gè)參數(shù)開始,均為文件名。
??????????????? String targetPath = enumDir + file.Substring(file.LastIndexOf("//") + 1);
??????????????? if (targetPath.IndexOf('<') == -1 && !!File.Exists(targetPath))
??????????????? {
??????????????????? File.CreateText(targetPath);
??????????????????? StreamReader br = null;
??????????????????? String line;
??????????????????? try
??????????????????? {
??????????????????????? br = new StreamReader(new StreamReader(file).BaseStream, System.Text.Encoding.UTF7);
??????????????????????? // 打開文件
??????????????????? }
??????????????????? catch (IOException e)
??????????????????? {
??????????????????????? // 沒(méi)有打開文件,則產(chǎn)生異常
??????????????????????? //UPGRADE_TODO: 在 .NET 中,method 'java.lang.Throwable.getMessage' 的等效項(xiàng)可能返回不同的值。. 'ms-help://MS.VSCC.2003/commoner/redir/redirect.htm?keyword="jlca1043"'
??????????????????????? System.Console.Error.WriteLine("Cannot read '" + file + "': " + e.Message);
??????????????????????? continue;
??????????????????? }
??????????????????? StreamWriter fw = new StreamWriter(targetPath);
??????????????????? while ((line = br.ReadLine()) != null)
??????????????????? {
??????????????????????? // 讀入一行,直到文件結(jié)束
??????????????????????? matcher = Regex.Match(line, pattern); // 匹配字符串
??????????????????????? if (matcher.Success == true)
??????????????????????? {
??????????????????????????? // 如果有匹配的字符串,則輸出
??????????????????????????? fal.Enqueue(SourceLib + "//" + line.Substring(line.IndexOf("<") + 1, (line.LastIndexOf(">")) - (line.IndexOf("<") + 1)).Replace('/', '//'));
??????????????????????????? line = line.Replace(line.Substring(line.IndexOf("<"), (line.LastIndexOf("/") + 1) - (line.IndexOf("<"))), "/"");
??????????????????????????? line = line.Replace(">", "/"");
??????????????????????? }
??????????????????????? fw.Write(line + "/r/n");
??????????????????? }
??????????????????? fw.Flush();
??????????????????? fw.Close();
??????????????????? br.Close(); // 關(guān)閉文件
??????????????? }
??????????? }
??????????? Queue<string> folderListArr = new Queue<string>();
??????????? folderListArr.Enqueue(CurDir);
??????????? while (folderListArr.Count > 0)
??????????? {
??????????????? DirectoryInfo file = new DirectoryInfo(folderListArr.Dequeue());
??????????????? FileSystemInfo[] files = file.GetFileSystemInfos();
??????????????? for (int i = 0; i < files.Length; i++)
??????????????? {
??????????????????? DirectoryInfo ddd = files[i] as DirectoryInfo;
??????????????????? if (ddd != null)
??????????????????? {
??????????????????????? folderListArr.Enqueue(files[i].FullName);
??????????????????? }
??????????????????? else
??????????????????? {
??????????????????????? if (files[i].Extension == ".hpp")
??????????????????????? {
??????????????????????????? all.Add(files[i].FullName.Replace(".hpp", ".cpp"));
??????????????????????? }
??????????????????? }
??????????????? }
??????????? }
??????????? int count = 1;
??????????? while (count > 0)
??????????? {
??????????????? doSearch(SourceLib);
??????????????? all.Clear();
??????????????? while (fal2.Count > 0)
??????????????? {
??????????????????? String file1 = fal2.Dequeue(); // 第2個(gè)參數(shù)開始,均為文件名。
??????????????????? String targetPath = enumDir + file1.Substring(file1.LastIndexOf("//") + 1);
??????????????????? if (targetPath.IndexOf('<') == -1 && !File.Exists(targetPath))
??????????????????? {
File.CreateText(targetPath);
??????????????????????? StreamReader br = null;
??????????????????????? String line;
??????????????????????? try
??????????????????????? {
??????????????????????????? br = new StreamReader(file1);
??????????????????????????? // 打開文件
??????????????????????? }
??????????????????????? catch (IOException e)
??????????????????????? {
??????????????????????????? System.Console.Error.WriteLine("Cannot read '" + file1 + "': " + e.Message);
??????????????????????????? continue;
??????????????????????? }
??????????????????????? StreamWriter fw;
??????????????????????? try
??????????????????????? {
??????????????????????????? fw = new StreamWriter(targetPath);
??????????????????????????? while ((line = br.ReadLine()) != null)
??????????????????????????? {
??????????????????????????????? // 讀入一行,直到文件結(jié)束
??????????????????????????????? matcher = Regex.Match(line, pattern); // 匹配字符串
??????????????????????????????? if (matcher.Success == true)
??????????????????????????????? {
??????????????????????????????????? // 如果有匹配的字符串,則輸出
??????????????????????????????????? fal2.Enqueue(SourceLib + "//" + line.Substring(line.IndexOf('<') + 1, (line.LastIndexOf('>')) - (line.IndexOf('<') + 1)).Replace('/', '//'));
??????????????????????????????????? all.Add(fal2.Peek().Replace(".hpp", ".cpp"));
??????????????????????????????????? line = line.Replace(line.Substring(line.IndexOf('<'), (line.LastIndexOf('/') + 1) - (line.IndexOf('<'))), "/"");
??????????????????????????????????? line = line.Replace('>', '/"');
??????????????????????????????? }
??????????????????????????????? fw.Write(line + "/r/n");
??????????????????????????? }
??????????????????????????? fw.Flush();
??????????????????????????? fw.Close();
??????????????????????????? br.Close(); // 關(guān)閉文件
??????????????????????? }
??????????????????????? catch (IOException e)
??????????????????????? {
??????????????????????????? Console.Error.WriteLine(e.StackTrace);
??????????????????????? }
??????????????????? }
??????????????? }
??????????????? count = all.Count;
??????????? }
??????? }
??? } private void doSearch(string path)
??? {
??????? DirectoryInfo filepath = new DirectoryInfo(path);
??????? if (filepath.Exists)
??????? { FileSystemInfo[] fileArray = filepath.GetFileSystemInfos();
??????????? foreach (FileSystemInfo f in fileArray)
??????????? {
??????????????? DirectoryInfo dd = f as DirectoryInfo;
??????????????? if (dd != null)
??????????????? {
??????????????????? doSearch(f.FullName);
??????????????? }
??????????????? else
??????????????? {
??????????????????? FileInfo ff = f as FileInfo;
??????????????????? if (f.Name.IndexOf(filter) > -1)
??????????????????? {
??????????????????????? foreach (string file in all)
??????????????????????? {
??????????????????????????? if (file.IndexOf('<') == -1 && Path.GetFileName(file) == f.Name)
??????????????????????????? {
??????????????????????????????? fal2.Enqueue(f.FullName);
??????????????????????????? }
??????????????????????? }
??????????????????? }
??????????????? }
??????????? }
??????? }
??? }
??? static void Main(String[] args)
??? {
??????? new InlineXercesc("xercesc");
??????? FileInfo f = new FileInfo(CurDir + "//DetailCpp.cmd");
??????? StreamWriter w = f.CreateText();
??????? w.WriteLine("copy StdAfx.cpp+*.c+*.cpp " + CurDir
??????????????????????????????????????? + "//StdAfx.cpp&& del *.c && del *.cpp");
??????? w.Close();
??? }
} 80.提取包含頭文件列表
//InlineExt.cs
using System;
using System.IO;
using System.Collections;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Text; public class InlineExt
{
?private System.String CurDir = Environment.CurrentDirectory;
?public InlineExt()
?{
??????? string pattern = "include.*?/".*?.hpp/""; // 第一個(gè)參數(shù)為需要匹配的字符串
??????? Match matcher = null;
??FileInfo delfile = new System.IO.FileInfo(CurDir);
??FileInfo[] files2 = SupportClass.FileSupport.GetFiles(delfile);
??for (int l = 0; l < files2.Length; l++)
??{
???if (Directory.Exists(files2[l].FullName))
???{
??????????????? Queue<String> ts = new Queue<String>();
????FileInfo file = new FileInfo(Path.Combine(files2[l].FullName , "StdAfx.cpp"));
????StreamReader br = null;
????StreamWriter fw = null;
????String line;
????try
????{
?????br = new StreamReader(new StreamReader(file.FullName, System.Text.Encoding.Default).BaseStream, new System.IO.StreamReader(file.FullName, System.Text.Encoding.Default).CurrentEncoding); // 打開文件
?????while ((line = br.ReadLine()) != null)
?????{
??????????????????????? matcher = Regex.Match(line, pattern); // 匹配字符串
??????????????????????? if (matcher.Success == true)
??????{
???????// 如果有匹配的字符串,則輸出
???????ts.Enqueue(line.Substring(line.IndexOf('/"') + 1, (line.LastIndexOf('/"')) - (line.IndexOf('/"') + 1)));
??????}
?????}
?????FileInfo file2 = new FileInfo(Path.Combine(files2[l].FullName , "ReadMe.txt"));
?????if (File.Exists(file2.FullName))
?????{
??????????????????????? fw = new StreamWriter(file2.FullName, false, System.Text.Encoding.GetEncoding("GB2312")); //System.Text.Encoding.Default
??????????????????????? foreach(string it in ts)
??????{
???????fw.Write("#include /"" + it + "/"/r/n");
??????}
?????}
????}
????catch (IOException e)
????{
?????// 沒(méi)有打開文件,則產(chǎn)生異常
?????Console.Error.WriteLine("Cannot read '" + file + "': " + e.Message);
?????continue;
????}
????finally
????{
?????try
?????{
??????if (br != null)
???????br.Close();
??????if (fw != null)
???????fw.Close();
?????}
?????catch (IOException e)
?????{
??????Console.WriteLine(e.StackTrace);
?????}
????}
???}
??}
?}
?public static void? Main(System.String[] args)
?{
??new InlineExt();
?}
} //SupportClass.cs
using System;
/// <summary>
/// Contains conversion support elements such as classes, interfaces and static methods.
/// </summary>
public class SupportClass
{
?/// <summary>
?/// Writes the exception stack trace to the received stream
?/// </summary>
?/// <param name="throwable">Exception to obtain information from</param>
?/// <param name="stream">Output sream used to write to</param>
?public static void WriteStackTrace(System.Exception throwable, System.IO.TextWriter stream)
?{
??stream.Write(throwable.StackTrace);
??stream.Flush();
?}
?/*******************************/
?/// <summary>
?/// Represents the methods to support some operations over files.
?/// </summary>
?public class FileSupport
?{
??/// <summary>
??/// Creates a new empty file with the specified pathname.
??/// </summary>
??/// <param name="path">The abstract pathname of the file</param>
??/// <returns>True if the file does not exist and was succesfully created</returns>
??public static bool CreateNewFile(System.IO.FileInfo path)
??{
???if (path.Exists)
???{
????return false;
???}
???else
???{
??????????????? System.IO.FileStream createdFile = path.Create();
??????????????? createdFile.Close();
????return true;
???}
??}
??/// <summary>
??/// Compares the specified object with the specified path
??/// </summary>
??/// <param name="path">An abstract pathname to compare with</param>
??/// <param name="file">An object to compare with the given pathname</param>
??/// <returns>A value indicating a lexicographically comparison of the parameters</returns>
??public static int CompareTo(System.IO.FileInfo path, System.Object file)
??{
???if( file is System.IO.FileInfo )
???{
????System.IO.FileInfo fileInfo = (System.IO.FileInfo)file;
????return path.FullName.CompareTo( fileInfo.FullName );
???}
???else
???{
????throw new System.InvalidCastException();
???}
??}
??/// <summary>
??/// Returns an array of abstract pathnames representing the files and directories of the specified path.
??/// </summary>
??/// <param name="path">The abstract pathname to list it childs.</param>
??/// <returns>An array of abstract pathnames childs of the path specified or null if the path is not a directory</returns>
??public static System.IO.FileInfo[] GetFiles(System.IO.FileInfo path)
??{
???if ( (path.Attributes & System.IO.FileAttributes.Directory) > 0 )
???{????????????????
????String[] fullpathnames = System.IO.Directory.GetFileSystemEntries(path.FullName);
????System.IO.FileInfo[] result = new System.IO.FileInfo[fullpathnames.Length];
????for(int i = 0; i < result.Length ; i++)
?????result[i] = new System.IO.FileInfo(fullpathnames[i]);
????return result;
???}
???else return null;
??}
??/// <summary>
??/// Creates an instance of System.Uri class with the pech specified
??/// </summary>
??/// <param name="path">The abstract path name to create the Uri</param>
??/// <returns>A System.Uri instance constructed with the specified path</returns>
??public static System.Uri ToUri(System.IO.FileInfo path)
??{
???System.UriBuilder uri = new System.UriBuilder();
???uri.Path = path.FullName;
???uri.Host = String.Empty;
???uri.Scheme = System.Uri.UriSchemeFile;
???return uri.Uri;
??}
??/// <summary>
??/// Returns true if the file specified by the pathname is a hidden file.
??/// </summary>
??/// <param name="file">The abstract pathname of the file to test</param>
??/// <returns>True if the file is hidden, false otherwise</returns>
??public static bool IsHidden(System.IO.FileInfo file)
??{
???return ((file.Attributes & System.IO.FileAttributes.Hidden) > 0);
??}
??/// <summary>
??/// Sets the read-only property of the file to true.
??/// </summary>
??/// <param name="file">The abstract path name of the file to modify</param>
??public static bool SetReadOnly(System.IO.FileInfo file)
??{
???try
???{
????file.Attributes = file.Attributes | System.IO.FileAttributes.ReadOnly;
????return true;
???}
???catch (System.Exception exception)
???{
????String exceptionMessage = exception.Message;
????return false;
???}
??}
??/// <summary>
??/// Sets the last modified time of the specified file with the specified value.
??/// </summary>
??/// <param name="file">The file to change it last-modified time</param>
??/// <param name="date">Total number of miliseconds since January 1, 1970 (new last-modified time)</param>
??/// <returns>True if the operation succeeded, false otherwise</returns>
??public static bool SetLastModified(System.IO.FileInfo file, long date)
??{
???try
???{
????long valueConstant = (new System.DateTime(1969, 12, 31, 18, 0, 0)).Ticks;
????file.LastWriteTime = new System.DateTime( (date * 10000L) + valueConstant );
????return true;
???}
???catch (System.Exception exception)
???{
????String exceptionMessage = exception.Message;
????return false;
???}
??}
?}
} 81.剪貼扳轉(zhuǎn)換成打印字符
//using System.Windows.Forms;
??????????? IDataObject iData = Clipboard.GetDataObject();
??????????? string str;
??????????? // 將數(shù)據(jù)與指定的格式進(jìn)行匹配,返回bool
??????????? if (iData.GetDataPresent(DataFormats.Text))
??????????? {
??????????????? // GetData檢索數(shù)據(jù)并指定一個(gè)格式
??????????????? str = (string)iData.GetData(DataFormats.Text);
??????????????? string[] arr = str.Split("/r/n".ToCharArray());
??????????????? StringBuilder sb = new StringBuilder(1024);
??????????????? sb.Append("System.out.println(/"@echooff/");/r/n");
??????????????? foreach (string s in arr)
??????????????? {
??????????????????? if (s.Trim()!="")
??????????????????? {
??????????????????????? sb.Append("System.out.println(/"ECHO " + s.Replace("^", "^^").Replace("&", "^&").Replace(":", "^:").Replace(">", "^>").Replace("<", "^<").Replace("|", "^|").Replace("/"", "^/"").Replace(@"/", @"//").Replace("/"", "///"") + "/");");
??????????????????????? sb.Append("/r/n");
??????????????????? }
??????????????? }
??????????????? Clipboard.SetText(sb.ToString());
??????????? }
??????????? else
??????????? {
??????????????? MessageBox.Show("目前剪貼板中數(shù)據(jù)不可轉(zhuǎn)換為文本", "錯(cuò)誤");
??????????? } 82.把JButton或JTree組件寫到一個(gè)流中 83.注冊(cè)全局熱鍵
注冊(cè)全局熱鍵要用到Windows的API方法RegisterHotKey和UnregisterHotKey。
一、聲明注冊(cè)熱鍵方法 [DllImport("user32.dll")]
private static extern int RegisterHotKey(IntPtr hwnd, int id, int fsModifiers, int vk);
[DllImport("user32.dll")]
private static extern int UnregisterHotKey(IntPtr hwnd, int id);
int Space = 32; //熱鍵ID
private const int WM_HOTKEY = 0x312; //窗口消息-熱鍵
private const int WM_CREATE = 0x1; //窗口消息-創(chuàng)建
private const int WM_DESTROY = 0x2; //窗口消息-銷毀
private const int MOD_ALT = 0x1; //ALT
private const int MOD_CONTROL = 0x2; //CTRL
private const int MOD_SHIFT = 0x4; //SHIFT
private const int VK_SPACE = 0x20; //SPACE
二、注冊(cè)熱鍵方法 /// <summary>
/// 注冊(cè)熱鍵
/// </summary>
/// <param name="hwnd">窗口句柄</param>
/// <param name="hotKey_id">熱鍵ID</param>
/// <param name="fsModifiers">組合鍵</param>
/// <param name="vk">熱鍵</param>
private void RegKey(IntPtr hwnd, int hotKey_id, int fsModifiers, int vk)
{
bool result;
if (RegisterHotKey(hwnd,hotKey_id,fsModifiers,vk) == 0)
{
result = false;
}
else
{
result = true;
}
if (!result)
{
MessageBox.Show("注冊(cè)熱鍵失敗!");
}
} /// <summary>
/// 注銷熱鍵
/// </summary>
/// <param name="hwnd">窗口句柄</param>
/// <param name="hotKey_id">熱鍵ID</param>
private void UnRegKey(IntPtr hwnd, int hotKey_id)
{
UnregisterHotKey(hwnd,hotKey_id);
}
三、重寫WndProc方法,實(shí)現(xiàn)注冊(cè) protected override void WndProc(ref Message m)
{
base.WndProc(ref m);
switch(m.Msg)
{
case WM_HOTKEY: //窗口消息-熱鍵
switch(m.WParam.ToInt32())
{
case 32: //熱鍵ID
MessageBox.Show("Hot Key : Ctrl + Alt + Shift + Space");
break;
?? default:
?? break;
}
break;
case WM_CREATE: //窗口消息-創(chuàng)建
RegKey(Handle,Space,MOD_ALT | MOD_CONTROL | MOD_SHIFT,VK_SPACE); //注冊(cè)熱鍵
break;
case WM_DESTROY: //窗口消息-銷毀
UnRegKey(Handle,Space); //銷毀熱鍵
break;
default:
break;
}
}
附:虛擬鍵值表
{ Virtual Keys, Standard Set }
{$EXTERNALSYM VK_LBUTTON}
VK_LBUTTON = 1;
{$EXTERNALSYM VK_RBUTTON}
VK_RBUTTON = 2;
{$EXTERNALSYM VK_CANCEL}
VK_CANCEL = 3;
{$EXTERNALSYM VK_MBUTTON}
VK_MBUTTON = 4; { NOT contiguous with L & RBUTTON }
{$EXTERNALSYM VK_BACK}
VK_BACK = 8;
{$EXTERNALSYM VK_TAB}
VK_TAB = 9;
{$EXTERNALSYM VK_CLEAR}
VK_CLEAR = 12;
{$EXTERNALSYM VK_RETURN}
VK_RETURN = 13;
{$EXTERNALSYM VK_SHIFT}
VK_SHIFT = $10;
{$EXTERNALSYM VK_CONTROL}
VK_CONTROL = 17;
{$EXTERNALSYM VK_MENU}
VK_MENU = 18;
{$EXTERNALSYM VK_PAUSE}
VK_PAUSE = 19;
{$EXTERNALSYM VK_CAPITAL}
VK_CAPITAL = 20;
{$EXTERNALSYM VK_KANA }
VK_KANA = 21;
{$EXTERNALSYM VK_HANGUL }
VK_HANGUL = 21;
{$EXTERNALSYM VK_JUNJA }
VK_JUNJA = 23;
{$EXTERNALSYM VK_FINAL }
VK_FINAL = 24;
{$EXTERNALSYM VK_HANJA }
VK_HANJA = 25;
{$EXTERNALSYM VK_KANJI }
VK_KANJI = 25;
{$EXTERNALSYM VK_CONVERT }
VK_CONVERT = 28;
{$EXTERNALSYM VK_NONCONVERT }
VK_NONCONVERT = 29;
{$EXTERNALSYM VK_ACCEPT }
VK_ACCEPT = 30;
{$EXTERNALSYM VK_MODECHANGE }
VK_MODECHANGE = 31;
{$EXTERNALSYM VK_ESCAPE}
VK_ESCAPE = 27;
{$EXTERNALSYM VK_SPACE}
VK_SPACE = $20;
{$EXTERNALSYM VK_PRIOR}
VK_PRIOR = 33;
{$EXTERNALSYM VK_NEXT}
VK_NEXT = 34;
{$EXTERNALSYM VK_END}
VK_END = 35;
{$EXTERNALSYM VK_HOME}
VK_HOME = 36;
{$EXTERNALSYM VK_LEFT}
VK_LEFT = 37;
{$EXTERNALSYM VK_UP}
VK_UP = 38;
{$EXTERNALSYM VK_RIGHT}
VK_RIGHT = 39;
{$EXTERNALSYM VK_DOWN}
VK_DOWN = 40;
{$EXTERNALSYM VK_SELECT}
VK_SELECT = 41;
{$EXTERNALSYM VK_PRINT}
VK_PRINT = 42;
{$EXTERNALSYM VK_EXECUTE}
VK_EXECUTE = 43;
{$EXTERNALSYM VK_SNAPSHOT}
VK_SNAPSHOT = 44;
{$EXTERNALSYM VK_INSERT}
VK_INSERT = 45;
{$EXTERNALSYM VK_DELETE}
VK_DELETE = 46;
{$EXTERNALSYM VK_HELP}
VK_HELP = 47;
{ VK_0 thru VK_9 are the same as ASCII '0' thru '9' ($30 - $39) }
{ VK_A thru VK_Z are the same as ASCII 'A' thru 'Z' ($41 - $5A) }
{$EXTERNALSYM VK_LWIN}
VK_LWIN = 91;
{$EXTERNALSYM VK_RWIN}
VK_RWIN = 92;
{$EXTERNALSYM VK_APPS}
VK_APPS = 93;
{$EXTERNALSYM VK_NUMPAD0}
VK_NUMPAD0 = 96;
{$EXTERNALSYM VK_NUMPAD1}
VK_NUMPAD1 = 97;
{$EXTERNALSYM VK_NUMPAD2}
VK_NUMPAD2 = 98;
{$EXTERNALSYM VK_NUMPAD3}
VK_NUMPAD3 = 99;
{$EXTERNALSYM VK_NUMPAD4}
VK_NUMPAD4 = 100;
{$EXTERNALSYM VK_NUMPAD5}
VK_NUMPAD5 = 101;
{$EXTERNALSYM VK_NUMPAD6}
VK_NUMPAD6 = 102;
{$EXTERNALSYM VK_NUMPAD7}
VK_NUMPAD7 = 103;
{$EXTERNALSYM VK_NUMPAD8}
VK_NUMPAD8 = 104;
{$EXTERNALSYM VK_NUMPAD9}
VK_NUMPAD9 = 105;
{$EXTERNALSYM VK_MULTIPLY}
VK_MULTIPLY = 106;
{$EXTERNALSYM VK_ADD}
VK_ADD = 107;
{$EXTERNALSYM VK_SEPARATOR}
VK_SEPARATOR = 108;
{$EXTERNALSYM VK_SUBTRACT}
VK_SUBTRACT = 109;
{$EXTERNALSYM VK_DECIMAL}
VK_DECIMAL = 110;
{$EXTERNALSYM VK_DIVIDE}
VK_DIVIDE = 111;
{$EXTERNALSYM VK_F1}
VK_F1 = 112;
{$EXTERNALSYM VK_F2}
VK_F2 = 113;
{$EXTERNALSYM VK_F3}
VK_F3 = 114;
{$EXTERNALSYM VK_F4}
VK_F4 = 115;
{$EXTERNALSYM VK_F5}
VK_F5 = 116;
{$EXTERNALSYM VK_F6}
VK_F6 = 117;
{$EXTERNALSYM VK_F7}
VK_F7 = 118;
{$EXTERNALSYM VK_F8}
VK_F8 = 119;
{$EXTERNALSYM VK_F9}
VK_F9 = 120;
{$EXTERNALSYM VK_F10}
VK_F10 = 121;
{$EXTERNALSYM VK_F11}
VK_F11 = 122;
{$EXTERNALSYM VK_F12}
VK_F12 = 123;
{$EXTERNALSYM VK_F13}
VK_F13 = 124;
{$EXTERNALSYM VK_F14}
VK_F14 = 125;
{$EXTERNALSYM VK_F15}
VK_F15 = 126;
{$EXTERNALSYM VK_F16}
VK_F16 = 127;
{$EXTERNALSYM VK_F17}
VK_F17 = 128;
{$EXTERNALSYM VK_F18}
VK_F18 = 129;
{$EXTERNALSYM VK_F19}
VK_F19 = 130;
{$EXTERNALSYM VK_F20}
VK_F20 = 131;
{$EXTERNALSYM VK_F21}
VK_F21 = 132;
{$EXTERNALSYM VK_F22}
VK_F22 = 133;
{$EXTERNALSYM VK_F23}
VK_F23 = 134;
{$EXTERNALSYM VK_F24}
VK_F24 = 135;
{$EXTERNALSYM VK_NUMLOCK}
VK_NUMLOCK = 144;
{$EXTERNALSYM VK_SCROLL}
VK_SCROLL = 145;
{ VK_L & VK_R - left and right Alt, Ctrl and Shift virtual keys.
Used only as parameters to GetAsyncKeyState() and GetKeyState().
No other API or message will distinguish left and right keys in this way. }
{$EXTERNALSYM VK_LSHIFT}
VK_LSHIFT = 160; 84.菜單勾選/取消完成后關(guān)閉計(jì)算機(jī)
/*
using System.Runtime.InteropServices;
??????? [StructLayout(LayoutKind.Sequential, Pack = 1)]
??????? internal struct TokPriv1Luid
??????? {
??????????? public int Count;
??????????? public long Luid;
??????????? public int Attr;
??????? }
??????? [DllImport("kernel32.dll", ExactSpelling = true)]
??????? internal static extern IntPtr GetCurrentProcess();
?
??????? [DllImport("advapi32.dll", ExactSpelling = true, SetLastError = true)]
??????? internal static extern bool OpenProcessToken(IntPtr h, int acc, ref?? IntPtr phtok);
?
??????? [DllImport("advapi32.dll", SetLastError = true)]
??????? internal static extern bool LookupPrivilegeValue(string host, string name, ref?? long pluid);
?
??????? [DllImport("advapi32.dll", ExactSpelling = true, SetLastError = true)]
??????? internal static extern bool AdjustTokenPrivileges(IntPtr htok, bool disall, ref TokPriv1Luid newst, int len, IntPtr prev, IntPtr relen);
?
??????? [DllImport("user32.dll", ExactSpelling = true, SetLastError = true)]
??????? internal static extern bool ExitWindowsEx(int flg, int rea);
?
??????? internal const int SE_PRIVILEGE_ENABLED = 0x00000002;
??????? internal const int TOKEN_QUERY = 0x00000008;
??????? internal const int TOKEN_ADJUST_PRIVILEGES = 0x00000020;
??????? internal const string SE_SHUTDOWN_NAME = "SeShutdownPrivilege";
??????? internal const int EWX_SHUTDOWN = 0x00000001;
??????? internal const int EWX_POWEROFF = 0x00000008;
??????? internal const int EWX_FORCE = 0x00000004;
??????? internal const int EWX_FORCEIFHUNG = 0x00000010;
*/
int flg=EWX_FORCE | EWX_POWEROFF;
??????????? bool ok;
??????????? TokPriv1Luid tp;
??????????? IntPtr hproc = GetCurrentProcess();
??????????? IntPtr htok = IntPtr.Zero;
??????????? k = OpenProcessToken(hproc, TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, ref?? htok);
??????????? tp.Count = 1;
??????????? tp.Luid = 0;
??????????? tp.Attr = SE_PRIVILEGE_ENABLED;
??????????? k = LookupPrivilegeValue(null, SE_SHUTDOWN_NAME, ref?? tp.Luid);
??????????? k = AdjustTokenPrivileges(htok, false, ref?? tp, 0, IntPtr.Zero, IntPtr.Zero);
??????????? k = ExitWindowsEx(flg, 0); 85.菜單勾選/取消完成后重新啟動(dòng)計(jì)算機(jī)
/*
using System.Runtime.InteropServices;
??????? [StructLayout(LayoutKind.Sequential, Pack = 1)]
??????? internal struct TokPriv1Luid
??????? {
??????????? public int Count;
??????????? public long Luid;
??????????? public int Attr;
??????? }
??????? [DllImport("kernel32.dll", ExactSpelling = true)]
??????? internal static extern IntPtr GetCurrentProcess();
?
??????? [DllImport("advapi32.dll", ExactSpelling = true, SetLastError = true)]
??????? internal static extern bool OpenProcessToken(IntPtr h, int acc, ref?? IntPtr phtok);
?
??????? [DllImport("advapi32.dll", SetLastError = true)]
??????? internal static extern bool LookupPrivilegeValue(string host, string name, ref?? long pluid);
?
??????? [DllImport("advapi32.dll", ExactSpelling = true, SetLastError = true)]
??????? internal static extern bool AdjustTokenPrivileges(IntPtr htok, bool disall, ref TokPriv1Luid newst, int len, IntPtr prev, IntPtr relen);
?
??????? [DllImport("user32.dll", ExactSpelling = true, SetLastError = true)]
??????? internal static extern bool ExitWindowsEx(int flg, int rea);
?
??????? internal const int SE_PRIVILEGE_ENABLED = 0x00000002;
??????? internal const int TOKEN_QUERY = 0x00000008;
??????? internal const int TOKEN_ADJUST_PRIVILEGES = 0x00000020;
??????? internal const string SE_SHUTDOWN_NAME = "SeShutdownPrivilege";
??????? internal const int EWX_SHUTDOWN = 0x00000001;
??????? internal const int EWX_REBOOT = 0x00000002;
??????? internal const int EWX_FORCE = 0x00000004;
??????? internal const int EWX_FORCEIFHUNG = 0x00000010;
*/
int flg=EWX_FORCE | EWX_REBOOT;
??????????? bool ok;
??????????? TokPriv1Luid tp;
??????????? IntPtr hproc = GetCurrentProcess();
??????????? IntPtr htok = IntPtr.Zero;
??????????? k = OpenProcessToken(hproc, TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, ref?? htok);
??????????? tp.Count = 1;
??????????? tp.Luid = 0;
??????????? tp.Attr = SE_PRIVILEGE_ENABLED;
??????????? k = LookupPrivilegeValue(null, SE_SHUTDOWN_NAME, ref?? tp.Luid);
??????????? k = AdjustTokenPrivileges(htok, false, ref?? tp, 0, IntPtr.Zero, IntPtr.Zero);
??????????? k = ExitWindowsEx(flg, 0); 86.菜單勾選/取消完成后注銷計(jì)算機(jī)
/*
using System.Runtime.InteropServices;
??????? [StructLayout(LayoutKind.Sequential, Pack = 1)]
??????? internal struct TokPriv1Luid
??????? {
??????????? public int Count;
??????????? public long Luid;
??????????? public int Attr;
??????? }
??????? [DllImport("kernel32.dll", ExactSpelling = true)]
??????? internal static extern IntPtr GetCurrentProcess();
?
??????? [DllImport("advapi32.dll", ExactSpelling = true, SetLastError = true)]
??????? internal static extern bool OpenProcessToken(IntPtr h, int acc, ref?? IntPtr phtok);
?
??????? [DllImport("advapi32.dll", SetLastError = true)]
??????? internal static extern bool LookupPrivilegeValue(string host, string name, ref?? long pluid);
?
??????? [DllImport("advapi32.dll", ExactSpelling = true, SetLastError = true)]
??????? internal static extern bool AdjustTokenPrivileges(IntPtr htok, bool disall, ref TokPriv1Luid newst, int len, IntPtr prev, IntPtr relen);
?
??????? [DllImport("user32.dll", ExactSpelling = true, SetLastError = true)]
??????? internal static extern bool ExitWindowsEx(int flg, int rea);
?
??????? internal const int SE_PRIVILEGE_ENABLED = 0x00000002;
??????? internal const int TOKEN_QUERY = 0x00000008;
??????? internal const int TOKEN_ADJUST_PRIVILEGES = 0x00000020;
??????? internal const string SE_SHUTDOWN_NAME = "SeShutdownPrivilege";
??????? internal const int EWX_SHUTDOWN = 0x00000001;
??????? internal const int EWX_LOGOFF = 0x00000000;
??????? internal const int EWX_FORCE = 0x00000004;
??????? internal const int EWX_FORCEIFHUNG = 0x00000010;
*/
int flg=EWX_FORCE | EWX_LOGOFF;
??????????? bool ok;
??????????? TokPriv1Luid tp;
??????????? IntPtr hproc = GetCurrentProcess();
??????????? IntPtr htok = IntPtr.Zero;
??????????? k = OpenProcessToken(hproc, TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, ref?? htok);
??????????? tp.Count = 1;
??????????? tp.Luid = 0;
??????????? tp.Attr = SE_PRIVILEGE_ENABLED;
??????????? k = LookupPrivilegeValue(null, SE_SHUTDOWN_NAME, ref?? tp.Luid);
??????????? k = AdjustTokenPrivileges(htok, false, ref?? tp, 0, IntPtr.Zero, IntPtr.Zero);
??????????? k = ExitWindowsEx(flg, 0); 87.菜單勾選/取消開機(jī)自啟動(dòng)程序
?public void RunWhenStart(bool Started)
??????? {
string name=%%1;
string path=Application.ExecutablePath;
??????????? RegistryKey HKLM = Registry.LocalMachine;
??????????? RegistryKey Run = HKLM.CreateSubKey(@"SOFTWARE/Microsoft/Windows/CurrentVersion/Run/");
??????????? if (Started == true)
??????????? {
?????????????? try
??????????????? {
??????????????????? Run.SetValue(name, path);
??????????????????? HKLM.Close();
??????????????? }
??????????????? catch (Exception)
??????????????? {
??????????????????? MessageBox.Show("注冊(cè)表修改錯(cuò)誤(開機(jī)自啟未實(shí)現(xiàn))");
????????????? }
??????????? }
??????????? else
??????????? {
??????????????? try
??????????????? {
??????????????????? if (Run.GetValue(name) != null)
?????????????????? {
??????????????????????? Run.DeleteValue(name);
????????????????????? HKLM.Close();
?????????????????? }
??????????????????? else
??????????????????????? return;
??????????????? }
?????????????? catch (Exception e)
?????????????? {
?????????????????? //ExceptionTransact.WriteErrLog(base.GetType().Name, e.Message);
MessageBox(e.Message);
?????????????? }
?????????? }
??????? } 88.菜單勾選/取消自動(dòng)登錄系統(tǒng) 89.模擬鍵盤輸入字符串
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using KenZhang.Free.VirtualInput;
using System.Runtime.InteropServices; namespace VirtualInputDemo
{
??? public partial class Form1 : Form
??? {
??????? public const int INPUT_KEYBOARD = 1;
??????? public const int KEYEVENTF_KEYUP = 0x0002;
??????? [DllImport("user32.dll")]
??????? public static extern UInt32 SendInput(UInt32 nInputs, ref INPUT pInputs, int cbSize);
??????? [StructLayout(LayoutKind.Explicit)]
??????? public struct INPUT
??????? {
??????????? [FieldOffset(0)]
??????????? public Int32 type;
??????????? [FieldOffset(4)]
??????????? public KEYBDINPUT ki;
??????????? [FieldOffset(4)]
??????????? public MOUSEINPUT mi;
??????????? [FieldOffset(4)]
??????????? public HARDWAREINPUT hi;
??????? }
??????? [StructLayout(LayoutKind.Sequential)]
??????? public struct MOUSEINPUT
??????? {
??????????? public Int32 dx;
??????????? public Int32 dy;
??????????? public Int32 mouseData;
??????????? public Int32 dwFlags;
??????????? public Int32 time;
??????????? public IntPtr dwExtraInfo;
??????? }
??????? [StructLayout(LayoutKind.Sequential)]
??????? public struct KEYBDINPUT
??????? {
??????????? public Int16 wVk;
??????????? public Int16 wScan;
??????????? public Int32 dwFlags;
??????????? public Int32 time;
??????????? public IntPtr dwExtraInfo;
??????? }
??????? [StructLayout(LayoutKind.Sequential)]
??????? public struct HARDWAREINPUT
??????? {
??????????? public Int32 uMsg;
??????????? public Int16 wParamL;
??????????? public Int16 wParamH;
??????? } public Form1()
??????? {
??????????? InitializeComponent();
??????? } private void button1_Click(object sender, EventArgs e)
??????? {
??????????? textBox1.Focus();
??????????? INPUT inDown = new INPUT();
??????????? inDown.type = INPUT_KEYBOARD;
??????????? inDown.ki.wVk = (int)Keys.A;
??????????? //INPUT inUp = new INPUT();
??????????? //inUp.type = INPUT_KEYBOARD;
??????????? //inUp.ki.wVk = (int)Keys.A;
??????????? //inUp.ki.dwFlags = KEYEVENTF_KEYUP;
??????????? SendInput(1, ref? inDown, Marshal.SizeOf(inDown));
??????????? //SendInput(1, ref? inUp, Marshal.SizeOf(inUp));
??????? }
??? }
} 90.提取PDF文件中的文本
xpdf
?? public partial class Form1 : Form
??? {
??????? public OpenFileDialog fdlg = new OpenFileDialog();//打開文件對(duì)話框
??????? public string filename; public Form1()
??????? {
??????????? InitializeComponent();
??????? } private void button1_Click(object sender, EventArgs e)
??????? {
??????????? ofdlg.Filter = "pdf文件(*.pdf)|*.pdf";//選擇pdf文件
??????????? if (ofdlg.ShowDialog() == DialogResult.OK)
??????????? {
??????????????? filename = string.Format("{0}", ofdlg.FileName);
??????????? }???????????
??????? }
      //傳送打開文件對(duì)話框中得到的filename來(lái)做為外部程序的參數(shù)來(lái)做轉(zhuǎn)化
??????? private void button2_Click(object sender, EventArgs e)
??????? {
??????????? Process p = new Process();
??????????? string path = "pdftotext.exe"; //進(jìn)程啟用外部程序
???????????                 //這個(gè)exe我放在debug文件夾下面???????
??????????? p.StartInfo.FileName = path;
??????????? p.StartInfo.Arguments = string.Format( filename + " -");//很怪異的一行
??????????                        //參數(shù)“-”表示可以得到輸出流
??????????? p.StartInfo.UseShellExecute = false;
??????????? p.StartInfo.RedirectStandardInput = true;
??????????? p.StartInfo.RedirectStandardOutput = true;
??????????? p.StartInfo.RedirectStandardError = true;
??????????? p.StartInfo.CreateNoWindow = true;
???????????
??????????? p.Start();
??????????? string s = p.StandardOutput.ReadToEnd();//得到pdf文檔中的文本內(nèi)容
??????????? textBox1.Text = s;
??????????? p.Close();
??????? }
??? }
}
上面的程序運(yùn)行后,如果是在Debug文件夾下的pdf文件就可以得到輸出,可是如果在打開文件對(duì)話框中打開我桌面上的一個(gè)pdf如:@"d:/我的文檔/test.pdf",輸出就會(huì)是空,但是如果把上面那怪異的一行改為:
C# code
p.StartInfo.Arguments = string.Format( @"d:/我的文檔/test.pdf" + " -");
程序就又會(huì)得到輸出。
呵呵,謝謝樓上的兄臺(tái),下載的xpdf中xpdftotext.exe用到的配置文件xpdfrc需要手動(dòng)配置,我如果把那些字體啊,什么的映射成絕對(duì)路徑下的文件,就不會(huì)出現(xiàn)上面的問(wèn)題,但是我把配置文件中的路徑改成了相對(duì)路徑,于是就出現(xiàn)了上面的問(wèn)題了,看兄臺(tái)能夠很輕易的就運(yùn)行成功,一定是做過(guò)很多代碼的,這里還得勞煩兄臺(tái)再給看一下,幫下忙,能遇到一個(gè)大神不容易,大神可不能吝嗇啊,先謝過(guò)了哈 91.操作內(nèi)存映射文件
/*
using System.Runtime.InteropServices;
[DllImport("kernel32.dll")]
public static extern IntPtr CreateFileMapping(IntPtr hFile,
??? IntPtr lpFileMappingAttributes, uint flProtect,
??? uint dwMaximumSizeHigh,
??? uint dwMaximumSizeLow, string lpName); [DllImport("kernel32.dll")]
public static extern IntPtr MapViewOfFile(IntPtr hFileMappingObject, uint
??? dwDesiredAccess, uint dwFileOffsetHigh, uint dwFileOffsetLow,
??? IntPtr dwNumberOfBytesToMap); [DllImport("kernel32.dll")]
public static extern bool UnmapViewOfFile(IntPtr lpBaseAddress); [DllImport("kernel32.dll")]
public static extern bool CloseHandle(IntPtr hObject); [DllImport("kernel32.dll")]
public static extern IntPtr CreateFile(string lpFileName,
??? int dwDesiredAccess, FileShare dwShareMode, IntPtr securityAttrs,
??? FileMode dwCreationDisposition, int dwFlagsAndAttributes, IntPtr hTemplateFile); [DllImport("kernel32.dll")]
public static extern uint GetFileSize(IntPtr hFile, IntPtr lpFileSizeHigh); public const int GENERIC_READ = -2147483648; //0x80000000
public const int GENERIC_WRITE = 0x40000000;
public const int GENERIC_EXECUTE = 0x20000000;
public const int GENERIC_ALL = 0x10000000;
public const int FILE_ATTRIBUTE_NORMAL = 0x80;
public const int FILE_FLAG_SEQUENTIAL_SCAN = 0x8000000;
public const int INVALID_HANDLE_VALUE = -1; public const int PAGE_NOACCESS = 1;
public const int PAGE_READONLY = 2;
public const int PAGE_READWRITE = 4; public const int FILE_MAP_COPY = 1;
public const int FILE_MAP_WRITE = 2;
public const int FILE_MAP_READ = 4;
*/
??? IntPtr vFileHandle = CreateFile(@"c:/temp/temp.txt",
??????? GENERIC_READ | GENERIC_WRITE, FileShare.Read | FileShare.Write,
??????? IntPtr.Zero,? FileMode.Open,
??????? FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, IntPtr.Zero);
??? if (INVALID_HANDLE_VALUE != (int)vFileHandle)
??? {
??????? IntPtr vMappingHandle = CreateFileMapping(
??????????? vFileHandle, IntPtr.Zero, PAGE_READWRITE, 0, 0, "~MappingTemp");
??????? if (vMappingHandle != IntPtr.Zero)
??????? {
??????????? IntPtr vHead = MapViewOfFile(vMappingHandle,
??????????????? FILE_MAP_COPY | FILE_MAP_READ | FILE_MAP_WRITE, 0, 0, IntPtr.Zero);
??????????? if (vHead != IntPtr.Zero)
??????????? {
??????????????? uint vSize = GetFileSize(vFileHandle, IntPtr.Zero);
??????????????? for (int i = 0; i <= vSize / 2; i++)
??????????????? {
??????????????????? byte vTemp = Marshal.ReadByte((IntPtr)((int)vHead + i));
??????????????????? Marshal.WriteByte((IntPtr)((int)vHead + i),
??????????????????????? Marshal.ReadByte((IntPtr)((int)vHead + vSize - i - 1)));
??????????????????? Marshal.WriteByte((IntPtr)((int)vHead + vSize - i - 1), vTemp);
??????????????? }
??????????????? UnmapViewOfFile(vHead);
??????????? }
??????????? CloseHandle(vMappingHandle);
??????? }
??????? CloseHandle(vFileHandle);
??? } 92.重定向windows控制臺(tái)程序的輸出信息
????? delegate void dReadLine(string strLine);
??????? private void excuteCommand(string strFile, string args, dReadLine onReadLine)
??????? {
???????????? System.Diagnostics.Process p = new System.Diagnostics.Process();
???????????? p.StartInfo = new System.Diagnostics.ProcessStartInfo();
???????????? p.StartInfo.FileName = strFile;
???????????? p.StartInfo.Arguments = args;
???????????? p.StartInfo.WindowStyle. = System.Diagnostics.ProcessWindowStyle.Hidden;
???????????? p.StartInfo.RedirectStandardOutput = true;
???????????? p.StartInfo.UseShellExecute = false;
???????????? p.StartInfo.CreateNoWindow = true;
???????????? p.Start();
???????????? System.IO.StreamReader reader = p.StandardOutput;//截取輸出流
??????????? string line = reader.ReadLine();//每次讀取一行
??????????? while (!reader.EndOfStream)
??????????? {
???????????????? onReadLine(line);
???????????????? line = reader.ReadLine();
???????????? }
???????????? p.WaitForExit();
???????? }
??????? private void PrintMessage(string strLine)
??????? {
??????????? this.textBox1.Text += strLine + " ";
???????? }
???????????? excuteCommand("ipconfig", "", new dReadLine(PrintMessage)); 93.接受郵件 94.發(fā)送郵件
using System;
using System.Net.Sockets;
using System.Net;
using System.Security.Cryptography;
using System.IO;
// 類名:Pop3
// 功能:接收電子郵件 namespace ZTSX.Email
{
/// <summary>
/// Pop3 的摘要說(shuō)明。
/// </summary>
public class Pop3
{
private string mstrHost???? = null; //主機(jī)名稱或IP地址
private int mintPort???? = 110; //主機(jī)的端口號(hào)(默認(rèn)為110)
private TcpClient mtcpClient?? = null; //客戶端
private NetworkStream mnetStream = null; //網(wǎng)絡(luò)基礎(chǔ)數(shù)據(jù)流
private StreamReader m_stmReader = null; //讀取字節(jié)流
private string mstrStatMessage?? = null; //執(zhí)行STAT命令后得到的消息(從中得到郵件數(shù)) /// <summary>
/// 構(gòu)造函數(shù)
/// </summary>
/// <remarks>一個(gè)郵件接收對(duì)象</remarks>
public Pop3()
{
} /// <summary>
/// 構(gòu)造函數(shù)
/// </summary>
/// <param name="host">主機(jī)名稱或IP地址</param>
public Pop3(string host)
{
?? mstrHost = host;
} /// <summary>
/// 構(gòu)造函數(shù)
/// </summary>
/// <param name="host">主機(jī)名稱或IP地址</param>
/// <param name="port">主機(jī)的端口號(hào)</param>
/// <remarks>一個(gè)郵件接收對(duì)象</remarks>
public Pop3(string host,int port)
{
?? mstrHost = host;
?? mintPort = port;
} #region 屬性 /// <summary>
/// 主機(jī)名稱或IP地址
/// </summary>
/// <remarks>主機(jī)名稱或IP地址</remarks>
public string HostName
{
?? get{return mstrHost;}
?? set{mstrHost = value;}
} /// <summary>
/// 主機(jī)的端口號(hào)
/// </summary>
/// <remarks>主機(jī)的端口號(hào)</remarks>
public int Port
{
?? get{return mintPort;}
?? set{mintPort = value;}
} #endregion #region 私有方法 /// <summary>
/// 向網(wǎng)絡(luò)訪問(wèn)的基礎(chǔ)數(shù)據(jù)流中寫數(shù)據(jù)(發(fā)送命令碼)
/// </summary>
/// <param name="netStream">可以用于網(wǎng)絡(luò)訪問(wèn)的基礎(chǔ)數(shù)據(jù)流</param>
/// <param name="command">命令行</param>
/// <remarks>向網(wǎng)絡(luò)訪問(wèn)的基礎(chǔ)數(shù)據(jù)流中寫數(shù)據(jù)(發(fā)送命令碼)</remarks>
private void WriteToNetStream(ref NetworkStream netStream,String command)
{
?? string strToSend = command + "/r/n";
?? byte[] arrayToSend = System.Text.Encoding.ASCII.GetBytes(strToSend.ToCharArray());
????? netStream.Write(arrayToSend,0,arrayToSend.Length);
} /// <summary>
/// 檢查命令行結(jié)果是否正確
/// </summary>
/// <param name="message">命令行的執(zhí)行結(jié)果</param>
/// <param name="check">正確標(biāo)志</param>
/// <returns>
/// 類型:布爾
/// 內(nèi)容:true表示沒(méi)有錯(cuò)誤,false為有錯(cuò)誤
/// </returns>
/// <remarks>檢查命令行結(jié)果是否有錯(cuò)誤</remarks>
private bool CheckCorrect(string message,string check)
{
?? if(message.IndexOf(check) == -1)
??? return false;
?? else
??? return true;
} /// <summary>
/// 郵箱中的未讀郵件數(shù)
/// </summary>
/// <param name="message">執(zhí)行完LIST命令后的結(jié)果</param>
/// <returns>
/// 類型:整型
/// 內(nèi)容:郵箱中的未讀郵件數(shù)
/// </returns>
/// <remarks>郵箱中的未讀郵件數(shù)</remarks>
private int GetMailNumber(string message)
{
?? string[] strMessage = message.Split(' ');
?? return Int32.Parse(strMessage[1]);
} /// <summary>
/// 得到經(jīng)過(guò)解碼后的郵件的內(nèi)容
/// </summary>
/// <param name="encodingContent">解碼前的郵件的內(nèi)容</param>
/// <returns>
/// 類型:字符串
/// 內(nèi)容:解碼后的郵件的內(nèi)容
/// </returns>
/// <remarks>得到解碼后的郵件的內(nèi)容</remarks>
private string GetDecodeMailContent(string encodingContent)
{
?? string strContent = encodingContent.Trim();
?? string strEncode = null; int iStart = strContent.IndexOf("Base64");
?? if(iStart == -1)
??? throw new Pop3Exception("郵件內(nèi)容不是Base64編碼,請(qǐng)檢查");
?? else
?? {
??? strEncode = strContent.Substring(iStart + 6,strContent.Length - iStart - 6);
??? try
??? {
???? return SX.Encode.TransformToString(strEncode);
??? }
??? catch(SX.EncodeException exc)
??? {
???? throw new Pop3Exception(exc.Message);
??? }
?? }
} #endregion /// <summary>
/// 與主機(jī)建立連接
/// </summary>
/// <returns>
/// 類型:布爾
/// 內(nèi)容:連接結(jié)果(true為連接成功,false為連接失敗)
/// </returns>
/// <remarks>與主機(jī)建立連接</remarks>
public bool Connect()
{
?? if(mstrHost == null)
??? throw new Exception("請(qǐng)?zhí)峁㏒MTP主機(jī)名稱或IP地址!");
?? if(mintPort == 0)
??? throw new Exception("請(qǐng)?zhí)峁㏒MTP主機(jī)的端口號(hào)");
?? try
?? {
??? mtcpClient = new TcpClient(mstrHost,mintPort);
??? mnetStream = mtcpClient.GetStream();
??? m_stmReader = new StreamReader(mtcpClient.GetStream()); string strMessage = m_stmReader.ReadLine();
??? if(CheckCorrect(strMessage,"+OK") == true)
???? return true;
??? else
???? return false;
?? }
?? catch(SocketException exc)
?? {
??? throw new Pop3Exception(exc.ToString());
?? }
?? catch(NullReferenceException exc)
?? {
??? throw new Pop3Exception(exc.ToString());
?? }
} #region Pop3命令 /// <summary>
/// 執(zhí)行Pop3命令,并檢查執(zhí)行的結(jié)果
/// </summary>
/// <param name="command">Pop3命令行</param>
/// <returns>
/// 類型:字符串
/// 內(nèi)容:Pop3命令的執(zhí)行結(jié)果
/// </returns>
private string ExecuteCommand(string command)
{
?? string strMessage = null; //執(zhí)行Pop3命令后返回的消息 try
?? {
??? //發(fā)送命令
??? WriteToNetStream(ref mnetStream,command); //讀取多行
??? if(command.Substring(0,4).Equals("LIST") || command.Substring(0,4).Equals("RETR") || command.Substring(0,4).Equals("UIDL")) //記錄STAT后的消息(其中包含郵件數(shù))
??? {
???? strMessage = ReadMultiLine(); if(command.Equals("LIST")) //記錄LIST后的消息(其中包含郵件數(shù))
????? mstrStatMessage = strMessage;
??? }
???? //讀取單行
??? else
???? strMessage = m_stmReader.ReadLine(); //判斷執(zhí)行結(jié)果是否正確
??? if(CheckCorrect(strMessage,"+OK"))
???? return strMessage;
??? else
???? return "Error";
?? }
?? catch(IOException exc)
?? {
??? throw new Pop3Exception(exc.ToString());
?? }
} /// <summary>
/// 在Pop3命令中,LIST、RETR和UIDL命令的結(jié)果要返回多行,以點(diǎn)號(hào)(.)結(jié)尾,
/// 所以如果想得到正確的結(jié)果,必須讀取多行
/// </summary>
/// <returns>
/// 類型:字符串
/// 內(nèi)容:執(zhí)行Pop3命令后的結(jié)果
/// </returns>
private string ReadMultiLine()
{
?? string strMessage = m_stmReader.ReadLine();
?? string strTemp = null;
?? while(strMessage != ".")
?? {
??? strTemp = strTemp + strMessage;
??? strMessage = m_stmReader.ReadLine();
?? }
?? return strTemp;
} //USER命令
private string USER(string user)
{
?? return ExecuteCommand("USER " + user) + "/r/n";
} //PASS命令
private string PASS(string password)
{
?? return ExecuteCommand("PASS " + password) + "/r/n";
} //LIST命令
private string LIST()
{
?? return ExecuteCommand("LIST") + "/r/n";
} //UIDL命令
private string UIDL()
{
?? return ExecuteCommand("UIDL") + "/r/n";
} //NOOP命令
private string NOOP()
{
?? return ExecuteCommand("NOOP") + "/r/n";
} //STAT命令
private string STAT()
{
?? return ExecuteCommand("STAT") + "/r/n";
} //RETR命令
private string RETR(int number)
{
?? return ExecuteCommand("RETR " + number.ToString()) + "/r/n";
} //DELE命令
private string DELE(int number)
{
?? return ExecuteCommand("DELE " + number.ToString()) + "/r/n";
} //QUIT命令
private void Quit()
{
?? WriteToNetStream(ref mnetStream,"QUIT");
} /// <summary>
/// 收取郵件
/// </summary>
/// <param name="user">用戶名</param>
/// <param name="password">口令</param>
/// <returns>
/// 類型:字符串?dāng)?shù)組
/// 內(nèi)容:解碼前的郵件內(nèi)容
/// </returns>
private string[] ReceiveMail(string user,string password)
{
?? int iMailNumber = 0; //郵件數(shù) if(USER(user).Equals("Error"))
??? throw new Pop3Exception("用戶名不正確!");
?? if(PASS(password).Equals("Error"))
??? throw new Pop3Exception("用戶口令不正確!");
?? if(STAT().Equals("Error"))
??? throw new Pop3Exception("準(zhǔn)備接收郵件時(shí)發(fā)生錯(cuò)誤!");
?? if(LIST().Equals("Error"))
??? throw new Pop3Exception("得到郵件列表時(shí)發(fā)生錯(cuò)誤!"); try
?? {
??? iMailNumber = GetMailNumber(mstrStatMessage); //沒(méi)有新郵件
??? if(iMailNumber == 0)
???? return null;
??? else
??? {
???? string[] strMailContent = new string[iMailNumber]; for(int i = 1 ; i <= iMailNumber ; i++)
???? {
????? //讀取郵件內(nèi)容
????? strMailContent[i - 1] = GetDecodeMailContent(RETR(i));
???? }
???? return strMailContent;
??? }
?? }
?? catch(Pop3Exception exc)
?? {
??? throw new Pop3Exception(exc.ToString());
?? }
} #endregion
/// <summary>
/// 收取郵件????
/// </summary>
/// <param name="user">用戶名</param>
/// <param name="password">口令</param>
/// <returns>
/// 類型:字符串?dāng)?shù)組
/// 內(nèi)容:解碼前的郵件內(nèi)容
/// </returns>
///<remarks>收取郵箱中的未讀郵件</remarks>
public string[] Receive(string user,string password)
{
?? try
?? {
??? return ReceiveMail(user,password);
?? }
?? catch(Pop3Exception exc)
?? {
??? throw new Pop3Exception(exc.ToString());
?? }
} /// <summary>
/// 斷開所有與服務(wù)器的會(huì)話
/// </summary>
/// <remarks>斷開所有與服務(wù)器的會(huì)話</remarks>
public void DisConnect()
{
?? try
?? {
??? Quit();
??? if(m_stmReader != null)
???? m_stmReader.Close();
??? if(mnetStream != null)
???? mnetStream.Close();
??? if(mtcpClient != null)
???? mtcpClient.Close();
?? }
?? catch(SocketException exc)
?? {
??? throw new Pop3Exception(exc.ToString());
?? }
} /// <summary>
/// 刪除郵件
/// </summary>
/// <param name="number">郵件號(hào)</param>
public void DeleteMail(int number)
{
?? //刪除郵件
?? int iMailNumber = number + 1;
?? if(DELE(iMailNumber).Equals("Error"))
??? throw new Pop3Exception("刪除第" + iMailNumber.ToString() + "時(shí)出現(xiàn)錯(cuò)誤!");
} }
} 95.報(bào)表相關(guān)
/*
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
*/
2、水晶報(bào)表的兩種格式
?? 1)pull模式,不利用DataSet,直接從數(shù)據(jù)庫(kù)中取出數(shù)據(jù)
?? 2) push模式,使用DataSet,利用它進(jìn)行數(shù)據(jù)的加載和處理等
3. 水晶報(bào)表使用的庫(kù)
?? 1)水晶報(bào)表的引擎(CREnging.dll),作用:合并數(shù)據(jù),裝換格式
?? 2)水晶報(bào)表設(shè)計(jì)器(CRDesigner.dll),作用:設(shè)計(jì)標(biāo)題,插入數(shù)據(jù)等
?? 3)水晶報(bào)表查看控件(CRWebFormViewer.DLL)
?? 4)需要引入的命名空間
???? using CrystalDecisions.CrystalReports.Engine;
???? using CrystalDecisions.Shared;
4、Pull模式下使用水晶報(bào)表
?? 1)創(chuàng)建rpt文件
?? 2)拖放CrystalReportViewer
?? 3)綁定
5、讀取水晶報(bào)表文件
?? private void ReadCRV(cryatalReportViewer crv)
?? {
???? openFileDialog dlg=new OpenFileDialog();
???? dlg.Title="打開水晶報(bào)表文件";
???? dlg.Filter="水晶報(bào)表文件(*.rpt)|*.rpt|所有文件|*.*";
???? if(dlg.showDialog()==DialogResult.OK)
???? {
?????? crv.ReportSource=dlg.FileName;
???? }
?? }
6. B/S下讀取報(bào)表的文件
??? private void ReadCRV(cryatalReportViewer crv,File file)
??? {
????? string strName=file.PostedFile.FileName;
????? if(strName.Trim()!="")
????? {
??????? crv.ReportSource=strName
??????? Session["fileName"]=strName;
????? }
??? }
??? 在B/S中要防止數(shù)據(jù)源的丟失
??? priavte void Page_Load(object sender,System.EventArgs e)
??? {
????? if(Session["fileName"]!=null)
????? {
??????? crv.ReportSource=Session["fileName"].ToString();
????? }
??? }
7. 假如直接從數(shù)據(jù)庫(kù)中讀取數(shù)據(jù),采用PULL模式可能出現(xiàn)錯(cuò)誤(登錄的用戶名和密碼不對(duì))
?? private void ReadCRV(CrystalReportViewer crv,CrystalReport cr)
?? {
????? ReportDocument reportDoc=new ReportDocument();
????? reportDoc.Load(Server.MapPath(cr));//要加載的rpt文件的名字
????? //解決登錄的問(wèn)題
????? TableLogOnInfo logonInfo = new TableLogOnInfo();
????? foreach(Table tb in ReportDoc.Database.Tables)
????? {
??????? logonInfo=tb.LogOnInfo;
??????? logonInfo.ConnectionInfo.ServerName="(loacl)";
??????? logonInfo.ConnectionInfo.DatabaseName="Pubs";
??????? logonInfo.ConnectionInfo.UserId="sa";
??????? logonInfo.ConnectionInfo.Password="";
??????? tb.ApplyLogOnInfo(logonInfo);
????? }
????? crv.ReportSource=reportDoc;
?? }
8. 采用Push模式,直接在數(shù)據(jù)源讀取
?? private void BindReport(CrystalReportViewer crv)
?? {
???? string strProvider="Server=(local);DataBase=pubs;uid=sa;pwd=";
???? CrystalReport cr=new CrystalReport();
???? DataSet ds=new DataSet();
???? SqlConnection conn=new SqlConnection(strProvider);
???? conn.open();
???? string strSql="select * from jobs";
???? SqlDataAdapter dap=new SqlDataAdapter(strSql,conn);
???? adp.Fill(ds,"jobs");
???? cr.SetDataSource(ds);
???? crv.ReportSource=cr;
?? }
9. 導(dǎo)出水晶報(bào)表的文件
?? private void ExportCrv(CrystalReport cr)
?? {
????? DiskFileDestionOptions dOpt=new DiskFileDestionOptions();
????? cr.ExportOptions.ExportDestinationType=ExportDestinationType.DiskFile();
????? cr.ExportOptions.ExportFormatType= ExportFormatType.PortableDocFormat;
????? dOpt.DiskFileName="C:/output.pdf";
????? cr.ExportOptions.DestinationOptions=dOpt;
????? cr.Export();
?????
?? }
?? private void ExportCrv(CrystalReport cr,string strType,string strPath)
?? {
????? DiskFileDestionOptions dOpt=new DiskFileDestionOptions();
????? cr.ExportOptions.ExportDestinationType=ExportDestinationType.DiskFile();
????? switch(strType)
????? {
???????? case "RTF":
?????????? cr.ExportOptions.ExportFormatType=ExportFormatType.RichText;
?????????? dOpt.DiskFileName=strPath;
?????????? break;
???????? case "PDF":
?????????? cr.ExportOptions.ExportFormatType=ExportFormatType.PortableDocFormat;
?????????? dOpt.DiskFileName=strPath;
?????????? break;
???????? case "DOC":
?????????? cr.ExportOptions.ExportFormatType=ExportFormatType.WordForWindows;
?????????? dOpt.DiskFileName=strPath;
?????????? break;
???????? case "XLS":
?????????? cr.ExportOptions.ExportFormatType=ExportFormatType.Excel;
?????????? dOpt.DiskFileName=strPath;
?????????? break;
???????? default;
???????? break;
??????????
????? }
????? cr.ExportOptions.DestinationOptions=dOpt;
????? cr.Export(); }
10 B/S下水晶報(bào)表的打印
?? priavte void PrintCRV(CrystalReport cr)
?? {
???? stringstrPrinterName=@"printName";
???? PageMargins margins=cr.PrintOptions.PageMargins;
???? margins.bottomMargin = 250;
???? margins.leftMargin = 350;
???? margins.rightMargin = 350;
???? margins.topMargin = 450;
???? cr.PrintOptions.ApplyPageMargins(margins);
???? cr.PrintOptions.printerName=strPrinterName;
???? cr.PrintToPrinter(1,false,0,0)//參數(shù)設(shè)置為0,表示打印所用頁(yè)
?? } 96.全屏幕截取 /*
using System.Drawing.Drawing2D;
using System.Runtime.InteropServices;
using System.Collections;
using System.Drawing.Imaging;
using System.Threading;
*/
[DllImport("gdi32.dll")]
private static extern int BitBlt(IntPtr hdcDest,int nXDest,int nYDest,int nWidth,int nHeight,IntPtr hdcSrc,int nXSrc,int nYSrc,UInt32 dwRop);
??????????? //this.Hide();//如果你不想截取的圖象中有此應(yīng)用程序
??????????? //Thread.Sleep(1000);
??????????? Rectangle rect = new Rectangle();
??????????? rect = Screen.GetWorkingArea(this);//獲得當(dāng)前屏幕的大小??
??????????? Graphics g = this.CreateGraphics();
//創(chuàng)建一個(gè)以當(dāng)前屏幕為模板的圖象??
??????????? Image myimage = new Bitmap(rect.Width, rect.Height, g);
//第二種得到全屏坐標(biāo)的方法
???????? // Image myimage = new Bitmap(Screen.PrimaryScreen.Bounds.Width,Screen.PrimaryScreen.Bounds.Height,g);
//創(chuàng)建以屏幕大小為標(biāo)準(zhǔn)的位圖?
??????????? Graphics gg = Graphics.FromImage(myimage);
??????????? IntPtr dc = g.GetHdc();//得到屏幕的DC?
??????????? IntPtr dcdc = gg.GetHdc();//得到Bitmap的DC????
???????? BitBlt(dcdc, 0, 0, rect.Width, rect.Height, dc, 0, 0, 13369376);
//調(diào)用此API函數(shù),實(shí)現(xiàn)屏幕捕獲??
??????????? g.ReleaseHdc(dc);//釋放掉屏幕的DC??
??????????? gg.ReleaseHdc(dcdc);//釋放掉Bitmap的DC????
??????????? myimage.Save(Application.StartupPath + @"/bob.jpg",??? ImageFormat.Jpeg);//以JPG文件格式來(lái)保存??
??????????? this.Show(); 97.區(qū)域截幕
/*
using System.Drawing.Drawing2D;
using System.Runtime.InteropServices;
using System.Collections;
using System.Drawing.Imaging;
using System.Threading;
?[DllImport("gdi32.dll")]
public static extern IntPtr CreateDC(
?string lpszDriver,??????? // driver name
?string lpszDevice,??????? // device name
?string lpszOutput,??????? // not used; should be NULL
?Int64 lpInitData? // optional printer data
?);
?
[DllImport("gdi32.dll")]
public static extern IntPtr CreateCompatibleDC(
?IntPtr hdc // handle to DC
?);
?
[DllImport("gdi32.dll")]
public static extern int GetDeviceCaps(
?IntPtr hdc,???? // handle to DC
?GetDeviceCapsIndex nIndex?? // index of capability
); [DllImport("gdi32.dll")]
public static extern IntPtr CreateCompatibleBitmap(
?IntPtr hdc,??????? // handle to DC
?int nWidth,???? // width of bitmap, in pixels
?int nHeight???? // height of bitmap, in pixels
?); [DllImport("gdi32.dll")]
public static extern IntPtr SelectObject(
?IntPtr hdc,????????? // handle to DC
?IntPtr hgdiobj?? // handle to object
?); [DllImport("gdi32.dll")]
public static extern int BitBlt(
?IntPtr hdcDest, // handle to destination DC
?int nXDest,? // x-coord of destination upper-left corner
?int nYDest,? // y-coord of destination upper-left corner
?int nWidth,? // width of destination rectangle
?int nHeight, // height of destination rectangle
?IntPtr hdcSrc,? // handle to source DC
?int nXSrc,?? // x-coordinate of source upper-left corner
?int nYSrc,?? // y-coordinate of source upper-left corner
?UInt32 dwRop? // raster operation code
?); [DllImport("gdi32.dll")]
public static extern int DeleteDC(
?IntPtr hdc????????? // handle to DC
?);
*/
public static Bitmap GetPartScreen(Point P1,Point P2,bool Full)
{
??? IntPtr hscrdc,hmemdc;
??? IntPtr hbitmap,holdbitmap;
??? int nx,ny,nx2,ny2;
??? nx=ny=nx2=ny2=0;
??? int nwidth, nheight;
??? int xscrn, yscrn;
??? hscrdc = CreateDC("DISPLAY", null, null, 0);//創(chuàng)建DC句柄
??? hmemdc = CreateCompatibleDC(hscrdc);//創(chuàng)建一個(gè)內(nèi)存DC
??? xscrn = GetDeviceCaps(hscrdc, GetDeviceCapsIndex.HORZRES);//獲取屏幕寬度
??? yscrn = GetDeviceCaps(hscrdc, GetDeviceCapsIndex.VERTRES);//獲取屏幕高度
??? if(Full)//如果是截取整個(gè)屏幕
??? {
??????? nx = 0;
??????? ny = 0;
??????? nx2 = xscrn;
??????? ny2 = yscrn;
??? }
??? else
??? {
??????? nx = P1.X;
??????? ny = P1.Y;
??????? nx2 =P2.X;
??????? ny2 =P2.Y;
??????? //檢查數(shù)值合法性
??????? if(nx<0)nx = 0;
??????? if(ny<0)ny = 0;
??????? if(nx2>xscrn)nx2 = xscrn;
??????? if(ny2>yscrn)ny2 = yscrn;
??? }
??? nwidth = nx2 - nx;//截取范圍的寬度
??? nheight = ny2 - ny;//截取范圍的高度
??? hbitmap = CreateCompatibleBitmap(hscrdc, nwidth, nheight);//從內(nèi)存DC復(fù)制到hbitmap句柄
??? holdbitmap = SelectObject(hmemdc, hbitmap);
??? BitBlt(hmemdc, 0, 0, nwidth, nheight,hscrdc, nx, ny,(UInt32)0xcc0020);
??? hbitmap = SelectObject(hmemdc, holdbitmap);
??? DeleteDC(hscrdc);//刪除用過(guò)的對(duì)象
??? DeleteDC(hmemdc);//刪除用過(guò)的對(duì)象
??? return Bitmap.FromHbitmap(hbitmap);//用Bitmap.FromHbitmap從hbitmap返回Bitmap
} 98.計(jì)算文件MD5值
/*
using System.IO;
using System.Security.Cryptography;
*/
string path = %%1;
FileStream fs = new FileStream(path,FileMode.Open,FileAccess.Read);
MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
byte [] md5byte = md5.ComputeHash(fs);
int i,j;
StringBuilder sb = new StringBuilder(16);
foreach (byte b in md5byte)
{
 ?? i = Convert.ToInt32(b);
   j = i >> 4;
   sb.Append(Convert.ToString(j,16));
   j = ((i << 4) & 0x00ff) >> 4;
   sb.Append(Convert.ToString(j,16));
}
string %%2=sb.ToString(); 99.計(jì)算獲取文件夾中文件的MD5值
/*
using System.IO;
using System.Security.Cryptography;
using System.Collections;
*/
bool b=false;
string path = (%%2.LastIndexOf("//") == %%2.Length - 1) ? %%2 : %%2 + "//";
string parent = Path.GetDirectoryName(%%1);
Directory.CreateDirectory(path + Path.GetFileName(%%1));
DirectoryInfo dir = new DirectoryInfo((%%1.LastIndexOf("//") == %%1.Length - 1) ? %%1 : %%1 + "//");
FileSystemInfo[] fileArr = dir.GetFileSystemInfos();
Queue<FileSystemInfo> Folders = new Queue<FileSystemInfo>(dir.GetFileSystemInfos());
while (Folders.Count > 0)
{
??? FileSystemInfo tmp = Folders.Dequeue();
??? FileInfo f = tmp as FileInfo;
??? if (b && f == null)
??? {
??????? DirectoryInfo d = tmp as DirectoryInfo;
??????? Directory.CreateDirectory(d.FullName.Replace((parent.LastIndexOf("//") == parent.Length - 1) ? parent : parent + "//", path));
??????? foreach (FileSystemInfo fi in d.GetFileSystemInfos())
??????? {
??????????? Folders.Enqueue(fi);
??????? }
??? }
??? else
??? {
??????? FileStream fs = new FileStream(f,FileMode.Open,FileAccess.Read);
??????? MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
??????? byte [] md5byte = md5.ComputeHash(fs);
??????? int i,j;
??????? StringBuilder sb = new StringBuilder(16);
??????? foreach (byte b in md5byte)
??????? {
???????  ?? i = Convert.ToInt32(b);
???????    j = i >> 4;
???????    sb.Append(Convert.ToString(j,16));
???????    j = ((i << 4) & 0x00ff) >> 4;
???????    sb.Append(Convert.ToString(j,16));
??????? }
??????? string %%3=sb.ToString();
??? }
}

總結(jié)

以上是生活随笔為你收集整理的代码集锦的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。