Hello world!

欢迎使用 WordPress。这是您的第一篇日志。您可以编辑它或是删除它,然后开始写您自己的博客。

Posted in 未分类 | 1 Comment

封存

patriciajourney@blogcn.com
封存
我所有学习期间的记忆也许是幸福的,也许是荒芜的
无论如何
都不可能改写
选择
珍藏

end

Posted in 未分类 | Leave a comment

Creat_XML

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Microsoft.Office.Core;
using Word = Microsoft.Office.Interop.Word;
using System.IO;
using System.Reflection;
using System.Xml;
using Excel = Microsoft.Office.Interop.Excel;
 
namespace CreateTable
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
         }
        public void Creat_XML()
        {
            String filename="D:/MyDoc/"+Nametxt.Text.ToString()+".xml";
            myDataSet.Customer.WriteXml(@filename);
            Nametxt.Text = ""; 
            MessageBox.Show("The File is created sucessfully in D:/MyDoc");
         
                   }
        public void Creat_Excel()
        {
            object omissing =System.Reflection.Missing.Value;
   
            //Start excel and create a new file
           // Directory.CreateDirectory("D:/MyDoc");
            string fn=@"D:/MyDoc/sad.xls" ;
            object Exfilename = fn;
       //Create new Excel Document
            Excel1.Application myExcel = new Excel.ApplicationClass();
            myExcel.Application.Workbooks.Add(omissing);
            myExcel.Visible = true;
           try
            {
                 //Insert  new data
                int totalCount = 0;
     
                    int row = myDataSet.Customer.Rows.Count;
                    int column = myDataSet.Customer.Columns.Count;
                 for (int i = 0; i < column; i++)
                    {
                        myExcel.Cells[totalCount + 2, 1 + i] = myDataSet.Customer.Columns[i].ColumnName;
                    }


                    for (int i = 0; i < row; i++)
                    {
                        for (int j = 0; j < column; j++)
                        {
                            myExcel.Cells[totalCount + 3 + i, 1 + j] = "''" + myDataSet.Customer.Rows[i][j].ToString();
                        }
                    }
                }
          
            catch (Exception ex)
            {
           &nbsp;    MessageBox.Show(ex.Message);
            }
            myExcel.ActiveWorkbook._SaveAs(Exfilename, omissing, omissing, omissing, omissing,omissing,Excel.XlSaveAsAccessMode.xlExclusive, omissing, omissing, omissing,omissing);
          MessageBox.Show("The document is created sucessfully in D:/MyDoc");
          
        }
        public void Creat_Word()
        {
            if (Nametxt.Text == "")
            {
                MessageBox.Show("Please Enter the File Name!");
                return;
          }
            try
            {
                object oMissing = System.Reflection.Missing.Value;
                object oEndOfDoc = "\endofdoc"; /* endofdoc is a predefined bookmark *///Start Word and create a new document.
                Directory.CreateDirectory("D:/MyDoc");
                object FileName = "D://MyDoc//" + Nametxt.Text;
                Word._Application oWord;
                Word._Document oDoc;
                oWord = new Word.Application();
                oWord.Visible = false;
                oDoc = oWord.Documents.Add(ref oMissing, ref oMissing,
                    ref oMissing, ref oMissing);
//create a new table
                Word.Table table;
                Word.Range orang = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
                table = oDoc.Tables.Add(orang, myDataSet.Customer.Rows.Count + 1, myDataSet.Customer.Columns.Count, ref oMissing, ref oMissing);
                table.Borders.InsideLineStyle = Word.WdLineStyle.wdLineStyleSingle;
                table.Borders.OutsideLineStyle = Word.WdLineStyle.wdLineStyleSingle;
//Insert Data
                for (int column = 0; column < myDataSet.Customer.Columns.Count; ++column)
                {
                    table.Cell(1, column + 1).Range.Text = myDataSet.Customer.Columns[column].ColumnName.ToString().Trim();


                }
                for (int row = 0; row < myDataSet.Customer.Rows.Count; ++row)
                {
                    for (int column = 0; column < myDataSet.Customer.Columns.Count; ++column)
                    {
                        table.Cell(row + 2, column + 1).Range.Text = myDataSet.Customer.Rows[row][column].ToString().Trim();
                    }
                }


                //Save the Document
                oDoc.SaveAs(ref FileName, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing);
                oDoc.Close(ref oMissing, ref oMissing, ref oMissing);
                oWord.Quit(ref oMissing, ref oMissing, ref oMissing);
                //Waitlabel.Text = "";
                Nametxt.Text = "";
                MessageBox.Show("The document is created sucessfully in D:/MyDoc");
                //Close this form.
                // this.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
              }
        }
        
        private void bt_CreatWord_Click(object sender, EventArgs e)
        {
            if (Nametxt.Text == "")
            {
                MessageBox.Show("Please Enter the File Name!");
                return;
            }
            MessageBox.Show("Please wait for a moment!");
            Creat_Word();
           }


        private void bt_Exit_Click(object sender, EventArgs e)
        {
            System.Windows.Forms.Application.Exit();
        }


        private void Form1_Load(object sender, EventArgs e)
        {
            // TODO: This line of code loads data into the ''myDataSet.Customer'' table. You can move, or remove it, as needed.
            this.customerTableAdapter.Fill(this.myDataSet.Customer);
        }


        private void btn_XML_Click(object sender, EventArgs e)
        {
            if (Nametxt.Text == "")
            {
                MessageBox.Show("Please Enter the File Name!");
                return;
            }
            Creat_XML();
        }
        private void btn_excel_Click(object sender, EventArgs e)
        {
            if (Nametxt.Text == "")
            {
                MessageBox.Show("Please Enter the File Name!");
                return;
            }
            Creat_Excel();
        } 
    }

