小编Yah*_*hia的帖子

如何获取默认NIC连接名称

重要编辑:再次回到这个主题.正如您所说,应该没有默认NIC,我试图了解是否有办法检测实际连接的所有NIC.

拥有我的物理接口的MAC地址有一种编程方式来获取接口名称/接口状态/等...

例如,我的XP机器:

器件Realtek RTL8139系列PCI快速以太网NIC MAC XXXX-XXXX-XXXX

XXXX-XXXX-XXXX就是我所知道的

通过此设备,我使用"本地连接"连接进行连接(所有信息都与网关,子网等相关)

所以我正在搜索XXXX-XXXX-XXXX和本地连接之间的链接.

希望现在一切都清楚了.

谢谢大家!PS抱歉延迟... +1投票给所有人,耐心等待!


老问题


大家好,我想使用命令netsh更改"本地连接"的IP.

我的问题是有一种编程方式来获取默认连接名称(即恰好是"本地连接")?

谢谢

编辑:我不需要所有连接名称的列表,但只需要默认列表.访问注册表我得到列表,似乎默认标记为*.不幸的是,在控制台上打印它们有点像10种不同的"局域连接"...

Local Area Connection* 13
6TO4 Adapter
VMware Network Adapter VMnet1
Wireless Network Connection 2
Reusable ISATAP Interface {483968F2-DBF9-4596-B8BE-725FAAB89F93}
Local Area Connection* 3
Local Area Connection* 2
Reusable Microsoft 6To4 Adapter
Local Area Connection* 7
VMware Network Adapter VMnet8
Local Area Connection* 8
isatap.replynet.prv
Local Area Connection* 9
Local Area Connection* 12
isatap.{FAA80CE0-D641-408A-83F8-5F9C394FFD76}
Bluetooth Network Connection
Local Area Connection* 4
isatap.{40156BF9-6599-4912-A315-62DE5342B452}
isatap.{7651F2F5-4888-4258-92C5-6822C506D726} …
Run Code Online (Sandbox Code Playgroud)

c# command-line netsh

4
推荐指数
2
解决办法
1万
查看次数

Linq查询 - 根据首字母b/w两个范围查找字符串

我们有一个包含国家名称的列表.我们需要从列表b/w两个字母中找到国家/地区的名称.类似名称以b/w AG开头的所有国家/地区的名称等.我们创建以下linq查询,但它的丑陋.

var countryAG = from elements in countryList
where elements.StartsWith("A") || 
elements.StartsWith("B") || 
elements.StartsWith("C") || 
elements.StartsWith("D") || 
elements.StartsWith("E") || 
elements.StartsWith("F") || 
elements.StartsWith("G") || 
elements.StartsWith("H") 
select elements;
Run Code Online (Sandbox Code Playgroud)

其中countryList是在C#中创建的

List< string> countryList = new List< string>();
Run Code Online (Sandbox Code Playgroud)

完成上述任务的任何帮助或任何其他有效方法?

c# linq letters

4
推荐指数
1
解决办法
1万
查看次数

检测Windows 7审核模式

背景

OEM,系统管理员等经常使用OPKWAIK进行大规模安装.在此期间,他们经常发布一些预安装的应用程序.当Windows安装进入审核模式时,会发生此类应用程序的安装

使用c#,如何检测Windows当前处于审核模式?

c# windows .net-3.5

4
推荐指数
1
解决办法
1629
查看次数

如何使用互操作向Outlook日历添加新的会议请求?

好的,我正在尝试使用Interop连接到C#中的共享Outlook日历并添加新的会议请求.

这是我到目前为止所做的,从我的using语句开始(这是一个Windows窗体):

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Reflection;
using System.Windows.Forms;
using Outlook = Microsoft.Office.Interop.Outlook;
Run Code Online (Sandbox Code Playgroud)

然后我有一个叫做"约会"的公共课,如下:

public class Appointments
{
    public string ConversationTopic { get; set; }
    public int Duration { get; set; }
    public DateTime StartTime { get; set; }
    public DateTime EndTime { get; set; }
    public string Organizer { get; set; }
    public int ReminderMinutesBeforeStart { get; set; }
    public string RequiredAttendees { get; set; }
    public string Subject { get; set; }
    public string Body …
Run Code Online (Sandbox Code Playgroud)

c# outlook interop

4
推荐指数
1
解决办法
1万
查看次数

使正在运行的进程成为活动窗口

好的,我有三个Microsoft Access数据库.我希望能够以编程方式在这些之间切换.我有一个void方法,它接受一个名为dbName(我的数据库名称)的字符串参数.

public void SwitchDatabase(string dbName)
{

}
Run Code Online (Sandbox Code Playgroud)

我知道我的Access数据库的MainWindowTitle是什么,每个数据库有不同的MainWindowTitle所以我可以创建一个Process类的数组,并使它相等,所以System.Diagnostics.Process.GetProcesses().然后我可以遍历我正在运行的进程,直到找到ProcessName为MSACCESS且MainWindowTitle正确的那个,如下所示:

Process[] processList = Process.GetProcesses();

foreach (Process theProcess in processList)
{
    string processName = theProcess.ProcessName;
    string mainWindowTitle = theProcess.MainWindowTitle;
}
Run Code Online (Sandbox Code Playgroud)

一旦我找到了这个,我就可以获取进程ID,现在我想让这个进程成为我的活动窗口.我该怎么做呢?

谢谢

c# ms-access

4
推荐指数
2
解决办法
2万
查看次数

访问具有键值数组的字典

我有一个字典,其中包含一个数组,定义为:

Dictionary<string, string[]> wordDictionary = new Dictionary<string, string[]>();
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以在没有foreach迭代的情况下访问字典中的特定值.

c# foreach dictionary

4
推荐指数
1
解决办法
4193
查看次数

DataGridViewComboBoxCell手动设置值,值无效

这是我的代码:

