首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在C#中确定当前关注进程的名称

在 C# 中确定当前关注进程的名称,可以通过 Windows API GetWindowText 函数和 System.Diagnostics.Process 类来实现。以下是一个完整的示例代码,展示了如何在 C# 中获取当前运行的进程名称:

代码语言:csharp
复制
using System;
using System.Diagnostics;

class Program
{
    static void Main(string[] args)
    {
        // 获取当前进程的 ID
        Process[] processes = Process.GetProcessesByName("explorer");
        if (processes.Length > 0)
        {
            Console.WriteLine("Current Explorer process ID: " + processes[0].Id);
        }
        else
        {
            Console.WriteLine("No Explorer process is running.");
        }

        // 获取当前运行的 Explorer 进程的名称
        ProcessExplorer.MainWindowHandle

        // 使用 GetWindowText 获取 Explorer 进程的窗口标题
        IntPtr hWnd = Win32API.FindWindowEx(FindWindowExA(processes[0].MainWindowHandle, IntPtr.Zero, "Shell_TrayWnd", IntPtr.Zero), null, null);
        Win32API.GetWindowText(hWnd, processes[0].MainWindowTitle, System.Text.StringBuilder.MaxCreateSize);
        
        string explorerName = processes[0].MainWindowTitle;
        Console.WriteLine("Current Explorer window title: " + explorerName);
        Console.WriteLine("==========");

        // 使用 Process 类获取 Explorer 进程的路径(如果运行的是 Windows Explorer)
        processes = Process.GetProcessesByName(Path.GetFileNameWithoutExtension(explorerName));
        if (processes.Length > 0)
        {
            Console.WriteLine("Path of the Explorer process executing Windows Explorer: " + processes[0].MainModule.FileName);
        }
    }
}

上述代码中,ProcessExplorer 类包含了需要用到的一些函数和属性(如 FindWindowsExGetWindowTextProcess 等),并且封装了大部分 Windows API 函数,方便直接调用。ProcessExplorer.MainWindowHandle 可以获取到当前运行 Explorer 的 MainWindowHandle,再调用 GetWindowText 获取 Explorer 进程的窗口标题,将其作为进程名称输出到控制台。 如果运行的是 Windows Explorer,还可以使用 Process 类直接获取启动 Windows Explorer 的 App.exe 路径。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

必备 .NET - C# 异常处理

您可以在其中了解 Microsoft .NET Framework 领域所有最新动态,无论是 C# vNext 最新进展(当前C# 7.0)、改进 .NET 内部结构,还是 Roslyn 和...在以下三种常见方案,您可以这样做: 方案 1:捕获异常无法充分确定异常触发问题。...图 2 展示了如何在不重置堆栈跟踪信息或不使用空 throw 语句情况下,重新引发异常。...因此,C# 也支持行为现在与 catch(System.Exception exception) 块完全相同常规 catch 块 (catch{ }),除非没有类型或变量名称。...避免在调用堆栈下端报告或记录异常。 若要回顾这些指南详细信息,请转至 itl.tc/ExceptionGuidelinesForCSharp。在未来专栏,我打算更加关注异常引发指南。

2.3K60

一个实用却被忽略命名空间:Microsoft.VisualBasic

虽然是为了VB而建,但并不妨碍我们在C#中使用它。   ...使用这些资源,我们必须在项目中添加它们引用。可以通过菜单“项目”->“添加引用”,在“.NET”页选中“Microsoft.VisualBasic”,然后“确定”完成。...下面,我们将通过几种典型应用了解下如何在C#代码中使用这些资源。...获取操作系统与内存信息 为了实现本功能,我们使用了ComputerInfo类,下面代码显示当前计算机系统名称和版本,以及内存相关信息。...如果你需要得到更多关于Windows相关信息,计算机名称(ComputerName)、当前登录名 (UserName)等,可以使用位于System.Windows.Forms命名空间中SystemInformation

2.1K60

C#Process类调用第三方插件实现PDF文件转SWF文件