Posted in 未分类 | Leave a comment

使用 EM_FORMATRANGE 打印 RichTextBox 控件的内容

下面的示例介绍了如何扩展 RichTextBox 类,以及如何使用 EM_FORMATRANGE 打印 RichTextBox 控件的内容。 1. 在 Visual C# .NET 中,新建一个名为 RichTextBoxPrintCtrl 的类库项目。默认情况下创建 Class1.cs。
2. 将 Class1.cs 的名称改为 RichTextBoxPrintCtrl.cs。
3. 在解决方案资源管理器中,右键单击“引用”,然后单击“添加引用”。
4. 在“添加引用”对话框中,双击“System.Drawing.dll”和“System.Windows.Forms.dll”,然后单击“确定”。
5. 将 RichTextBoxPrintCtl.cs 中的现有代码替换为以下代码:
using System;
using System.Windows.Forms;
using System.Drawing;
using System.Runtime.InteropServices;
using System.Drawing.Printing;
namespace RichTextBoxPrintCtrl
{
    public class RichTextBoxPrintCtrl:RichTextBox
    {
        //Convert the unit used by the .NET framework (1/100 inch)
        //and the unit used by Win32 API calls (twips 1/1440 inch)
        private const double anInch = 14.4;
        [StructLayout(LayoutKind.Sequential)]
            private struct RECT
        {
            public int Left;
            public int Top;
            public int Right;
            public int Bottom;
        }
        [StructLayout(LayoutKind.Sequential)]
            private struct CHARRANGE
        {
            public int cpMin;         //First character of range (0 for start of doc)
            public int cpMax;           //Last character of range (-1 for end of doc)
        }
        [StructLayout(LayoutKind.Sequential)]
            private struct FORMATRANGE
        {
            public IntPtr hdc;             //Actual DC to draw on
            public IntPtr hdcTarget;       //Target DC for determining text formatting
            public RECT rc;                //Region of the DC to draw to (in twips)
            public RECT rcPage;            //Region of the whole DC (page size) (in twips)
            public CHARRANGE chrg;         //Range of text to draw (see earlier declaration)
        }
        private const int WM_USER  = 0x0400;
        private const int EM_FORMATRANGE  = WM_USER + 57;
        
