menu

秋梦无痕

一场秋雨无梦痕,春夜清风冻煞人。冬来冷水寒似铁,夏至京北蟑满城。

Avatar

在Managed C++中使用Windows API

昨天尝试用Managed C++重写一个算法,发现不会调用Winodws API,用VC++的方法引用完全找不到,后来在MSDN中找到答案了:

#using <mscorlib.dll>
using namespace System::Runtime::InteropServices;
// for DllImportAttribute

namespace Win32API {
[DllImport("Kernel32.dll", EntryPoint = "GetProcessHeap", CharSet = Unicode)]
int GetProcessHeap();

[DllImport("Kernel32.dll", EntryPoint = "HeapAlloc", CharSet = Unicode)]
void * HeapAlloc(int hHeap, int flags, int size);

[DllImport("Kernel32.dll", EntryPoint = "HeapFree", CharSet = Unicode)]
bool HeapFree(int hHeap, int flags, void* block);

[DllImport("Kernel32.dll", EntryPoint = "HeapReAlloc", CharSet = Unicode)]
void * HeapReAlloc(int hHeap, int flags, void* block, int size);


[DllImport("Kernel32.dll", EntryPoint = "HeapSize", CharSet = Unicode)]
int HeapSize(int hHeap, int flags, void* block);

[DllImport("Kernel32.dll", EntryPoint = "CopyMemory", CharSet = Unicode)]
void CopyMemory(void* Destination, void* Source,int Length);
}

然后在程序中Win32API::GetProcessHeap()调用就可以了。

具体的解释和在C#中使用Windows API的方法请参看C#中调用Windows API的要点(by: hahahawk@51blog)

有没有c#的windows forms的代码?做个管理系统想参考一下

我没有写过C#的Windows Form,你可以在MSDN中找代码啊,一堆堆的。嗯,还有,你也可以找天魔,我记得他很久(2 yrs?)以前就写过一个日记本开放源代码来着。

评论已关闭