¡¡¡¡´ó¼ÒÔÚʵ¼Ê¹¤×÷ѧϰC#µÄʱºò£¬¿ÉÄÜ»áÎÊ£ºÎªÊ²Ã´ÎÒÃÇҪΪһЩÒѾ´æÔڵŦÄÜ£¨±ÈÈçWindowsÖеÄһЩ¹¦ÄÜ£¬C++ÖÐÒѾ±àдºÃµÄһЩ·½·¨£©ÒªÖØÐ±àд´úÂ룬C#ÓÐûÓз½·¨¿ÉÒÔÖ±½Ó¶¼ÓÃÕâЩԱ¾ÒѾ´æÔڵŦÄÜÄØ£¿´ð°¸Êǿ϶¨µÄ£¬´ó¼Ò¿ÉÒÔͨ¹ýC#ÖеÄDllImportÖ±½Óµ÷ÓÃÕâЩ¹¦ÄÜ¡£
¡¡¡¡DllImportËùÔÚµÄÃû×Ö¿Õ¼ä using System.Runtime.InteropServices;
¡¡¡¡MSDNÖжÔDllImportAttributeµÄ½âÊÍÊÇÕâÑùµÄ£º¿É½«¸ÃÊôÐÔÓ¦ÓÃÓÚ·½·¨¡£DllImportAttribute ÊôÐÔÌṩ¶Ô´Ó·ÇÍÐ¹Ü DLL µ¼³öµÄº¯Êý½øÐе÷ÓÃËù±ØÐèµÄÐÅÏ¢¡£×÷Ϊ×îµÍÒªÇ󣬱ØÐëÌṩ°üº¬Èë¿ÚµãµÄ DLL µÄÃû³Æ¡£
DllImport ÊôÐÔ¶¨ÒåÈçÏ£º
namespace System.Runtime.InteropServices
{
¡¡ [AttributeUsage(AttributeTargets.Method)]
¡¡ public class DllImportAttribute: System.Attribute
¡¡ {
¡¡ ¡¡public DllImportAttribute(string dllName) {...}
¡¡ ¡¡public CallingConvention CallingConvention;
¡¡ ¡¡public CharSet CharSet;
¡¡¡¡ public string EntryPoint;
¡¡ ¡¡public bool ExactSpell ......
//ÃüÃû¿Õ¼ä using Microsoft.Win32;
private void checkBox2_CheckedChanged(object sender, System.EventArgs e)
{
if (checkBox2.Checked) //ÉèÖÿª»ú×ÔÆô¶¯
{
//MessageBox.Show ("ÉèÖÿª»ú×ÔÆô¶¯ÐèÒªÐÞ¸Ä×¢²á±í","Ìáʾ");
string path = Application.ExecutablePath;
RegistryKey rk = Registry.LocalMachine;
RegistryKey rk2 = rk.CreateSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run");
rk2.SetValue( "JcShutdown",path );
rk2.Close();
rk.Close();
}
else //È¡Ïû¿ª»ú×ÔÆô¶¯
{
//MessageBox.Show ("È¡Ïû¿ª»ú×ÔÆô¶¯ÐèÒªÐÞ¸Ä×¢²á±í","Ìáʾ");
string path = Application.ExecutablePath;
RegistryKey rk = Registry.LocalMachine;
RegistryKey rk2 = rk.CreateSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run");
rk2.DeleteValue("JcShutdown",false);
rk2.Close();
rk.Close();
}
} ......
½ñÌìÓõ½Õâ¸ö£¬ÍøÉÏÕÒ¸ö²»´íµÄ£¬±£´æÏÂÀ´¡£
×¢Ò⣺Õâ¸ö·½·¨ÊÇ¿ìËٹػú£¬²»»á±£´æÄãµÄÈκÎδ±£´æÐÅÏ¢¡£
// Õâ¸ö½á¹¹Ì彫»á´«µÝ¸øAPI¡£Ê¹ÓÃStructLayout
[StructLayout(LayoutKind.Sequential, Pack = 1)]
internal struct TokPriv1Luid
{
public int Count;
public long Luid;
public int Attr;
}
// µ¼ÈëµÄ·½·¨±ØÐëÊÇstatic externµÄ£¬²¢ÇÒûÓз½·¨Ìå¡£µ÷ÓÃÕâЩ·½·¨¾ÍÏ൱ÓÚµ÷ÓÃWindows API¡£
[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 s ......
private void MakeLegend(IActiveView activeView,IPageLayout pageLayout)
{
//¶¨ÒåͼÀýUID¶ÔÏó
UID uid = new UIDClass();
uid.Value="esriCore.Legend";
//ÉèÖÃͼÀý´æ·ÅµÄ×ø±êλÖÃ
//¶¨Ò嵥λ
pageLayout.Page.Units = esriUnits.esriCentimeters;
//µÃµ½²ÝͼÈÝÆ÷¶ÔÏó
IGraphicsContainer container = pageLayout as IGraphicsContainer;
//µÃµ½µ ......
C#¶ÁÈ¡ExcelÓöµ½ÎÞ·¨¶ÁÈ¡µÄ½â¾ö·½·¨£º
1.ÔÚµ¼ÈëÊý¾ÝÁ¬½Ó×Ö·û´®ÖУ¬½«IMEX=1¼ÓÈ룬“Provider=Microsoft.Jet.OLEDB.4.0;Data Source="C:\Data.xls";Extended Properties="Excel 8.0;HDR=Yes;IMEX=1; ”£¬ÕâÑù¾Í¿ÉÒÔ¡£
C#¶ÁÈ¡ExcelÐèҪעÒâµÄ£º
IMEX=1£º»ìºÏģʽ
HDR=Yes; ÊÇ·ñÈõÚÒ»ÐÐ×÷ΪÁÐÍ·
Á½Õß±ØÐëÒ»ÆðʹÓá£
±¾ÒÔΪÕâÑù¾ÍOKÁË¡£
µ«ÔÚʵ¼ÊʹÓùý³ÌÖУ¬ÕâÑùÉèÖû¹ÊDz»ÐУ¬²éÔÄÁ˲»ÉÙ×ÊÁϲŷ¢ÏÖ£¬ÔÀ´»¹ÓÐÒ»¸ö×¢²á±íÀïµÄÐÅÏ¢ÐèÒªÐ޸ģ¬
ÕâÑù´øÄÜÈÃexcel²»ÔÙʹÓÃǰ8ÐеÄÄÚÈÝÀ´È·¶¨¸ÃÁеÄÀàÐÍ¡£
C#¶ÁÈ¡ExcelÖ®×¢²á±íÐÞ¸ÄÄÚÈÝÈçÏ£º
ÔÚHKLM\Software\Microsoft\Jet\4.0\Engines\ExcelÓÐÒ»¸öTypeGuessRowsÖµ,Ô¤ÉèÊÇ8,±íʾ»áÏȶÁȡǰ8ÁÐÀ´¾ö¶¨Ã¿Ò»¸öÀ¸Î»µÄÐÍ̬,ËùÒÔÈç¹ûǰ8ÁеÄ×ÊÁ϶¼ÊÇÊý×Ö,µ½Á˵Ú9ÁÐÒÔºó³öÏÖµÄÎÄ×Ö×ÊÁ϶¼»á±ä³Énull,ËùÒÔÈç¹ûÒª½â¾öÕâ¸öÎÊÌâ,Ö»Òª°ÑTypeGuessRows»úÂëÖµ¸Ä³É0,¾Í¿ÉÒÔ½âÕâ¸öÎÊÌâÁË!
......
OleDbConnection conn = null;
try
{
`string strConn;
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source="+path+";"+
"Extended Properties='Excel 8.0;'";
conn = new OleDbConnection(strConn);
conn.Open();
  ......