        [DllImport("USER32.dll")]
        private static extern IntPtr SendMessage (IntPtr hWnd , int msg , IntPtr wp, IntPtr lp);
        // Render the contents of the RichTextBox for printing
        //    Return the last character printed + 1 (printing start from this point for next page)
        public int Print( int charFrom, int charTo,PrintPageEventArgs e)
        {
            //Calculate the area to render and print
            RECT rectToPrint;
            rectToPrint.Top = (int)(e.MarginBounds.Top * anInch);
            rectToPrint.Bottom = (int)(e.MarginBounds.Bottom * anInch);
            rectToPrint.Left = (int)(e.MarginBounds.Left * anInch);
            rectToPrint.Right = (int)(e.MarginBounds.Right * anInch);
            //Calculate the size of the page
            RECT rectPage;
            rectPage.Top = (int)(e.PageBounds.Top * anInch);
            rectPage.Bottom = (int)(e.PageBounds.Bottom * anInch);
            rectPage.Left = (int)(e.PageBounds.Left * anInch);
            rectPage.Right = (int)(e.PageBounds.Right * anInch);
            IntPtr hdc = e.Graphics.GetHdc();
            FORMATRANGE fmtRange;
            fmtRange.chrg.cpMax = charTo;                //Indicate character from to character to
            fmtRange.chrg.cpMin = charFrom;
            fmtRange.hdc = hdc;                    //Use the same DC for measuring and rendering
            fmtRange.hdcTarget = hdc;              //Point at printer hDC
            fmtRange.rc = rectToPrint;             //Indicate the area on page to print
            fmtRange.rcPage = rectPage;            //Indicate size of page
            IntPtr res = IntPtr.Zero;
            IntPtr wparam = IntPtr.Zero;
            wparam = new IntPtr(1);
            //Get the pointer to the FORMATRANGE structure in memory
            IntPtr lparam= IntPtr.Zero;
            lparam = Marshal.AllocCoTaskMem(Marshal.SizeOf(fmtRange));
            Marshal.StructureToPtr(fmtRange, lparam, false);
            //Send the rendered data for printing
            res = SendMessage(Handle, EM_FORMATRANGE, wparam, lparam);
            //Free the block of memory allocated
            Marshal.FreeCoTaskMem(lparam);
            //Release the device context handle obtained by a previous call
            e.Graphics.ReleaseHdc(hdc);
            //Return last + 1 character printer
            return res.ToInt32();
        }
    }
}
6. 在“生成”菜单中,单击“生成解决方案”以创建 RichTextBoxPrintCtrl.dll。

回到顶端
测试控件
1. 在 Visual C# .NET 中创建一个新的 Windows 应用程序项目。默认情况下将创建出 Form1.cs。
2. 将一个按钮控件从工具箱拖入 Form1。将 Name 属性更改为 btnPageSetup,并将 Text 属性更改为页面设置。
3. 将另一个按钮控件从工具箱拖入 Form1。将 Name 属性更改为 btnPrintPreview,并将 Text 属性更改为打印预览。
4. 将另一个按钮控件从工具箱拖入 Form1。将 Name 属性更改为 btnPrint,并将 Text 属性更改为打印。
5. 在工具箱中,双击“PrintDialog”、“PrintPreviewDialog”、“PrintDocument”和“PageSetupDialog”以将这些控件添加到 Form1 中。
6. 将 PrintDialog1、PrintPreviewDialog1 和 PageSetupDialog1 控件的 Document 属性修改为 PrintDocument1。
7. 在“工具”菜单上,单击“自定义工具箱”。
8. 在“.NET Framework 组件”选项卡上,单击“浏览”,单击以选中“RichTextBoxPrintCtrl.dll”,然后单击“确定”。
9. 将 RichTextBoxPrintCtrl 从工具箱拖入 Form1。
10. 在解决方案资源管理器中,右键单击 Form1.cs,然后单击查看代码。
11. 将以下代码添加到 InitializeComponent 方法中:
        this.printDocument1.BeginPrint += new System.Drawing.Printing.PrintEventHandler(this.printDocument1_BeginPrint);
        this.printDocument1.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(this.printDocument1_PrintPage);
        this.btnPrint.Click += new System.EventHandler(this.btnPrint_Click);
        this.btnPrintPreview.Click += new System.EventHandler(this.btnPrintPreview_Click);
        this.btnPageSetup.Click += new System.EventHandler(this.btnPageSetup_Click);