在项目开发过程,有时会需要用到调用第三方程序实现本系统某一些功能,例如本文中需要使用到swftools插件,那么如何在程序中使用这个插件,并且该插件是如何将PDF文件转化为SWF文件呢...接下来就会做一个简单介绍。     在.NET平台中,对C#提供了一个操作对本地和远程访问进程,使能够启动和停止系统进程。...一.解析System.Diagnostics.Process类       在C#中使用Process类可以提供对本地和远程访问进程,使能够启动和停止系统进程,并且该类可以对系统进程进行管理。...///如果句柄存储在当前进程对象,则使用它。          ///注意,我们存储在当前进程对象句柄将具有我们需要所有访问权限。...如何操作外部程序和线程类System.Diagnostics.Process,并介绍了该类一些常用方法底层实现代码,如果需要对该类进行详细了解,可以根据MSDN和.NET底层源码关注释和文章进行细致学习

1.6K60

.NET周报【1月第2期 2023-01-13】

对,就是文件意思,file是只能用来定义类型访问修饰符,不能定义类型类成员,即使嵌套类也不可以。file是用来定义使用范围最小类型访问修饰符,只限于在当前文件,其他类型成员内访问。.../ 解释了我们在将ReSharper移至与Visual Studio分开进程进程外)运行时遇到障碍和正在做事情。...议程(PDF) 【日文】确定你是否不需要管理员权限就能在C#写入文件夹 - Qiita https://qiita.com/Alone-and-Slow/items/a2332bcb500051e19fbc...如何在Windows环境下检查你是否有对一个文件夹写入权限。...-7-c0a195dcd05f 描述了如何在.NET 7为Microsoft.Extensions.Configuration实现一个自定义配置提供者。

2.7K20

.NET周刊【3月第1期 2024-03-03】

何在 C#解析 Excel 公式 https://www.cnblogs.com/powertoolsteam/p/18025530 葡萄城公司 GcExcel 是一个服务端高性能表格组件,能够解析...该组件支持动态数组公式,通过 C#(.NET Core)项目创建工作簿,提取和解析公式,进而修改公式特定参数,替换销售代表姓名。...C#系统菜单添加自定义项 - 开源研究系列文章 https://www.cnblogs.com/lzhdim/p/18047745 这篇文章介绍了如何在 C#应用程序系统菜单添加自定义项方法,并提供了示例代码和运行效果截图...一个关于尝试将 Google 基于机器学习文件类型确定工具 Magika 从 Python 移植到 C# 故事。....NET Framework Windows 窗体进程外设计器(预览版)。

15210

通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core?

但是vb语言因为其定位不需要指针,所以并没有C#int*这样指针类型,所以在vb访问一个该语言不支持类型会报错,会提示:字段类型不受支持。...,它也相当于一个组概念,对网站进行划组,然后对组进行一些进程模型、CPU、内存、请求队列高级配置。...而在.NET Framework,这主体可以是Windows账户,也可以是自定义标识,通过生成当前线程或应用程序域使用主体相关信息来支持授权。...如图,我当前登录账号名称为DemoXiaoZeng,然后通过Thread.CurrentPrincipal设置当前主体,执行aa方法,顺利打印111。...(全局预编译#define指令,不用在每个文件头部定义,相当于csc/define) 定义DEBUG/TRACE常量(用于调试输出定义变量,智能追踪时候可以输出该变量) 目标平台(指定当前面向什么处理器生成程序集

2.7K63

深入研究.NET 5开放式遥测

在这篇文章,我将讨论OpenTelemetry全部含义,为什么要使用它以及如何在.NET中使用,对于典型应用程序,通常需要记录三组数据:指标,日志和跟踪。 ?...Metrics 指标 提供运行进程指标信息,包括计数器,仪表盘和直方图,对OpenTelemetry中指标的支持仍在开发, 但是已经确定下来了,指标包括以下: •CPU 使用百分比•进程内存使用量•...这就是W3C跟踪上下文标准,它定义了一系列HTTP Header,这些Header将有关当前正在记录任何跟踪信息从一个进程传递到另一个进程,它通过HttpHeader来传递信息,规范定义了两个HTTP...•parent-id -作为当前 patent span 唯一标识符。•trace-flags -当前跟踪一组标志,用于确定是否正在采样当前跟踪以及跟踪级别。...,不同之处在于,Baggage使用W3C规范baggage定义HTTP Header跨进程边界传递,但是Attributes值数据只在当前Span可用 baggage: userId=alice

53110

通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core?

