Using OCX Installer With C#
http://www.softelvdm.com/Products/ActiveXControls/OCXInstaller/OCXInstallerDocumentation/UsingOCXInstallerWithC/tabid/208/Default.aspx
Using OCX Installer With C#
Overview | Documentation | C# | VB.NET | VB6 | C/C++ | Download
You application calls OCX Installer during application initialization, in the Main method of the application:
if (!Softelvdm.OCXInstaller.ProcessFile(true, _
“TestApp_CSharp”, “Softel vdm, Inc.”, _
@”.\SftTree_IX86_U_60.ocx”, “%WinSys”, true, false))
return;
In order to have access to the assembly containing the OCX Installer, a reference to Softelvdm.OCXInstaller has to be added to the project:
VS 2003, 2005, 2008: Project, Add Reference… menu command, click Browse, locate the file OCXInstaller.Assembly.dll and add it. It is normally located at \Program Files\Softelvdm\OCX Installer\NET.
In order to debug/execute your application, make sure to copy all other required files (OCXes) to the folder containing your executable.
For all applications that include ActiveX controls, the .NET assembly stdole.dll must be distributed. This assembly is NOT part of the .NET runtime installation, so you have to insure it is included with your application. Other prerequisite files that are part of ActiveX controls, may also be updated accordingly (for example, Softelvdm.OCXHelper also must be distributed):
VS 2003, 2005, 2008: In your Solution Explorer window, expand the References. Right-click on the stdole entry and select Properties. Set Copy Local to True.
Sample
OCX Installer includes a complete C# sample including project files for Visual Studio 2003, 2005, 2008 at
\Program Files\Softelvdm\OCX Installer\Samples\Sample_CS.NET
The completed, precompiled and distributable sample is located in the Bin\Release subfolder. The file PostBuildEvent.bat is not required and can be removed.
When experimenting with deployment of this sample, please make sure to install the .NET runtime first on the target system. Please visit microsoft.com to download the .NET runtime if needed.
Examples to Register / Unregister ActiveX via Code? – DevX.com Forums
http://forums.devx.com/showthread.php?t=57361
Public Class RegCOMServer
Private Declare Function FreeLibrary Lib “kernel32″ (ByVal hLibModule As Integer) As Integer
Private Declare Function LoadLibrary Lib “kernel32″ Alias “LoadLibraryA” (ByVal lpLibFileName As String) As Integer
Private Declare Function GetProcAddress Lib “kernel32″ (ByVal hModule As Integer, ByVal lpProcName As String) As Integer
Private Declare Function CallWindowProc Lib “user32″ Alias “CallWindowProcA” (ByVal lpPrevWndFunc As Integer, ByVal hWnd As Integer, ByVal Msg As System.UInt32, ByVal wParam As UIntPtr, ByVal lParam As IntPtr) As Integer
Private Const ERROR_SUCCESS As Short = &H0S
Public Function RegisterServer(ByRef DllServerPath As String, ByRef bRegister As Boolean) As Boolean
Dim lb As Integer
Dim pa As Integer
Try
lb = LoadLibrary(DllServerPath)
If bRegister Then
pa = GetProcAddress(lb, “DllRegisterServer”)
Else
pa = GetProcAddress(lb, “DllUnregisterServer”)
End If
If CallWindowProc(pa, 0, 0, 0, 0) = ERROR_SUCCESS Then
Return True
Else
Return False
End If
Catch e As Exception
Throw e
Finally
FreeLibrary(lb)
End Try
End Function
End Class
Examples to Register / Unregister ActiveX via Code? – DevX.com Forums
http://forums.devx.com/showthread.php?t=57361
Here’s some C# code I wrote a while ago. I was in a hurry and didn’t
have time to convert the PInvoke declarations in VB.NET, so I did the
whole thing in C#.
However, I am using this in a VB.NET app. Just create a C# class
library and put this code in it. Watch out for line-wrap…
using System;
using System.Runtime.InteropServices;
public class RegCOMServer
{
[DllImport("kernel32.dll")]
static extern bool FreeLibrary(IntPtr hModule);
[DllImport("kernel32.dll")]
static extern IntPtr LoadLibrary(string lpFilename);
[DllImport("kernel32.dll")]
static extern UIntPtr GetProcAddress(IntPtr hModule, string
lpProcName);
[DllImport("user32.dll")]
static extern IntPtr CallWindowProc(UIntPtr lpPrevWndFunc, IntPtr
hWnd, uint Msg, UIntPtr wParam, IntPtr lParam);
public static bool RegisterActiveX(string AXPath)
{
return(RegAX(AXPath, true));
}
public static bool UnRegisterActiveX(string AXPath)
{
return(RegAX(AXPath, false));
}
private static bool RegAX(string AXPath, bool Register)
{
IntPtr lb = IntPtr.Zero;
UIntPtr pa;
try
{
lb = LoadLibrary(AXPath);
if( Register )
pa = GetProcAddress(lb, “DllRegisterServer”);
else
pa = GetProcAddress(lb,
“DllUnregisterServer”);
if( CallWindowProc(pa, IntPtr.Zero, 0, UIntPtr.Zero,
IntPtr.Zero) == IntPtr.Zero )
{
return(true);
}
else
{
return(false);
}
}
catch(Exception e)
{
throw(e);
}
finally
{
FreeLibrary(lb);
}
}
}
Using OCX Installer With C#
http://www.softelvdm.com/Products/ActiveXControls/OCXInstaller/OCXInstallerDocumentation/UsingOCXInstallerWithC/tabid/208/Default.aspx
Using OCX Installer With C#
Overview | Documentation | C# | VB.NET | VB6 | C/C++ | Download
You application calls OCX Installer during application initialization, in the Main method of the application:
if (!Softelvdm.OCXInstaller.ProcessFile(true, _
“TestApp_CSharp”, “Softel vdm, Inc.”, _
@”.\SftTree_IX86_U_60.ocx”, “%WinSys”, true, false))
return;
In order to have access to the assembly containing the OCX Installer, a reference to Softelvdm.OCXInstaller has to be added to the project:
VS 2003, 2005, 2008: Project, Add Reference… menu command, click Browse, locate the file OCXInstaller.Assembly.dll and add it. It is normally located at \Program Files\Softelvdm\OCX Installer\NET.
In order to debug/execute your application, make sure to copy all other required files (OCXes) to the folder containing your executable.
For all applications that include ActiveX controls, the .NET assembly stdole.dll must be distributed. This assembly is NOT part of the .NET runtime installation, so you have to insure it is included with your application. Other prerequisite files that are part of ActiveX controls, may also be updated accordingly (for example, Softelvdm.OCXHelper also must be distributed):
VS 2003, 2005, 2008: In your Solution Explorer window, expand the References. Right-click on the stdole entry and select Properties. Set Copy Local to True.
Sample
OCX Installer includes a complete C# sample including project files for Visual Studio 2003, 2005, 2008 at
\Program Files\Softelvdm\OCX Installer\Samples\Sample_CS.NET
The completed, precompiled and distributable sample is located in the Bin\Release subfolder. The file PostBuildEvent.bat is not required and can be removed.
When experimenting with deployment of this sample, please make sure to install the .NET runtime first on the target system. Please visit microsoft.com to download the .NET runtime if needed.
标签:c++, ocx
Windows Forms Documentation Updates
http://blogs.msdn.com/Winformsue/
Creating a Design Surface Extender Framework for Windows Forms 2.0
http://msdn.microsoft.com/en-us/library/aa730843(VS.80).aspx
CodeProject: A New .NET Reporting Way. Free source code and programming help
http://www.codeproject.com/KB/dotnet/myneoreportintro.aspx
Download details: DesignSurfaceExtender Sample Code
http://www.microsoft.com/downloads/details.aspx?FamilyID=040e4c5c-4043-45f5-a383-be9227b943f9&DisplayLang=en
用.NET Framework 2.0创建 Form设计器[翻译] – 自由、创新、研究、探索 – 博客园
http://www.cnblogs.com/shanyou/archive/2006/06/07/designerhosting.html
Visual Studio.net创建可设计组件 — IT技术 – 赛迪网
http://tech.ccidnet.com/art/1110/20051021/858005_1.html
用.NET Framework 2.0创建Form设计器 – 风也红了的专栏 – CSDN博客
http://blog.csdn.net/aiwtu/archive/2006/11/09/1375266.aspx
窗体设计器的设计||自由飞翔的是思想|博客|生活是最精彩的游戏|–Life In Blogcn
http://kascale.blogcn.com/diary,203627867.shtml
,为RootComponent添加子控件必须使用IDesignerHost.CreateComponent创
[转帖]把WWF工作流设计器嵌入到winform中(vs2005 + WWF beta2.2) – WF技术 – WF工作流中文社区 Windows Workflow Foundation – Powered by Discuz!
http://www.wwfcn.net/thread-28-1-1.html
写Form设计器尝试(六) 实现菜单命令 – 技术频道 | IT168
http://tech.it168.com/KnowledgeBase/Articles/7/0/5/705857ccf9a0f900e1aa1b7fcc6bbd9e.htm
制作自定义工作流(WWF)设计器 – 随心所欲 – 博客园
http://www.cnblogs.com/dlwang2002/archive/2006/12/11/589337.html
请教一个困扰了我很久的问题:WinForm程序被执行之后,…………… – 软件开发频道
http://web.java-asp.net/asp/p4/J4478.shtml
formdesigner
Hosting Windows Forms Designers
http://www.divil.co.uk/net/articles/designers/hosting.asp
Editor with DesignSurface
http://www.dotnetmonster.com/Uwe/Forum.aspx/vs-ext/789/Editor-with-DesignSurface
DesignSurface 实现设计器问题?_C#builder_积木群组
http://group.gimoo.net/review/31027
DesignSurface
C#制作自定义窗体样式 · 编程学习网_wuxian803的空间
http://hi.baidu.com/wuxian803/blog/item/7dbf46fc272c2a4dd6887dcf.html
利用自定义事件实现不同窗体间的通讯_到城里啃青
http://hi.baidu.com/helmsman88/blog/item/6a1878a5e8c513ff9152ee26.html
通过用 .NET 生成自定义窗体设计器来定制应用程序_伍育清的空间
http://hi.baidu.com/%CE%E9%D3%FD%C7%E5/blog/item/07b1ca8a363b671ac8fc7ab2.html
Base Designer Classes
http://technet.microsoft.com/zh-cn/library/9k9st93e(en-us).aspx
博客园手机版-通过用 .NET 生成自定义窗体设计器来定制应用程序
http://m.cnblogs.com/35073/1227211.html
CodeProject: GradientPanel and AlphaLabel: an introduction to building controls. Free source code and programming help
http://www.codeproject.com/KB/miscctrl/GradientPanel.aspx
CodeProject: How to Move, Resize, and Reconfigure Objects in Working Applications. Free source code and programming help
http://www.codeproject.com/KB/dialog/MoveableObjects.aspx
CodeProject: Have a Great DesignTime Experience with a Powerful DesignSurface (Extended) Class. Free source code and programming help
http://www.codeproject.com/KB/cs/DesignSurfaceExtended.aspx
CodeProject: Magic Library Docking Manager Designer. Free source code and programming help
http://www.codeproject.com/KB/miscctrl/dockingmanagerextender.aspx
开源无界–MoveableGraphics–Design,算法,人机界面,用户界面,Visualization,项目,下载,软件
http://www.sourceforgecn.net/Projects/m/mo/movegraph/
Create And Host Custom Designers With The .NET Framework 2.0
http://msdn.microsoft.com/zh-cn/magazine/cc163634(en-us).aspx
Implementing a Custom Forms Designer in .NET
http://geekswithblogs.net/mtreadwell/archive/2004/11/23/15763.aspx
Custom Forms Designer: The Goal
http://geekswithblogs.net/mtreadwell/archive/2005/01/06/19342.aspx
信息: 代码示例演示如何使用 Visual C#.net 来创建自定义窗体设计器的
http://support.microsoft.com/?id=813808
IContainer
Tailor Your Application with a Custom Forms Designer in .NET
http://msdn.microsoft.com/zh-cn/magazine/cc163871(en-us).aspx
Tailor Your Application with a Custom Forms Designer in .NET
http://msdn.microsoft.com/zh-cn/magazine/cc163871(en-us).aspx
Custom Forms Designer
VB Helper: HowTo: Draw a positioning grid and snap line segments to its points
http://www.vb-helper.com/howto_snapto.html
Implementing a Custom Forms Designer in .NET
http://geekswithblogs.net/mtreadwell/archive/2004/11/23/15763.aspx
Custom Forms Designer: The Goal
http://geekswithblogs.net/mtreadwell/archive/2005/01/06/19342.aspx
Create And Host Custom Designers With The .NET Framework 2.0
http://msdn.microsoft.com/zh-cn/magazine/cc163634(en-us).aspx
Form Designer in C# and .NET
http://www.c-sharpcorner.com/UploadFile/michaelgold/FormDesignerinCSharpand.NET11242005020717AM/FormDesignerinCSharpand.NET.aspx
C#基础系列:开发自己的窗体设计器(PropertyGrid显示中文属性名) – nic_911的专栏 – CSDN博客
http://blog.csdn.net/nic_911/archive/2009/03/18/4002878.aspx
Attributes and Design-Time Support
http://msdn.microsoft.com/en-us/library/a19191fh(VS.71).aspx
CodeProject: Drag and Drop Windows/Form Controls (Design UI at Runtime). Free source code and programming help
http://www.codeproject.com/KB/dialog/Drag_Controls_at_runtime.aspx
CodeProject: A designable PropertyTree for VS.NET. Free source code and programming help
http://www.codeproject.com/KB/miscctrl/propertytree.aspx
在c#中调用DELPH编写的DLL的函数时出现未将对象引用到实例的错误: delphi编写的dll中函数声明:function DeliverfromEsm(var Smtype, Content,Caller:pchar):integer;
Content:短信内容或报告(若Smtype为即时消息或离线消息,则Content表示短信内容;否则,Content表示返回的状态报告情况); Content表示返回的状态报告Report结构: DWORD TaskID; //客户端序列号 TaskID DWORD MsgID; //客户端序列号 MsgID char UserNumber[22]; //接收手机号 unsigned char state; //状态 unsigned char ErrCode; //错误代码 我在c#中声明: [DllImport("EsmApi.dll",CharSet = CharSet.Ansi,CallingConvention = CallingConvention.StdCall)] static extern int DeliverfromEsm(ref string smtype,ref string content,ref string caller); 调用: string smtype=”"; string content=”"; string caller=”"; int reportval=DeliverfromEsm( ref smtype,ref content,ref caller); 出现未将对象引用到实例的错误
以下是解决办法:
声明:
[DllImport("EsmApi.dll",CharSet = CharSet.Ansi,CallingConvention = CallingConvention.StdCall)] static extern int DeliverfromEsm(StringBuilder Smtype, IntPtr Content,StringBuilder Caller);//接收短信和report
[StructLayout(LayoutKind.Sequential,CharSet=CharSet.Ansi,Pack=1)] public struct Report { public int TaskID;//4byte public int MsgID; [MarshalAs(UnmanagedType.ByValTStr,SizeConst=22)]public string UserNumber; public byte state;//1byte public byte ErrCode; }
程序中处理:
StringBuilder smtype= new StringBuilder(256);//Init buffer
int size = Marshal.SizeOf(typeof(Report)); IntPtr content=Marshal.AllocHGlobal(size);//分配32bytes StringBuilder caller= new StringBuilder(256);//Init buffer int reportval=DeliverfromEsm( smtype,content, caller);
//字符串时
string smscontent=Marshal.PtrToStringAnsi(content);
//结构体时
Report content1=(Report)Marshal.PtrToStructure(content,typeof(Report));
Marshal.FreeHGlobal(content);//释放
参考了网上的一段代码:
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)] public struct VideoCompressorInfo { [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string szName; public Int32 dwHandle; } [DllImport("DSStream.dll")] public extern static int DSStream_EnumVideoCompressor(IntPtr pInfo, ref int piVidCompNum); int num = 0; DSStream_EnumVideoCompressor(IntPtr.Zero, ref num); int size = Marshal.SizeOf(typeof(VideoCompressorInfo)); IntPtr structPtr = Marshal.AllocHGlobal(size * num); DSStream_EnumVideoCompressor(structPtr, ref num); VideoCompressorInfo[] infos = new VideoCompressorInfo[num]; for (int i = 0; i < num; ++i) { infos[i] = (VideoCompressorInfo)Marshal.PtrToStructure((IntPtr)((int)structPtr + i * size), typeof(VideoCompressorInfo)); } Marshal.FreeHGlobal(structPtr);
最近在的项目有涉及到使用摄像头的功能,摄像机就是市面上普通的摄像机,摄像机连接在一款视频监控卡上(天敏SDK2000),可是监控卡提供的动态链接库只有VC++的例子,有些地方看不明白,高手指教,解决了加分,监控卡提供的主要函数如下:
1.HRESULT DSStream_Initialize()
初始化COM接口及一些参数。这是开始使用动态库的第一个函数,未初始化之前,任何其他函数的调用均无效。
2.HRESULT DSStream_ConnectDevice(int iCardID, BOOL bOverlay, HWND hParentWnd = NULL)
连接视频捕捉卡。只有连接后,才能对卡进行其他操作。
iCardID:想要连接的卡号,以0为基数。
bOverlay:是否使用 Overlay 模式。TRUE-使用,FALSE-不使用。使用 Overlay 时,显示速度快、占用CPU资源极少,但是不能快照、录像、显示Logo等。
hParentWnd:指定视频图像的父窗口,图像将显示在 hParentWnd 窗口中。也可用DSStream_SetOwnerWnd来指定父窗口。
3.HRESULT DSStream_SetOwnerWnd(int iCardID, HWND hParentWnd)
设置视频显示窗口的父窗口,视频图像将在这个窗口中显示。
hParentWnd:父窗口的句柄。
4.HRESULT DSStream_SetWindowPos(int iCardID, RECT rc)
设置视频图像在父窗口中的位置。如果所设位置的宽、高与视频图像实际的宽、高不等,视频图像将被缩放。视频图像的实际宽、高可通过调用DSStream_GetVideoInfo得到。
rc:视频图像在父窗口中的位置。
只写了其中的四个函数,高手请给个思路,或者解决下面的几个疑问也好:
1.HRESULT 是一种类型还是什么别的?
2. SetWindowPos(int iCardID, RECT rc) 其中RECT rc 应该怎么定义
3.我用下面语句调用,有什么不对的地方?
[DllImport("DSStream")]
private static extern void DSStream_Initialize();
[DllImport("DSStream")]
private static extern void DSStream_Uninitialize();
[DllImport("DSStream")]
private static extern void DSStream_ConnectDevice(int iCardID, bool bOverlay, Panel hParentWnd);
[DllImport("DSStream")]
private static extern void DSStream_SetOwnerWnd(int iCardID, Panel hParentWnd);
DSStream_Initialize();
DSStream_SetOwnerWnd( 0, label1.Handle );
CSRect rc = new CSRect();
rc.left = 0;
rc.top = 0;
rc.right = lablel.width;
rc.bottom = label.heigth;
DSStream_SetWindowPos(0, rc);
DSStream_ConnectDevice(0, true, label1.Handle);
我干脆把OCX弄进去了··
标签:c++, sdk2000
指定图片格式保存
使用Image.Save方法可以保存图片。保存图片时通过指定ImageFormat对象,可以指定保存图片的形式。
ImageFormat 的成员有:Bmp(位图图像格式)、Emf(增强型图元文件图像格式)、Exif(可交换图像文件格式)、Gif(图形交换形式图像格式)、 Icon(Windows图标图像格式)、Jpeg(联合图像专家组图像格式)、MemoryBmp(内存位图图像格式)、Png(W3C可移植网络图形图像格式)、Tiff(标记图像文件格式图像格式)、Wmf(Windows 图园文件图像格式)。
但是在.NET Framework1.1版本时,只能保存为Bmp、Jpeg、Gif、Tiff、Png的格式,以Wmf、Emf、Icon格式保存时,其实是以Png格式保存。详细说明请参考微软的帮助和支持的「The Image.Save method does not save the file as the selected file type in Visual Basic .NET or in Visual Basic 2005」。
下面的代码是,读取”C:\\test.bmp”以PNG形式保存。
[VB.NET]
’图像作成
Dim bmp As New Bitmap(“C:\test.bmp”)
’以PNG形式保存
bmp.Save(“C:\test.png”, System.Drawing.Imaging.ImageFormat.Png)
’释放资源
bmp.Dispose()
[C#]
//图像作成
Bitmap bmp = new Bitmap(“C:\\test.bmp”);
//以PNG形式保存
bmp.Save(“C:\\test.png”, System.Drawing.Imaging.ImageFormat.Png);
//释放资源
bmp.Dispose();
以图标的形式保存
Image对象以图标形式保存时,可以使用Icon.Save方法实现。
[VB.NET]
’保存为图标的文件名
Dim iconFile As String = “C:\test.ico”
’Bitmap作成
Dim bmp As New Bitmap(32, 32)
’描绘图形
Dim g As Graphics = Graphics.FromImage(bmp)
g.FillEllipse(Brushes.Red, 1, 1, 30, 30)
g.Dispose()
’把Bitmap作成Icon
Dim ico As Icon = System.Drawing.Icon.FromHandle(bmp.GetHicon())
’写入
Dim fs As New System.IO.FileStream(iconFile, _
System.IO.FileMode.Create, System.IO.FileAccess.Write)
ico.Save(fs)
fs.Close()
’释放资源
ico.Dispose()
bmp.Dispose()
[C#]
//保存为图标的文件名
string iconFile = “C:\\test.ico”;
//Bitmap作成
Bitmap bmp = new Bitmap(32, 32);
//描绘图形
Graphics g = Graphics.FromImage(bmp);
g.FillEllipse(Brushes.Red, 1, 1, 30, 30);
g.Dispose();
//把Bitmap作成Icon
Icon ico = System.Drawing.Icon.FromHandle(bmp.GetHicon());
//写入
System.IO.FileStream fs = new System.IO.FileStream(
iconFile, System.IO.FileMode.Create, System.IO.FileAccess.Write);
ico.Save(fs);
fs.Close();
//释放资源
ico.Dispose();
bmp.Dispose();
以增强型图元文件图像格式保存
代码如下所示。
[VB.NET]
Dim fileName As String = “C:\test.emf”
’Metafile对象作成
Dim bmp As New Bitmap(1, 1)
Dim bmpg As Graphics = Graphics.FromImage(bmp)
Dim hdc As IntPtr = bmpg.GetHdc()
Dim meta As New System.Drawing.Imaging.Metafile( _
fileName, hdc, System.Drawing.Imaging.EmfType.EmfOnly)
bmpg.ReleaseHdc(hdc)
’向Metafile描绘
Dim emfg As Graphics = Graphics.FromImage(meta)
emfg.FillEllipse(Brushes.Red, 0, 0, 100, 100)
emfg.Dispose()
’释放资源
meta.Dispose()
bmpg.Dispose()
bmp.Dispose()
[C#]
string fileName = “C:\\test.emf”;
// Metafile对象作成
Bitmap bmp = new Bitmap(1, 1);
Graphics bmpg = Graphics.FromImage(bmp);
IntPtr hdc = bmpg.GetHdc();
System.Drawing.Imaging.Metafile meta =
new System.Drawing.Imaging.Metafile(
fileName,
hdc,
System.Drawing.Imaging.EmfType.EmfOnly);
bmpg.ReleaseHdc(hdc);
//向Metafile描绘
Graphics emfg = Graphics.FromImage(meta);
emfg.FillEllipse(Brushes.Red, 0, 0, 100, 100);
emfg.Dispose();
//释放资源
meta.Dispose();
bmpg.Dispose();
bmp.Dispose();
标签:bmp, c++, save
7-Zip 简介
7-Zip 是一款号称有着现今最高压缩比的压缩软件,它不仅支持独有的 7z 文件格式,而且还支持各种其它压缩文件格式,其中包括 ZIP, RAR, CAB, GZIP, BZIP2和 TAR 等等。此软件压缩的压缩比要比普通 ZIP 文件高 30-50% ,因此,它可以把 Zip 格式的文件再压缩 2-10% 。
7-Zip 主要特征
更新了算法来加大 7z 格式 的压缩比
支持格式:
压缩及解压缩:7z、ZIP、GZIP、BZIP2 和 TAR
仅解压缩:RAR、CAB、ISO、ARJ、LZH、CHM、WIM、Z、CPIO、RPM、DEB 和 NSIS
对于 ZIP 及 GZIP 格式,7-Zip 能提供比使用 PKZip 及 WinZip 高 2-10% 的压缩比
7z 格式支持创建自释放(SFX)压缩档案
集成 Windows 外壳扩展
强大的的文件管理
强大的命令行版本
支持 FAR Manager 插件
支持 69 种语言
C#中压缩/解压缩7-zip文件的方法
1.控制台方式调用7z.exe文件
public static void Unzip(DirectoryInfo DirecInfo)
{
if (DirectInfo.Exists)
{
foreach (FileInfo fileInfo in DirecInfo.GetFiles(“*.zip”))
{
Process process = new Process();
process.StartInfo.FileName = @”C:\Program Files\7-zip\7z.exe”;
process.StartInfo.Arguments =
@” e C:\Directory\” + fileInfo.Name + @” -o C:\Directory”;
process.Start();
}
}
}
2.根据压缩算法LZMA SDK
LZMA SDK里面包括了压缩和解压缩算法的C#源码(当前版本是4.65)
下载地址:
http://sourceforge.net/projects/sevenzip/files/LZMA%20SDK/4.65/lzma465.tar.bz2/download
3.在.NET应用程序中使用7-Zip的压缩/解压缩功能 (作者 Abel Avram 译者 赵劼 )
开发人员Eugene Sichkar创建了一系列7-Zip动态链接库的C#接口,.NET应用程序中使用7-Zip的压缩/解压缩功能了。
据Eugene称,该项目实现了以下接口:
* IProgress – 基本进度的回调
* IArchiveOpenCallback – 打开压缩包的回调
* ICryptoGetTextPassword – 为压缩提示密码的回调
* IArchiveExtractCallback – 对压缩包进行解压的回调
* IArchiveOpenVolumeCallback – 打开额外压缩卷的回调
* ISequentialInStream – 基本的只读数据流接口
* ISequentialOutStream – 基本的只写数据流的接口
* IInStream – 可以随机读取的输入数据流接口
* IOutStream – 输出数据流接口
* IInArchive – 主要压缩接口
具体的使用方式可以参考源码中示例.
4.SevenZipSharp
markhor 创建了SevenZipSharp 项目,SevenZipSharp 是开源的,里面实现了自解压和压缩所有7-ZIP支持的格式.它改进了7-Zip动态链接库的C#接口的一些方法.
常用压缩/解压缩示例(引自SevenZipSharp示例文件):
解压缩文件
using (SevenZipExtractor tmp = new SevenZipExtractor(@”d:\Temp\7z465_extra.7z”))
{
for (int i = 0; i < tmp.ArchiveFileData.Count; i++)
{
tmp.ExtractFiles(@”d:\temp\!Пусто\”, tmp.ArchiveFileData[i].Index);
}
//tmp.ExtractFiles(@”d:\temp\!Пусто\”, 1, 3, 5);
}
分卷压缩
SevenZipExtractor.SetLibraryPath(@”d:\Work\Misc\7zip\9.04\CPP\”+
7zip\Bundles\Format7zF\7z.dll”);
using (SevenZipExtractor tmp = new SevenZipExtractor(@”d:\Temp\SevenZip.7z.001″))
{
tmp.ExtractArchive(@”d:\Temp\!Пусто”);
}
压缩文件
SevenZipCompressor tmp = new SevenZipCompressor();
tmp.CompressFiles(@”d:\Temp\arch.7z”, @”d:\Temp\log.txt”);
tmp.CompressDirectory(@”c:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\1033″,
@”D:\Temp\arch.7z”);
压缩ZIP文件
SevenZipCompressor tmp = new SevenZipCompressor();
tmp.ArchiveFormat = OutArchiveFormat.Zip;
tmp.CompressFiles(@”d:\Temp\arch.zip”, @”d:\Temp\gpl.txt”, @”d:\Temp\ru_office.txt”);
多线程解压缩
Thread t1 = new Thread(() =>
{
using (SevenZipExtractor tmp = new SevenZipExtractor(@”D:\Temp\7z465_extra.7z”))
{
tmp.FileExtractionStarted += new EventHandler<FileInfoEventArgs>((s, e) =>
{
Console.WriteLine(String.Format(“[{0}%] {1}”,
e.PercentDone, e.FileInfo.FileName));
});
tmp.ExtractionFinished +=
new EventHandler((s, e) => { Console.WriteLine(“Finished!”); });
tmp.ExtractArchive(@”D:\Temp\t1″);
}
});
Thread t2 = new Thread(() =>
{
using (SevenZipExtractor tmp = new SevenZipExtractor(@”D:\Temp\7z465_extra.7z”))
{
tmp.FileExtractionStarted += new EventHandler<FileInfoEventArgs>((s, e) =>
{
Console.WriteLine(String.Format(“[{0}%] {1}”,
e.PercentDone, e.FileInfo.FileName));
});
tmp.ExtractionFinished +=
new EventHandler((s, e) => { Console.WriteLine(“Finished!”); });
tmp.ExtractArchive(@”D:\Temp\t2″);
}
});
t1.Start();
t2.Start();
t1.Join();
t2.Join();
多线程压缩
Thread t1 = new Thread(() =>
{
SevenZipCompressor tmp = new SevenZipCompressor();
tmp.FileCompressionStarted += new EventHandler<FileNameEventArgs>((s, e) =>
{
Console.WriteLine(String.Format(“[{0}%] {1}”,
e.PercentDone, e.FileName));
});
tmp.CompressDirectory(@”D:\Temp\t1″, @”D:\Temp\arch1.7z”);
});
Thread t2 = new Thread(() =>
{
SevenZipCompressor tmp = new SevenZipCompressor();
tmp.FileCompressionStarted += new EventHandler<FileNameEventArgs>((s, e) =>
{
Console.WriteLine(String.Format(“[{0}%] {1}”,
e.PercentDone, e.FileName));
});
tmp.CompressDirectory(@”D:\Temp\t2″, @”D:\Temp\arch2.7z”);
});
t1.Start();
t2.Start();
t1.Join();
t2.Join();
SevenZipSharp – Release: SevenZipSharp 0.58
http://sevenzipsharp.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=32422#DownloadId=81930
VC遍历文件夹下所有文件和文件夹 – 流云の剑舞秋风 – 博客园
http://www.cnblogs.com/yjm0105/archive/2005/06/22/179353.html
HANDLE hFind=::FindFirstFile(szFind,&FindFileData);
if(INVALID_HANDLE_VALUE == hFind) return;
while(TRUE)
{
if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
if(FindFileData.cFileName[0]!=’.')
{
strcpy(szFile,lpPath);
strcat(szFile,”\\”);
strcat(szFile,FindFileData.cFileName);
find(szFile);
}
}
else
{
cout << FindFileData.cFileName;
}
if(!FindNextFile(hFind,&FindFileData)) break;
}
FindClose(hFind);
VC遍历文件夹下所有文件和文件夹 – 流云の剑舞秋风 – 博客园
http://www.cnblogs.com/yjm0105/archive/2005/06/22/179353.html
C语言帝国: VC 遍历指定目录下的文件
http://www.vcgood.com/forum_posts.asp?TID=2261&PN=1
如何用C实现遍历文件夹? — 编程爱好者论坛存档帖
http://www.programfan.com/club/showpost.asp?id=18098
Windows API一日一练(58)FindFirstFile和FindNextFile函数 – 大坡3D软件开发 – CSDN博客
http://blog.csdn.net/caimouse/archive/2007/10/25/1844006.aspx
C#中获取CPU序列号、网卡Mac地址、IP地址、硬盘序列号、登录用户名、PC类型、计算机名称、物理内存
using System;
using System.Management;
namespace Soyee.Comm
{
/// <summary>
/// Computer Information
/// </summary>
public class Computer
{
public string CpuID;
public string MacAddress;
public string DiskID;
public string IpAddress;
public string LoginUserName;
public string ComputerName;
public string SystemType;
public string TotalPhysicalMemory; //单位:M
private static Computer _instance;
public static Computer Instance()
{
if (_instance == null)
_instance = new Computer();
return _instance;
}
protected Computer()
{
CpuID=GetCpuID();
MacAddress=GetMacAddress();
DiskID=GetDiskID();
IpAddress=GetIPAddress();
LoginUserName=GetUserName();
SystemType=GetSystemType();
TotalPhysicalMemory=GetTotalPhysicalMemory();
ComputerName=GetComputerName();
}
string GetCpuID()
{
try
{
//获取CPU序列号代码
string cpuInfo = “”;//cpu序列号
ManagementClass mc = new ManagementClass(“Win32_Processor”);
ManagementObjectCollection moc = mc.GetInstances();
foreach(ManagementObject mo in moc)
{
cpuInfo = mo.Properties["ProcessorId"].Value.ToString();
}
moc=null;
mc=null;
return cpuInfo;
}
catch
{
return “unknow”;
}
finally
{
}
}
string GetMacAddress()
{
try
{
//获取网卡Mac地址
string mac=”";
ManagementClass mc = new ManagementClass(“Win32_NetworkAdapterConfiguration”);
ManagementObjectCollection moc = mc.GetInstances();
foreach(ManagementObject mo in moc)
{
if((bool)mo["IPEnabled"] == true)
{
mac=mo["MacAddress"].ToString();
break;
}
}
moc=null;
mc=null;
return mac;
}
catch
{
return “unknow”;
}
finally
{
}
}
string GetIPAddress()
{
try
{
//获取IP地址
string st=”";
ManagementClass mc = new ManagementClass(“Win32_NetworkAdapterConfiguration”);
ManagementObjectCollection moc = mc.GetInstances();
foreach(ManagementObject mo in moc)
{
if((bool)mo["IPEnabled"] == true)
{
//st=mo["IpAddress"].ToString();
System.Array ar;
ar=(System.Array)(mo.Properties["IpAddress"].Value);
st=ar.GetValue(0).ToString();
break;
}
}
moc=null;
mc=null;
return st;
}
catch
{
return “unknow”;
}
finally
{
}
}
string GetDiskID()
{
try
{
//获取硬盘ID
String HDid=”";
ManagementClass mc = new ManagementClass(“Win32_DiskDrive”);
ManagementObjectCollection moc = mc.GetInstances();
foreach(ManagementObject mo in moc)
{
HDid = (string)mo.Properties["Model"].Value;
}
moc=null;
mc=null;
return HDid;
}
catch
{
return “unknow”;
}
finally
{
}
}
/// <summary>
/// 操作系统的登录用户名
/// </summary>
/// <returns></returns>
string GetUserName()
{
try
{
string st=”";
ManagementClass mc = new ManagementClass(“Win32_ComputerSystem”);
ManagementObjectCollection moc = mc.GetInstances();
foreach(ManagementObject mo in moc)
{
st=mo["UserName"].ToString();
}
moc=null;
mc=null;
return st;
}
catch
{
return “unknow”;
}
finally
{
}
}
/// <summary>
/// PC类型
/// </summary>
/// <returns></returns>
string GetSystemType()
{
try
{
string st=”";
ManagementClass mc = new ManagementClass(“Win32_ComputerSystem”);
ManagementObjectCollection moc = mc.GetInstances();
foreach(ManagementObject mo in moc)
{
st=mo["SystemType"].ToString();
}
moc=null;
mc=null;
return st;
}
catch
{
return “unknow”;
}
finally
{
}
}
/// <summary>
/// 物理内存
/// </summary>
/// <returns></returns>
string GetTotalPhysicalMemory()
{
try
{
string st=”";
ManagementClass mc = new ManagementClass(“Win32_ComputerSystem”);
ManagementObjectCollection moc = mc.GetInstances();
foreach(ManagementObject mo in moc)
{
st=mo["TotalPhysicalMemory"].ToString();
}
moc=null;
mc=null;
return st;
}
catch
{
return “unknow”;
}
finally
{
}
}
/// <summary>
/// 计算机名称
/// </summary>
/// <returns></returns>
string GetComputerName()
{
try
{
return System.Environment.GetEnvironmentVariable(“ComputerName”);
}
catch
{
return “unknow”;
}
finally
{
}
}
}
}
获取安装目录、临时目录等系统信息的C#源代码
using System;
using System.Management;
using System.Threading;
namespace Soyee.Comm
{
/// Operate MetaSystem information
/// </summary>
public class Software
{
public string OSType;
public string OSVersion;
public string WinTempDir;
public string WinDir;
public string SystemDirectory;
/// <summary>
/// Aplication file directory ,postfix is “\” .for example, D:\Test\Bin\
/// </summary>
public string AplicationDir;
public string AplicationName;
/// <summary>
/// Aplication root directory,postfix is “\” . for example, D:\Test\
/// </summary>
public string InstallDirectory;
public string UserDomainName;
public long WorkingMemory;
private static Software _instance;
public static Software Instance()
{
if (_instance == null)
_instance = new Software();
return _instance;
}
public Software()
{
OSType= System.Environment.GetEnvironmentVariable(“OS”);
WinTempDir=System.Environment.GetEnvironmentVariable(“TEMP”);
WinDir=System.Environment.GetEnvironmentVariable(“WINDIR”);
AplicationDir=System.Environment.CurrentDirectory+@”\“;
OSVersion=System.Environment.OSVersion.ToString();
SystemDirectory=System.Environment.SystemDirectory;
UserDomainName=System.Environment.UserDomainName;
WorkingMemory=System.Environment.WorkingSet;
InstallDirectory=AplicationDir.Replace(@”\bin\Debug”,”").Replace(@”\bin\Release”,”");
AplicationName=GetAplicationName();
}
public string GetInstallDir()
{
string dir;
dir=AplicationDir;
for (int i = 0; i<3;i++)
{
dir=dir.Substring(0,dir.LastIndexOf(@”\”));
}
return dir+@”\“;
}
string GetAplicationName()
{
try
{
//获取应用程序名称
string st=”";
ManagementClass mc = new ManagementClass(“Win32_Process”);
ManagementObjectCollection moc = mc.GetInstances();
foreach(ManagementObject mo in moc)
{
st=mo["Caption"].ToString();
}
//moc.Dispose();
//mc.Dispose();
moc=null;
mc=null;
return st;
}
finally
{
}
}
}
}
try
{
// Create an Image object from a file.
// PhotoTextBox.Text is the full path of your image
using (Image photoImg = Image.FromFile(PhotoTextBox.Text))
{
// Create a Thumbnail from image with size 50×40.
// Change 50 and 40 with whatever size you want
using (Image thumbPhoto = photoImg.GetThumbnailImage(50, 40, null, new System.IntPtr()))
{
// The below code converts an Image object to a byte array
using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
{
thumbPhoto.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
imgBytes = ms.ToArray();
}
}
}
}
catch (Exception exp)
{
MessageBox.Show(“Select a valid photo!”);
PhotoTextBox.Select();
return;
}
C#中让ListBox支持文件路径的拖放
有时,我们程序,需要加载一个文件列表,这个列表,通常用ListBox来存放,为了方便操作,让listBox支持拖放入文件的路径,是个非常好的功能,在.NET里面实现这个功能,是非常方便,只需要3个步骤:
将 ListBox 的 AllowDrop 属性设为 true
在 ListBox 的 DragOver 和 DragEnter 事件中处理
void ListBox1DragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.All;
}
void ListBox1DragOver(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.All;
}
上面的 e.Effect 可以根据实际情况,调节不同的值,不过,如果不确定,就用默认的All
3. 处理拖放事件
void ListBox1DragDrop(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop, false))
{
String[] files = (String[])e.Data.GetData(DataFormats.FileDrop);
foreach (String s in files)
{
(sender as ListBox).Items.Add(s);
}
}
[Flags]
public enum ThreadAccess : int
{
TERMINATE = (0×0001),
SUSPEND_RESUME = (0×0002),
GET_CONTEXT = (0×0008),
SET_CONTEXT = (0×0010),
SET_INFORMATION = (0×0020),
QUERY_INFORMATION = (0×0040),
SET_THREAD_TOKEN = (0×0080),
IMPERSONATE = (0×0100),
DIRECT_IMPERSONATION = (0×0200)
}
[DllImport("kernel32.dll")]
static extern IntPtr OpenThread(ThreadAccess dwDesiredAccess, bool bInheritHandle, uint dwThreadId);
[DllImport("kernel32.dll")]
static extern uint SuspendThread(IntPtr hThread);
[DllImport("kernel32.dll")]
static extern int ResumeThread(IntPtr hThread);
private void SuspendProcess(int PID)
{
Process proc = Process.GetProcessById(PID);
if (proc.ProcessName == string.Empty)
return;
foreach (ProcessThread pT in proc.Threads)
{
IntPtr pOpenThread = OpenThread(ThreadAccess.SUSPEND_RESUME, false, (uint)pT.Id);
if (pOpenThread == IntPtr.Zero)
{
break;
}
SuspendThread(pOpenThread);
}
}
public void ResumeProcess(int PID)
{
Process proc = Process.GetProcessById(PID);
if (proc.ProcessName == string.Empty)
return;
foreach (ProcessThread pT in proc.Threads)
{
IntPtr pOpenThread = OpenThread(ThreadAccess.SUSPEND_RESUME, false, (uint)pT.Id);
if (pOpenThread == IntPtr.Zero)
{
break;
}
ResumeThread(pOpenThread);
}
}
Enable secondary monitor ChangeDisplaySettingsEx failed in Win32 Graphics Display Interface Programming
http://www.microsoft.com/communities/newsgroups/en-us/default.aspx?dg=microsoft.public.win32.programmer.gdi&tid=d9fedbcf-4cbc-43c5-a92e-533d84b06364&cat=en_US_da48b8fe-0981-4869-b053-0c3a6b27a0a5&lang=en&cr=US&sloc=&p=1
pinvoke.net: DEVMODE (Structures)
http://89.234.50.65/default.aspx/Structures/DEVMODE.html
microsoft.public.dotnet.framework.interop: Re: ChangeDisplaySettingsEx
http://www.tech-archive.net/Archive/DotNet/microsoft.public.dotnet.framework.interop/2004-09/0335.html
Problems with ChangeDisplaySettingsEx [SOLVED] – GameDev.Net Discussion Forums
http://www.gamedev.net/community/forums/topic.asp?topic_id=418397
Microsoft Pocketpc Developer Re: ChangeDisplaySettingsEx
http://www.eggheadcafe.com/conversation.aspx?messageid=31298955&threadid=31277020
Secondary Monitor
http://www.autohotkey.com/forum/topic21800-15.html&sid=d86ab1b234bf043b1c06a001c3607cbf
CodeProject: Driver Development Part 6: Introduction to Display Drivers. Free source code and programming help
http://www.codeproject.com/KB/system/driverdev6asp.aspx?fid=262328&df=90&mpp=25&noise=3&sort=Position&view=Quick&fr=51&select=1409927
誰有用Win32去控制雙螢幕的範例 / 驅動程式 / 程式設計俱樂部
http://www.programmer-club.com.tw/ShowSameTitleN/driver/2759.html
编程改变显示器分辨率_widebright的个人空间
http://hi.baidu.com/widebright/blog/item/c07ed4884c546a96a4c272cd.html
C#, C♯, C#相談室 Part54
http://pc12.2ch.net/test/read.cgi/tech/1250911923/
CodeProject: Dynamic Screen Resolution. Free source code and programming help
http://www.codeproject.com/KB/cs/csdynamicscrres.aspx?fid=38736&df=90&mpp=25&noise=3&sort=Position&view=Quick&select=2956257&fr=1
Fullscreen on secondary display – GameDev.Net Discussion Forums
http://www.gamedev.net/community/forums/topic.asp?topic_id=418126
Koders Code Search: User.cs – C#
http://www.koders.com/csharp/fid9F5CC5721F2B7E3E9DB06F267A29D8E65C516EDE.aspx
100分讨论问题:关于一块显卡带两个显示器的问题! VC/MFC / 硬件/系统 – CSDN社区 community.csdn.net
http://topic.csdn.net/t/20040412/11/2953937.html
CodeProject: .NET Wrapper for ChangeDisplaySettingsEX. Free source code and programming help
http://www.codeproject.com/KB/dotnet/Display_Settings.aspx?display=Print
Enumeration and Display Control (Windows)
http://msdn.microsoft.com/en-us/library/dd162617(VS.85).aspx
双显卡的”同步”与”延伸桌面”模式_Script程序语言论坛
http://www.mydianping.com/bbsinfo97422-76072.html
User.ChangeDisplaySettings Method (DEVMODE, Int32)
http://docs.taoframework.com/Tao.Platform.Windows/Tao.Platform.Windows.User.ChangeDisplaySettings_overload_1.html
PRB: You Must Restart the Computer After You Use the ChangeDisplaySettingsEx Function to Attach a Secondary Monitor
http://support.microsoft.com/?scid=kb%3Ben-us%3B308216&x=9&y=9
[python-win32] Re: dualview/extended desktop settings with win32api
http://mail.python.org/pipermail/python-win32/2006-May/004637.html
ChangeDisplaySettingsEx_百度百科
http://baike.baidu.com/view/1080518.htm
动态改变屏幕设置 – 教程手册-教学文档指南资料-在线阅读下载
http://www.itepub.net/html/article/bianchengkaifa/Visual_Basic/youhuajishu/2006/0428/5633.html
Using P/Invoke to Call Unmanaged APIs from your Managed Classes
http://msdn.microsoft.com/en-us/library/aa719104(VS.71).aspx
pinvoke.net: DISP_CHANGE (Enums)
http://www.pinvoke.net/default.aspx/Enums/DISP_CHANGE.html
CodeProject: Dynamic Screen Resolution. Free source code and programming help
http://www.codeproject.com/KB/cs/csdynamicscrres.aspx?df=100&forumid=38736&select=800137
pinvoke.net: ChangeDisplaySettingsEx (user32)
http://www.pinvoke.net/default.aspx/user32/ChangeDisplaySettingsEx.html
pinvoke.net: EnumDisplaySettingsEx (user32)
http://www.pinvoke.net/default.aspx/user32/EnumDisplaySettingsEx.html
How do I enable a second monitor in C# – Stack Overflow
http://stackoverflow.com/questions/233411/how-do-i-enable-a-second-monitor-in-c
C# How to Show windows form on dual monitor
http://www.dotnetwatch.com/C-How-to-Show-windows-form-o444_AR.aspx
CodeProject: Asynchronous Method Invocation. Free source code and programming help
http://www.codeproject.com/KB/cs/AsyncMethodInvocation.aspx
CodeProject: Set Primary Display (ChangeDisplaySettingsEx). Free source code and programming help
http://www.codeproject.com/KB/system/Set_Primary_Display.aspx
pinvoke.net: changedisplaysettingsex (coredll)
http://www.pinvoke.net/default.aspx/coredll/changedisplaysettingsex.html
pinvoke.net: changedisplaysettingsex (user32)
http://www.pinvoke.net/default.aspx/user32.changedisplaysettingsex
Delphi实现动态修改显示器分辨率 – 开发者在线 – www.builder.com.cn
http://www.builder.com.cn/2007/1031/595211.shtml
在VB.NET中改变显示器的分辨率 – 开发者在线 – www.builder.com.cn
http://www.builder.com.cn/2007/0910/498022.shtml
pinvoke.net: ChangeDisplaySettings (user32)
http://www.pinvoke.net/default.aspx/user32/ChangeDisplaySettings.html
API to change resolution – Xtreme Visual Basic Talk
http://www.xtremevbtalk.com/showthread.php?t=190484
How to change Advanced Display properties – CodeGuru Forums
http://www.codeguru.com/forum/showthread.php?t=309231
Changing Dual Display Settings – CodeGuru Forums
http://www.codeguru.com/forum/showthread.php?t=415908
How do I enable a second monitor in C# – Stack Overflow
http://stackoverflow.com/questions/233411/how-do-i-enable-a-second-monitor-in-c
Changing Dual Display Settings – CodeGuru Forums
http://www.codeguru.com/forum/showthread.php?t=415908
CodeProject: .NET Wrapper for ChangeDisplaySettingsEX. Free source code and programming help
http://69.10.233.10/KB/dotnet/Display_Settings.aspx?msg=3117717
重新 PRB: 必须启动计算机使用 ChangeDisplaySettingsEx 函数附加一个辅助监视器后
http://support.microsoft.com/kb/308216/zh-cn
VC基础教程:在vista下运用ChangeDisplaySettings扩展桌面出错,求解[库库中文网]-系统编程教程 QQGB.com
http://www.qqgb.com/Program/VC/VCJC/Program_243611.html
windows系统汇集:怎么样完成笔记本双显示器clone输出[库库中文网]-操作系统教程 QQGB.com
http://www.qqgb.com/Netware/windowsall/252555.html
代码小片断,自动对文本分行的C#函数 – 丁丁的blog – 博客园
http://www.cnblogs.com/ericguo/archive/2008/02/01/multiline_auto_break_function.html
CopyFromScreen截屏
传统截屏
#region 导入函数
[DllImport("gdi32.dll")]
private static extern IntPtr CreateDC(string lpszDriver, string lpszDrivse, string lpszOutput, Int32 lpInitData);
[DllImport("gdi32.dll")]
private static extern IntPtr CreateCompatibleDC(IntPtr hdc);
[DllImport("gdi32.dll")]
private static extern int GetDeviceCaps(IntPtr hdc, Int32 nIndex);
[DllImport("gdi32.dll")]
private static extern IntPtr CreateCompatibleBitmap(IntPtr hdc, int nWidth, int nHeight);
[DllImport("gdi32.dll")]
private static extern IntPtr SelectObject(IntPtr hdc, IntPtr hgdiobj);
[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);
[DllImport("gdi32.dll")]
private static extern int DeleteDC(IntPtr hdc);
#endregion
现在截屏简单多了
Console.WriteLine(DateTime.Now.Millisecond.ToString());
System.Drawing.Bitmap photo = new System.Drawing.Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
System.Drawing.Graphics graphic = System.Drawing.Graphics.FromImage(photo);
graphic.CopyFromScreen(0, 0, 0, 0, new System.Drawing.Size(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height));
photo.Save(@”r:\aa.jpg”, System.Drawing.Imaging.ImageFormat.Jpeg);
Console.WriteLine(DateTime.Now.Millisecond.ToString());
CopyFromScreen 方法对于将一个图像放置于另一个图像顶部非常有用。若要指定源颜色和目标颜色的混合方式,请使用 CopyFromScreen 方法之一,该方法采用 CopyPixelOperation 参数。
采用 WordPress API wrapper for .Net.
在POST结构增加
public string mt_keywords; //标签
public string wp_slug; //URL别名
Post pp = new Post();
pp.title = nl.name;
pp.description = nl.txt;
pp.dateCreated = DateTime.Parse(nl.time);
TreeNode[] ts = treeType.Nodes.Find(nl.parent, true);
if (ts.Length > 0)
{
pp.categories = new string[] { ts[0].Text };
}
pp.wp_slug = nl.p;
string[] stags = nl.p.Split(‘-’);
string strtag = “”;
for (int i = 1; i < stags.Length;i++ )
{
strtag = stags[i] + “,” + strtag;
}
pp.mt_keywords = strtag;
string s = wp.NewPost(pp, true);
将别名分拆后组成TAG
然后发布,返回BLOGID号
标签:c++, rpc, word, wordpress, xml
WordPress 2.7 XML-RPC wrapper for .Net
http://www.orbifold.net/default/?p=1721
XML-RPC.Net
http://www.xml-rpc.net/
WordPress 2.5 XML-RPC wrapper for .Net
http://www.orbifold.net/default/?p=1003
Using Wordpress XMLRPC services | PHP Made Simple
http://www.phpmadesimple.info/2009/07/05/using-wordpress-xmlrpc-services/
Weblog Client « WordPress Codex
http://codex.wordpress.org/Weblog_Client
3.4. C# XML-RPC Tutorial
http://www.wordtracker.com/docs/api/ch03s04.html
CodeProject: Coding Blog Engine with MetaWeblog API Support and Using it with Windows Live Writer. Free source code and programming help
http://www.codeproject.com/KB/XML/MetaWeblogAPI.aspx?display=Print
WP-XML-RPCLib2 – SharpLab.
http://blog.sharplab.net/computer/cprograming/wp-xml-rpclib/3015/
WP-XML-RPCLib2 – SharpLab.
http://blog.sharplab.net/computer/cprograming/wp-xml-rpclib/computer/cprograming/wp-xml-rpclib/3015/
CodeProject: Coding Blog Engine with MetaWeblog API Support and Using it with Windows Live Writer. Free source code and programming help
http://www.codeproject.com/KB/XML/MetaWeblogAPI.aspx
MetaWebLog API and Blog Writers – Rick Strahl’s Web Log
http://www.west-wind.com/WebLog/posts/23858.aspx
Windows Live Writer Beta 2 Now Available
http://www.gtrifonov.com/blog/2007/06/06/Windows_Live_Writer_Beta_2_Now_Available.aspx
Coding blog engine with MetaWeblog API support and using it with Windows Live Writer
http://www.gtrifonov.com/blog/2006/11/27/Coding_blog_engine_with_MetaWeblog_API_support_and.aspx
15 Seconds : Programming for the Palm Part 2 – The Synchronization Process
http://www.15seconds.com/Issue/030722.htm
C# blog client
http://www.aspcode.net/C-blog-client.aspx
The MetaBlog API (Creating and Editing Posts)
http://geekswithblogs.net/Tariq/archive/2009/07/05/133264.aspx
public string wp_slug;
XML-RPC Request Format
http://www.tutorialspoint.com/xml-rpc/xml_rpc_request.htm
3.4. C# XML-RPC Tutorial
http://www.wordtracker.com/docs/api/ch03s04.html
两种检测USB设备插入和移除的方法(Ver 2)-(5)_.Net技术文章_Asp.net_网站开发
http://www.diybl.com/course/4_webprogram/asp.net/netjs/2007930/75568_5.html
怎么在C#的用户控件中得到USB插入的消息?-C#-华软网
http://www.huarw.com/program/net/c/200804/1551709_2.html
[转]U盘加载,卸载,拔出,插入,WM_DEVICECHANGE,WndProc,DBT_DEVICEARRIVAL,DBT_DEVICEREMOVECOMPLETE – Love in coding… – 博客园
http://www.cnblogs.com/freeliver54/archive/2008/10/17/1313627.html#1359427
海浪的BLOG
http://blog.sina.com.cn/rss/1274730801.xml
C# 实现 滚动出来的窗口-IT乐园
http://www.createsoft.net/e305.html
C# 实现 滚动出来的窗口-IT乐园
http://www.createsoft.net/e305.html
System.GC.Collect
VB.NET中得到计算机硬件信息 数据管理技术网
http://www.sqlserver.com.cn/c2l0ZS9zaG93Lmh0bWw_bXlpZD03NTg1url.html
Screen 类 (System.Windows.Forms)
http://msdn.microsoft.com/zh-cn/system.windows.forms.screen(VS.85).aspx
Multi-Monitor Programming – UltraMon multi-monitor components
http://www.realtimesoft.com/multimon/programming/ultramon.asp
VB .NET Dual Monitor : Visual Basic General : Visual Basic : MSDN Forums
http://social.msdn.microsoft.com/forums/en-US/vbgeneral/thread/d867a0cd-1f08-4f16-a8aa-db6ff77b3656/
AllScreens
enable/disable the TV OUT on a graphic card – Windows XP Embedded
http://www.realgeek.com/forums/enable-disable-tv-out-graphic-card-198370.html
在Mobile上使用Direct3D – ciahi的专栏 – CSDNBlog
http://blog.csdn.net/ciahi/archive/2008/10/29/3178064.aspx
Controlling secondary display on a laptop. : VB.net 2005
http://www.experts-exchange.com/Programming/Languages/.NET/Visual_Basic.NET/Q_23442960.html
How to completely control Display Settings in Visual Basic
http://www.experts-exchange.com/Programming/Languages/Visual_Basic/Q_21643972.html
Win32 Application Interface
http://www.osronline.com/ddkx/w98ddk/tvout98_7vs5.htm
enable/disable the TV OUT on a graphic card
http://www.tomshardware.com/forum/133647-33-enable-disable-graphic-card
Memory Leaks With MediaElement and Graphics : Windows Presentation Foundation (WPF) : .NET Development : MSDN Forums
http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/63b2a726-e0fa-455a-b379-db1a49d05897/
Possible Memory Leak Using MediaElement and Stream : The Official Microsoft Silverlight Site
http://silverlight.net/forums/p/20517/72941.aspx
Enable secondary monitor
http://www.pcreview.co.uk/forums/thread-2341761.php
Problems with ChangeDisplaySettingsEx [SOLVED] – GameDev.Net Discussion Forums
http://www.gamedev.net/community/forums/topic.asp?topic_id=418397
ChangeDisplaySettingsEx Visual Basic 6 API Function
http://www.ex-designz.net/apidetail.asp?api_id=605
ChangeDisplaySettingsEx to turn off secondary monitor – Xtreme Visual Basic Talk
http://www.xtremevbtalk.com/showthread.php?t=262334
Nvidia Video Cards – enable/disable the TV OUT on a graphic card
http://hardware.mcse.ms/archive55-2005-6-199721.html
enable/disable the TV OUT on a graphic card
http://www.tomshardware.com/forum/133647-33-enable-disable-graphic-card
武汉宽网&line;武汉宽网下载&line;宽网多媒体软件下载&line;宽网多媒体控件下载&line;多媒体控件&line;多媒体软件&line;多媒体资料&line;多媒体源码∷ 视频微端口驱动程序(5)
http://cache.baidu.com/c?m=9f65cb4a8c8507ed4fece76310408a2345438014639587402383d55f93130a1d5a22b8ec6235107380843e7000db120afdf140733c082aa3de95c81cd2ffd03f2ef83033040b8731468d4afa8a5124b137972efeae69a1fee733e3b9d5a7c85523950e532d&p=8c7fc54ad0c71ebe09a6c7710854&user=baidu
TVOut Test
http://msdn.microsoft.com/en-us/library/bb961316.aspx
Code Samples
http://msdn.microsoft.com/zh-cn/library/ms879577(en-us).aspx
!@#$%[在线等待]!!!怎么样在程序中设置显卡S端子输出的制式??????? VC/MFC / 硬件/系统 – CSDN社区 community.csdn.net
http://topic.csdn.net/t/20050131/15/3766281.html
如何改变屏幕的刷新率 VC/MFC / 基础类 – CSDN社区 community.csdn.net
http://topic.csdn.net/t/20040721/17/3196976.html
20090807 c# WebBrowser NewWindow2
嵌套WEBBROWSER随便写了个程序,可是新窗口总是弹出IE。
找找资料,可以控制新窗口在本程序中打开,可是本程序又是全屏无菜单的,不想越做越复杂。先记录下吧。
如果你用的是VS2003,WebBrowser控件应该是作为ActiveX控件导入的,在该WebBrowser控件的NewWindow2事件内,有一个 AxSHDocVw.DWebBrowserEvents2_NewWindow2Event参数,你把该参数的ppDisp属性设置为你程序中的 WebBrowser控件的Application即可,这个WebBrowser可以是在另一个窗体内,示例代码如下:
private void axWebBrowser1_NewWindow2(object sender, AxSHDocVw.DWebBrowserEvents2_NewWindow2Event e)
{
Form1 frmWB;
frmWB = new Form1();
frmWB.axWebBrowser1.RegisterAsBrowser = true;
e.ppDisp = frmWB.axWebBrowser1.Application;
frmWB.Visible = true;
}
VS2005和2008自带的WebBrowser控件没有这个事件,只有一个NewWindow事件,但该事件的参数CancelEventArgs没有ppDisp属性
在AxWebBrowser中是像下面这样做的, 不知道2.0中这个WebBrowser实现, 难道又是个BUG?
private void axWebBrowser1_NewWindow2(object sender, AxSHDocVw.DWebBrowserEvents2_NewWindow2Event e)
{
//
// let the web browser does’t open new window.
//
e.ppDisp = this.axWebBrowser1.Application;
}
结论出来了: 又是一个BUG! (上一个是BackgroundWorker: http://community.csdn.net/Expert/topic/4707/4707944.xml?temp=.2000391)
请看feedback中心:
http://lab.msdn.microsoft.com/ProductFeedback/viewFeedback.aspx?feedbackid=c5aa05c2-73ce-40af-b6b1-7b5900cf4e9f
http://www.codeproject.com/KB/cpp/ExtendedWebBrowser.aspx