12. 将下面的代码添加到 Form1 类:
        private int checkPrint;
        private void btnPageSetup_Click(object sender, System.EventArgs e)
        {
            pageSetupDialog1.ShowDialog();
        }
        private void btnPrintPreview_Click(object sender, System.EventArgs e)
        {
            printPreviewDialog1.ShowDialog();
        }
        private void btnPrint_Click(object sender, System.EventArgs e)
        {
            if (printDialog1.ShowDialog() == DialogResult.OK)
                printDocument1.Print();
        }
        private void printDocument1_BeginPrint(object sender, System.Drawing.Printing.PrintEventArgs e)
        {
            checkPrint = 0;
        }
        private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
        {
            // Print the content of RichTextBox. Store the last character printed.
            checkPrint = richTextBoxPrintCtrl1.Print(checkPrint, richTextBoxPrintCtrl1.TextLength, e);
            // Check for more pages
            if (checkPrint < richTextBoxPrintCtrl1.TextLength)
                e.HasMorePages = true;
            else
                e.HasMorePages = false;
        }
13. 在“调试”菜单上,单击“启动”以运行该应用程序。Form1 将显示出来。
14. 在 RichTextBoxPrintCtrl 中键入一些文本。
15. 单击“页面设置”以设置页面设置。  
16. 单击“打印预览”以查看页面的打印预览。
17. 单击“打印”以打印“RichTextBoxPrintCtrl”的内容。

回到顶端
参考
有关其他信息,请参见 Microsoft .NET Framework SDK 文档中的下列主题:
RichTextBox 类
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemWindowsFormsRichTextBoxClassTopic.asp (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemWindowsFormsRichTextBoxClassTopic.asp)

Posted in 未分类 | Leave a comment

无题

        每次都不努力
   所以每到这个时候都会害怕
     不努力就没有自信
          是吧!
  
om3079_8 

Posted in 未分类 | Leave a comment

数据库应用

在大的数据库应用中,经常因为各种原因遇到重复的记录,造成数据的冗余和维护上的不便。
1.用rowid方法
2.用group by方法
3.用distinct方法
1。用rowid方法
据据oracle带的rowid属性,进行判断,是否存在重复,语句如下:
查数据:
    select * from table1 a where rowid !=(select max(rowid)
    from table1 b where a.name1=b.name1 and a.name2=b.name2......)
删数据:
   delete from table1 a where rowid !=(select max(rowid)
    from table1 b where a.name1=b.name1 and a.name2=b.name2......)
2.group by方法
查数据:
  select count(num), max(name) from student --列出重复的记录数,并列出他的name属性
  group by num
  having count(num) >1 --按num分组后找出表中num列重复,即出现次数大于一次
删数据:
  delete from student
  group by num
  having count(num) >1
  这样的话就把所有重复的都删除了。
3.用distinct方法 -对于小的表比较有用
create table table_new as select distinct * from table1 minux
truncate table table1;
insert into table1 select * from table_new;


select sum(bag_weight),sum(bag_total) from tdespatch


有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。
  (1)、对于第一种重复,比较容易解决,使用select distinct * from tableName就可以得到无重复记录的结果集。如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除:
select distinct * into #Tmp from tableName
drop table tableName
select * into tableName from #Tmp
drop table #Tmp
发生这种重复的原因是表设计不周产生的,增加唯一索引列即可解决。
  (2)、这类重复问题通常要求保留重复记录中的第一条记录,操作方法如下:
  假设有重复的字段为Name,Address,要求得到这两个字段唯一的结果集