但是vb语言因为其定位不需要指针,所以并没有C#int*这样指针类型,所以在vb访问一个该语言不支持类型会报错,会提示:字段类型不受支持。...答案是可以尝试,如用vb反射访问c#char*指针类型,即使vb没有char*这种等价指针类型,但mscorlib提供了针对指针类型 Pointer 包装类供其访问,可以从运行时类携带类型名称看到其原本类型名...而加载堆高频堆包含有一个非常重要数据结构表---方法表,每个类型都仅有一份方法表(MethodTables),它是对象第一个实例创建前类加载活动结果,它主要包含了我们所关注3部分信息:...而在.NET Framework,这主体可以是Windows账户,也可以是自定义标识,通过生成当前线程或应用程序域使用主体相关信息来支持授权。...如图,我当前登录账号名称为DemoXiaoZeng,然后通过Thread.CurrentPrincipal设置当前主体,执行aa方法,顺利打印111。

4K20

.NET混合开发解决方案12 网页JS调用C#方法访问WinForm或WPF窗体

但是在企业级应用软件业务需求可能更加复杂,JS调用C#方法之后,需要访问宿主窗体,设置窗体(WinForm、WPF、WinUI、Win32)控件等。...窗体 SetResultFromWeb() 方法 在普通访问一个窗体有两种方式 第一种是使用窗体类来实例化一个对象 Frm4JSCallWinForm form = new Frm4JSCallWinForm...对象,我们知道一个类静态变量或属性可以通过类名称直接访问,这里通过一个巧妙方式来实现,即在 Frm4JSCallWinForm窗体定义一个公开静态 Frm4JSCallWinForm  对象...,在构造函数赋值为当前运行对象值。...步骤4 网页定义一个测试按钮,并设置点击事件 点击事件,第43行获取主机对象,customWebView2HostObject 与 C#定义名称需要完全相同。

2.3K40

C# 指标

要在 Counter 和 ObservableCounter 之间进行选择,具体要考虑其中哪一个更容易添加到现有代码:是对每个增量操作 API 调用,还是从代码维护变量读取当前总计数回调。...要在它们之间进行选择,具体要考虑其中哪一个更容易添加到现有代码:是对每个增量和减量操作 API 调用,还是从代码维护变量读取当前回调。...不同检测类型示例 停止前面启动示例进程,并将 Program.cs 示例代码替换为: C# using System; using System.Diagnostics.Metrics; using...停止前面启动示例进程,并将 Program.cs 示例代码替换为: C# using System; using System.Diagnostics.Metrics; using System.Threading...“{hats}”周围大括号是 UCUM 标准一部分,用于指示它是描述性注释,而不是带有标准化含义(秒或字节)单位名称。 构造函数中指定单位应描述适用于各个度量值单位。

16920

使用 Visual Studio 创建 .NET 控制台应用程序

本教程演示如何在 Visual Studio 2022 创建和运行 .NET 控制台应用程序。...在最新版本 C# ,名为顶级语句新功能允许你省略 类和 Main 方法。 大多数现有 C# 程序不使用顶级语句,因此本教程不使用此新功能。...在 Program.cs 或 Program.vb ,将 方法内容(当前只是调用 行)替换为以下代码: Console.WriteLine("What is your name?")...它会将此字符串存储到名为 name 变量。 它还会检索 DateTime.Now 属性值(其中包含当前本地时间),并将此值赋给 currentDate 变量。...替代方法是在 C# 中使用 \n 和在 Visual Basic 中使用 vbCrLf。 字符串前面的美元符号 ($) 使你可以将表达式(变量名称)放入字符串大括号内。

4.3K20

.NET 微服务 概念 应用 通讯 授权 跨域 限流

整体式架构增加了应用程序可用性风险,因为许多依赖且紧密耦合进程会扩大单个进程故障影响。 使用微服务架构 将应用程序构建为独立组件,并将每个应用程序进程作为一项服务运行。...这些服务使用轻量级 API 通过明确定接口进行通信。这些服务是围绕业务功能构建,每项服务执行一项功能。...各个组件之间任何通信都是通过明确定 API 进行。 专用性 每项服务都是针对一组功能而设计,并专注于解决特定问题。...有第三方工具hystrix、有分布式网关限流Nginx、未来.NET自带限流中间件AspNetCoreRateLimit等。以下按限流算法理解做一些分享。...最后在管道,启用跨域中间件 app.UseCors("{策略名称}"); Action单独设定跨域: 启用:[EnableCors]指定:[EnableCors("策略名称")]详细:[EnableCors

24120
领券