        private class Person
        {
            private string myName;
            private int myValue;

            public Person(string name, int value)
            {
                myName = name; 
                myValue = value;
            }
            public override string ToString()
            {
                return myName;
            }

            public string Name
            {
                get { return myName; }
                set { myName = value; }
            }

            public int Value
            {
                get { return myValue; }
                set { myValue = value; }
            }
        }
Run Code Online (Sandbox Code Playgroud)

我用它来填充DataGridViewComboBoxCell,如下所示:

myDataGridViewComboBoxCell.ValueMember = "Value";
myDataGridViewComboBoxCell.DisplayMember = "Name";
myDataGridViewComboBoxCell.Items.Add(new Person("blabla", someNumber));
Run Code Online (Sandbox Code Playgroud)

我现在要做的就是选择一个人:

myDataGridViewComboBoxCell.Value = someNumber;
Run Code Online (Sandbox Code Playgroud)

但继续得到"价值无效" …

c# datagridview

3
推荐指数
1
解决办法
2万
查看次数

正确将字节从C++转换为delphi AnsiString

我有dll接受来自C++的字节数组的指针,并尝试通过以下方式将此数据移动到AnsiString中

procedure Convert(const PByteArr: Pointer; ArrSize: Cardinal); export; cdecl;
var
  Buf: AnsiString;
begin
  SetString(Buf, PAnsiChar(PByteArr^), ArrSize);
end;
Run Code Online (Sandbox Code Playgroud)

如果我从Delphi调用这个方法

procedure Try;
var
  M: TMemoryStream;
  Arr: TBytes;  
begin
  M := TMemoryStream.Create;
  try
    M.LoadFromFile('myfile.dat');
    SetLength(Arr, M.Size);
    M.Position := 0;
    M.Read(Arr[0], M.Size);
  finally
    M.Free;
  end;
  Convert(@Arr, Length(Arr));
end;
Run Code Online (Sandbox Code Playgroud)

它工作正常,但从c ++如果在SetString上提供AV.

请帮我解决一下这个.


来自RredCat:

让我为Yuriy的问题添加一些解释:首先是我们使用的语言.我们需要在C#项目中调用Delphi dll.为此,我创建了C++\CLI层(代理).现在关于头文件中的C++\CLI代码:

HINSTANCE hDelphiDLL;
typedef void (*pPBDFUNC)(byte* aBytes, int size);
pPBDFUNC Convert;
Run Code Online (Sandbox Code Playgroud)

在cpp中我在构造函数中设置Convert:

hDelphiDLL = LoadLibrary(<path to dll>);

if(NULL != hDelphiDLL ){
    pPBDFUNC clb= GetProcAddress(HMODULE(hDelphiDLL), "Convert");
        if(NULL != clb){
            Convert= pPBDFUNC (clb); …
Run Code Online (Sandbox Code Playgroud)

c# c++ delphi interop data-conversion

3
推荐指数
1
解决办法
1372
查看次数

将多个单元格添加到单个行

我是新手,当我尝试在一行中添加多个单元格时,它表示内容不可读.这就是我所拥有的.

SpreadsheetDocument ssDoc = SpreadsheetDocument.Create(saveFile, SpreadsheetDocumentType.Workbook);

// Add a WorkbookPart to the document
WorkbookPart workbookPart = ssDoc.AddWorkbookPart();
workbookPart.Workbook = new Workbook();
// Add a WorksheetPart to theWorkbookPart
WorksheetPart worksheetPart = workbookPart.AddNewPart<WorksheetPart>();
worksheetPart.Worksheet = new Worksheet(new SheetData());

Sheets sheets = ssDoc.WorkbookPart.Workbook.AppendChild<Sheets>(new Sheets());

Sheet sheet = new Sheet()
{   Id = ssDoc.WorkbookPart.GetIdOfPart(worksheetPart),
    SheetId = 1, Name = "Sheet1"
};

sheets.Append(sheet);
Worksheet worksheet = new Worksheet();
SheetData sheetData = new SheetData();
Row row = new Row();

Cell cell = new Cell()
{
    CellReference …
Run Code Online (Sandbox Code Playgroud)

c# openxml openxml-sdk

3
推荐指数
1
解决办法
6314
查看次数

提高字符串数组的自定义排序性能

我试图找到一种有效的方法来根据数组的每个字符串元素中的数值对字符串数组进行排序.我目前正在使用Array.Sort(array,customComparer)静态方法(快速排序),我的自定义比较器类(按降序排序)是:

class StringComparer : IComparer<string>
{
    public int Compare(string a, string b)
    {
        string s1 = a;
        string s2 = b;

        Match matchA = Regex.Match(s1, @"\d+$");
        Match matchB = Regex.Match(s2, @"\d+$");

        long numberA = long.Parse(matchA.Value);
        long numberB = long.Parse(matchB.Value);

        if (numberB - numberA < 0)
        {
            return -1;
        }
        else 
        {
            return 1;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这种方法非常有效,但有时需要花费太多时间进行排序,在一台2.4Ghz处理器上使用超过一分钟的10万个字符串数组.我想知道是否有更有效的方法来实现同样的目标.例如,实现不同的排序算法或采用另一种方法,例如使用字典并对值进行排序(值是字符串的数字部分).有什么建议?提前致谢!

c# arrays sorting algorithm performance

3
推荐指数
1
解决办法
391
查看次数