c# - Revit 的 Process.GetCurrentProcess().MainWindowTitle 检索空字符串“”
问题描述
我正在为 Revit 创建一个插件,在其应用程序中注册多个事件。
每次发生事件时,都会在 txt 文件中写入一行,告诉我有关事件的信息,例如:
用户在 Autodesk Revit 2019 上打开了一个文档 (...)
我通过获取应用程序的 MainWindowTitle 名称来获取“Autodesk Revit 2019”(应用程序名称),如下所示:Process.GetCurrentProcess().MainWindowTitle
public static string originalString = Process.GetCurrentProcess().MainWindowTitle;
(...)
Trace.WriteLine("O utilizador " + Environment.UserName + " abriu o " + originalString + " a " + DateTime.Now + " (ApplicationInitializedEventArgs)");
在txt文件中写道:
O utilizador rita.aguiar abriu oa 20/09/2018 10:36:42 (ApplicationInitializedEventArgs)
如您所见,它并没有像我希望的那样在“o”和“a”之间的 txt 文件“Autodesk Revit 2019 - [Home]”中写入。
如果我Process.GetCurrentProcess().MainWindowTitle
直接写在Trace.WriteLine
我会得到“Autodesk Revit 2019 - [Home]”,但我希望写一个指定的名称。
如何通过分配名称来成功编写“Autodesk Revit 2019 - [Home]” Process.GetCurrentProcess().MainWindowTitle
?
后来我想通过像这样只获得 Autodesk Revit 2019 来获得这个名称:
public static string originalString = Process.GetCurrentProcess().MainWindowTitle;
public static string[] splittedString = originalString.Split("-".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
public static string AppName = splittedString[0];
任何帮助将不胜感激!
解决方案
正如我建议在 Revit API 讨论论坛中回答有关为字符串 C# 分配名称的类似问题一样,我将查看调试器中逐步执行的代码。
然后你就可以亲眼看到到底发生了什么。
为了绝对清晰,您还可以添加更多中间行和变量:
string originalString = Process
.GetCurrentProcess()
.MainWindowTitle;
string s2 = "O utilizador "
+ Environment.UserName
+ " abriu um documento no "
+ originalString + " a " + DateTime.Now;
//or use string interpolation:
//https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/tokens/interpolated
string s3 = $"O utilizador {Environment.UserName} abriu um documento no {originalString} a {DateTime.Now}";
Trace.WriteLine( s2 );
Trace.WriteLine( s3 );
调试器不错!
事实上,无价之宝。
推荐阅读
- rebus - Rebus 2 级重试
- c# - 我在哪里可以在可移植可执行文件的标头中找到 IMAGE_LOAD_CONFIG_DIRECTORY 结构?
- java - 如何使用 okhttp3 制作登录页面
- python - NumPy hstack 的奇怪行为
- laravel - 模型事件未在 laravel 上触发
- php - 干预/图像保存功能总是创建损坏的文件(0 字节)
- node.js - 在处理程序中声明事件处理程序时,内部处理程序是否可以访问传递给外部处理程序的参数?
- java - Main 不会调用数组
- r - 在 ggplot2 中创建(按包)绘图后,更改图例中的跟踪名称
- mongodb - MongoExport SASL 身份验证步骤:身份验证失败