select identity(int,1,1) as autoID, * into #Tmp from tableName
select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID
select * from #Tmp where autoID in(select autoID from #tmp2)
  最后一个select即得到了Name,Address不重复的结果集(但多了一个autoID字段,实际写时可以写在select子句中省去此列

Posted in 未分类 | Leave a comment

word模板生成word报表文档


主要功能为根据word模板生成word报表文档,注意引用Interop.Word.dll;
首先要生成word程序对象
Word.Application app = new Word.Application();
根据模板文件生成新文件框架
File.Copy(TemplateFile, FileName);
生成documnet对象
ord.Document doc = new Word.Document();
        打开新文挡
        doc = app.Documents.Open(ref Obj_FileName, ref missing, ref ReadOnly, ref missing,
            ref missing, ref missing, ref missing, ref missing,
            ref missing, ref missing, ref missing, ref Visible,
            ref missing, ref missing, ref missing,
            ref missing);
        doc.Activate();
将光标定位到新的书签(模板中定义了书签的位置),下面代码为在光标位置输出一行,然后回车
        //光标转到书签
        for (int bookIndex = 0; bookIndex < 5; bookIndex++)
        {
            object BookMarkName = "BookMark" + bookIndex.ToString();
            object what = Word.WdGoToItem.wdGoToBookmark;
            doc.ActiveWindow.Selection.GoTo(ref what, ref missing, ref missing, ref BookMarkName);
            doc.ActiveWindow.Selection.TypeText("文明单位" + bookIndex.ToString() + "zaddd    25      大学");
            doc.ActiveWindow.Selection.TypeParagraph();
        }
输出完毕后,最后关闭doc对象
        object IsSave = true;
        doc.Close(ref IsSave, ref missing, ref missing);

完整事例代码如下:
using System;
using System.IO;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;


public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {


    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        Word.Application app = new Word.Application();
        //模板文件
        string TemplateFile = @"D:MyworkExcelReportsServerReportServerTempalteSmallList.doc";
        //生成的具有模板样式的新文件
        string FileName = @"C :D ocuments and SettingsAdministrator桌面" + DateTime.Now.ToString("yyyyMMddHHmmssfffffff")+".doc";
        //模板文件拷贝到新文件
        File.Copy(TemplateFile, FileName);
        Word.Document doc = new Word.Document();
        object Obj_FileName = FileName;
        object Visible = false;
        object ReadOnly = false;
        object missing = System.Reflection.Missing.Value;
        //打开文件
        doc = app.Documents.Open(ref Obj_FileName, ref missing, ref ReadOnly, ref missing,
            ref missing, ref missing, ref missing, ref missing,
            ref missing, ref missing, ref missing, ref Visible,
            ref missing, ref missing, ref missing,
            ref missing);
        doc.Activate();


        //光标转到书签
        for (int bookIndex = 0; bookIndex < 5; bookIndex++)
        {
            object BookMarkName = "BookMark" + bookIndex.ToString();
            object what = Word.WdGoToItem.wdGoToBookmark;
            doc.ActiveWindow.Selection.GoTo(ref what, ref missing, ref missing, ref BookMarkName);
            doc.ActiveWindow.Selection.TypeText("文明单位" + bookIndex.ToString() + "zaddd    25      大学");
            doc.ActiveWindow.Selection.TypeParagraph();
        }
        object IsSave = true;
        doc.Close(ref IsSave, ref missing, ref missing);



        Response.Write("<script language='javascript'>alert('生成模板成功!')</script>");
    }
}

附:
光标到 书签Title 的位置
object BookMarkName="Title";
object what =Word.WdGoToItem.wdGoToBookmark;
Doc.ActiveWindow.Selection.GoTo(ref what ,ref missing,ref missing,ref BookMarkName);                       
在当前的光标写文本
Doc.ActiveWindow.Selection.TypeText("变更通知");


当前的光标换行
Doc.ActiveWindow.Selection.TypeParagraph();


