【问题标题】:Close Notepad Window Without Saving Changes关闭记事本窗口而不保存更改
【发布时间】:2014-09-12 17:50:59
【问题描述】:

我想关闭记事本文件而不提示“您要保存更改”对话框。我试过了:

SendMessage(handle, 0x0010, IntPtr.Zero, IntPtr.Zero);

但问我是否要保存更改。 DestroyWindow(HWND) 也不起作用。

如何解决这个问题?

非常感谢...

【问题讨论】:

  • 您这样做的目的是什么? (即为什么你需要使用记事本而不是你自己程序中的控件等)
  • @Sayse 看来他正在从自己的进程控制记事本进程/窗口。
  • @Mesut 顺便说一句,如果你想回答你的问题,你应该使用常量而不是像 0x0010 这样的显式值。查找它们实际引用的常量太麻烦了。
  • stackoverflow.com/questions/2237628/c-sharp-process-killing只需将进程名替换为记事本进程名

标签: c# .net


【解决方案1】:

如果您不关心记事本上的数据,那么只需终止其进程即可。

[DllImport("user32.dll", SetLastError=true)]
static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint processId);

现在使用进程 ID 终止进程

Process p = Process.GetProcessById(processId);
p.Kill();

【讨论】:

  • 谢谢,这正是我想要的。
【解决方案2】:

只是为了补充@prem 发布的答案,绝对不需要使用 API。 .NET 已经包含了执行此操作的所有内容,如下例所示。

var processes = Process.GetProcessesByName("notepad");
foreach (var process in processes)
    process.Kill();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-14
    • 1970-01-01
    • 2014-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多