首页
学习
活动
专区
工具
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.4K60
  • 一个实用的却被忽略的命名空间: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

    Unity 调用 Java 静态方法:完整指南!

    小伙伴们在批阅的过程中,如果觉得文章不错,欢迎点赞、收藏、关注哦。三连即是对作者我写作道路上最好的鼓励与支持!...前言在上一期内容中,我们详细探讨了 Java 同步回调的实现,介绍了如何在 Java 中使用回调机制来控制任务的执行顺序。在现代游戏开发中,Unity 是一个非常流行的引擎,通常使用 C# 编写代码。...因此,如何在 Unity 中调用 Java 方法,特别是 静态方法,成为了许多开发者在跨平台开发中的常见需求。...在这篇文章中,我们将重点讨论如何在 Unity 中通过 C# 代码调用 Java 静态方法。这一技巧常用于与 Android 的平台交互,例如获取系统信息、调用特定的 Android API 等。...然后使用 CallStatic 方法调用 Java 类中的静态方法,并将结果存储到变量中。最后,我们使用 Debug.Log 打印出设备的名称和制造商。3.

    12421

    .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 窗体的进程外设计器(预览版)。

    21810

    .NET周刊【6月第3期 2024-06-23】

    本文介绍了如何在以System身份运行的.NET程序中,以其他活动用户身份启动可交互式进程。...作者以GitLab流水线为例,使用C#和PowerShell实现了这一需求。随后给出了具体的代码示例,包括如何获取当前活动会话的用户令牌,复制令牌,以及设置程序的启动参数。...在Winform程序中动态绘制系统名称,代替图片硬编码名称 https://www.cnblogs.com/wuhuacong/p/18258263 本文介绍了两种在登录窗口显示程序名称的方法。...第一种方法使用图片编辑工具如Photoshop修改背景图片并替换。第二种方法通过GDI+动态绘制系统名称,利用配置文件中的系统名称信息,在窗口的Paint事件中绘制。...本文介绍了共识、如何在 IDE 中配置它、报告警告以及计划定期清理它。

    11510

    .NET周刊【9月第2期 2024-09-08】

    创建型模式关注对象创建过程,包括单例模式、工厂方法等。结构型模式关注类或对象的组合,如适配器、装饰器等。行为型模式着重对象间通信,如策略模式、观察者模式等。...C#自定义控件—指示灯 https://www.cnblogs.com/guoenshuo/p/18397557 本文介绍了如何在C#中利用GDI绘制指示灯控件。...C#自定义控件—流动管道 https://www.cnblogs.com/guoenshuo/p/18391637 这篇文章介绍了如何在C#中绘制一个动态流动管道,包括管道的渐变色矩形和半圆的绘制,以及流动条的绘制方法...C#自定义控件—仪表盘 https://www.cnblogs.com/guoenshuo/p/18395549 文章介绍了如何在C#中使用GDI绘图技术创建仪表盘用户控件。...主要内容包含纯定义属性及其相关代码,包括字体、文本颜色、变量名称、变量值、单位和控件刻度,并提供了文本设定的入口、离开及按键事件的方法。

    8310

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

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

    2.8K63

    .NET周刊【11月第3期 2024-11-17】

    https://www.cnblogs.com/Can-daydayup/p/18544851 .NET是一个开源、免费、跨平台的开发平台,支持多种语言如C#,适用于多种应用类型,如桌面、Web、移动、...重点在于理解 Pytorch 的数据类型及其与编程语言基本类型的区别。文章提供了如何在 Python 和 C# 中打印数组的示例,并解释了不同打印方式的优缺点。...首先,新建MVC项目,并在Program.cs中配置支持的文化信息,如“zh-CN”和“en-US”。通过RequestLocalizationOptions设置默认请求文化和支持的文化。...开源 - Ideal库 -获取特殊时间扩展方法(四) https://www.cnblogs.com/hugogoos/p/18539591 文章介绍了如何在C#中获取当前日期所在月的第一个和最后一个指定星期几的方法...用户可定义特性如ColumnDataType或PasteMarkDown,以实现富文本或Markdown输入。提交信息中反映内容设定中的参数配置,如args2字段可隐藏,以保数据传递后台。

    8410

    .NET周刊【10月第2期 2024-10-13】

    由C#开发,解决其它工具无法满足的特定需求,完全免费且开源。主要功能包括名称混淆、控制流混淆、字符串和资源加密等。...WPF中的ListBox怎么添加删除按钮并删除所在行 https://www.cnblogs.com/lvpp13/p/18454644 本文讲解如何在C#中使用数据绑定和命令删除列表项。...,通过将多种编程语言(如C/C++、C#、Go、Python等)编写的代码编译为WA格式,实现接近原生的性能。...不同语言(如C、C#、Go、Python)的代码可以通过编译工具转译为WASM文件,在浏览器环境中执行,这展示了WebAssembly的多语言兼容性和实用性。...C#/.NET - 如何在未连接到 nuget.org 的环境中进行构建 https://zenn.dev/j_sakamoto/articles/97f183b180ebed 如何在无法访问 nuget.org

    9610

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

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

    57110

    通俗易懂,什么是.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。

    4.6K30

    VSCode下配置Blazor环境 & 断点调试Blazor项目

    在这篇文章中,我们将介绍如何在VSCode中配置Blazor环境,并推荐一些有用的插件。环境配置1. 安装.NET Core SDK首先,你需要安装.NET Core SDK。...安装C#插件在VSCode中,打开扩展视图并搜索"C#",然后安装由Microsoft发布的C#插件。4....Razor+Razor+插件提供了一些有用的功能,如Razor语法高亮、代码片段等,可以提高你编写Razor视图的效率。...设置断点在你的C#代码中,找到你想要调试的行,点击行号左侧的空白区域,设置一个断点。断点会以红点的形式显示。3....常见问题无法启动调试:确保你的项目可以正常构建,并且没有其他进程占用相同的端口。断点未命中:确保你在调试模式下运行,并且代码已编译为调试版本。

    11600
    领券