当前的光标设置格式(举例 对齐方式)                                                              Doc.ActiveWindow.Selection.ParagraphFormat.Alignment=Word.WdParagraphAlignment.wdAlignParagraphRight;


注意 ParagraphFormat 是设置字体的格式的地方

Posted in 未分类 | Leave a comment

转载

具有中国特色的脑筋急转弯


问:边做假药广告、边说假药效果、边痛斥假药危害的是什么?
答:江湖骗子。
错,是CCTV。


问:比上大学还贵的是什么?
答:出国留学。
错,是幼儿园。


问:为什么有人从几千米高直接跌落到千米左右却面不改色心不跳?
答:是在跳伞。
错,他们是中国股民。


问:某人第一个月拿1000元工资,第二月拿800,第三月拿600,请问他的工资是降低了还是增长了?
答:降低了。
错,是负增长。


问:全副武装的人与手无寸铁的人进行激烈的搏斗这是什么事情?
答:是抗日战争。
错,是城市管理者执法。


问:你只有10平米的房屋,邻居从90平米换到190平米,你的居住面积有没有增加?
答:没有。
错,你在平均住房面积里被增加了50平米。


问:明明你口袋里只有50元,却搞一大堆数据证明你实际有100元的是什么人?
答:骗子。
错,是统计局


问:一个永远要你对她负责而她却不对你负责的是谁?
答:二有暗香盈袖奶。
错!是银行。


问:说起来与你时刻密切相关,但需要时却看不见也找不到的是什么?
答:空气。
错!是相关部门

Posted in 未分类 | Leave a comment

俪影媚人


135341_2

135340_2

135342_2

135343_2

135347_2

Posted in 未分类 | 3 Comments

解决了快要把我逼疯得问题

一、项目中要实现在服务器端打开一个Word模版文件,修改其内容后再下载到客户端使用,在Asp.net页面中建立Microsoft.Office.Interop.Word.Application对象时出现“消息筛选器显示应用程序正在使用中”的错误,提示信息如下:

消息筛选器显示应用程序正在使用中。  
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。  
异常详细信息: System.Runtime.InteropServices.COMException: 消息筛选器显示应用程序正在使用中。

1、在命令行中输入:dcomcnfg,会显示出“组件服务”管理器
2、打开“组件服务->计算机->我的电脑->DCOM 配置”,找到“Microsoft Word文档”,单击右键,选择“属性”
3、在“属性”对话框中单击“标识”选项卡,选择“交互式用户””,关闭“组件服务”管理器。

1、打开“组件服务”
2、依次打开 组件服务、计算机、我的电脑、Dcom配置
3、找到 microsoft word 右键菜单 属性
4、设置 “位置”为在此计算机上运行程序
5、安全 启动和访问权限 设置成自定义 添加everyone 允许
6、再加上 楼上的设置

<configuration>
<system.web>
<identity impersonate="true"/>
</system.web>
</configuration>

二、组件服务-计算机-我的电脑右键无属性|组件服务打不开的解决办法
在关闭135端口有时会遇到这种情况:
依次打开组件服务-计算机-我的电脑会出现红色向下箭头
右键找不到属性选项
解决办法如下:
在“服务”里找到这三个服务,都启动就行了

Distributed Transaction Coordinator


Remote Procedure Call (RPC)


Security Accounts Manager

dtc的启动经常会遇到问题,有以下解决办法:
1.直接运行msdtc -resetlog
2.A.在命令行下运行 msdtc -uninstall,删除 msdtc(Distributed Transaction Coordinator)服务
   B.在“本地连接”的属性中删除了 NetBIOS 协议
   C.重新启动机器后,在命令行下运行 msdtc -install,安装 msdtc 服务。
   D.在数据库服务器上,在“组件服务”mmc中,依次打开“组件服务”、“计算机”,在“我的电脑”上点右键选择“属性”。 然后选择“msdtc”选项卡中的“安全配置”,确认选中“网络 DTC 访问”,并选择“不要求进行验证”。

Posted in 技术 | 1 Comment