我正在寻找很多方法来获取.NET中的父进程,但只找到了P/Invoke方式.
考虑以下代码:
using Microsoft.Office.Interop.Word;
ApplicationClass _application = new ApplicationClass();
Run Code Online (Sandbox Code Playgroud)
我可以从_application启动的Winword.exe进程中获取PID吗?
我需要PID因为文件损坏,我只是不能退出ApplicationClass,即使使用这段代码:
_application.Quit(ref saveFile, ref missing, ref missing);
System.Runtime.InteropServices.Marshal.ReleaseComObject(_application);
GC.Collect();
GC.WaitForPendingFinalizers();
Run Code Online (Sandbox Code Playgroud)
我无法搜索winword.exe进程并将其杀死,因为我会有几个,而且我不知道要杀哪个.如果我可以为每个ApplicationClass获取一个PID,我可能会杀死正确的winword.exe进程,这会给我带来麻烦.
我尝试减去2个列表,如下面的代码,assignUsers
有3个记录,assignedUsers
并有2行.之后Except
方法我仍然得到3行,但我应该得到1记录,因为两行中assignedUsers
类似于assignUsers
var users = accountApp.GetUsersByAccountId(context.GetUserData().AccountId);
List<AssignUserViewModel> assignUsers = Mapper.Map<List<AssignUserViewModel>>(users).ToList();
var mailUsers = mailApp.GetMailAssignedByMailId(id).Select(m => new { m.UserId, m.User.Name }).ToList();
List<AssignUserViewModel> assignedUsers = mailUsers.Select(Mapper.DynamicMap<AssignUserViewModel>).ToList();
assignUsers = assignUsers.Except(assignedUsers).ToList();
Run Code Online (Sandbox Code Playgroud) 我正在c#中开发一些代码,我将与Microsoft Word进行交互.我希望能够选择重新使用现有实例,或者作为创建新实例的替代方法.
请记住,我想使用LATE BINDING完成所有这些...可以肯定地说我已经弄清楚如何在创建新实例时让事情正常工作..我只需要调用Activator.CreateInstance等.
我遇到的问题是如何重用现有实例,例如,Word已经打开,我想使用该实例.
有没有Activator.UseExistingInstance?或者类似的东西?
谢谢!