Tôi muốn đóng cửa sổ với một số tên (bất kỳ ứng dụng nào, ví dụ, máy tính và vv). Làm thế nào để làm điều đó trong C#? Nhập các hàm WinAPI?Làm thế nào để đóng cửa sổ theo tên của nó?
Trả lời
Có, bạn nên nhập chức năng API của Windows: FindWindow()
, SendMessage()
; và WM_CLOSE
không đổi.
định nghĩa Native trong những chức năng của Windows API:
[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
/// <summary>
/// Find window by Caption only. Note you must pass IntPtr.Zero as the first parameter.
/// </summary>
[DllImport("user32.dll", EntryPoint = "FindWindow", SetLastError = true)]
static extern IntPtr FindWindowByCaption(IntPtr ZeroOnly, string lpWindowName);
[DllImport("user32.dll", CharSet = CharSet.Auto)]
static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);
const UInt32 WM_CLOSE = 0x0010;
Khách hàng mã:
IntPtr windowPtr = FindWindowByCaption(IntPtr.Zero, "Untitled - Notepad");
if (windowPtr == IntPtr.Zero)
{
Console.WriteLine("Window not found");
return;
}
SendMessage(windowPtr, WM_CLOSE, IntPtr.Zero, IntPtr.Zero);
Vâng, điều này hoạt động tốt cho Notepad (giả sử, tất nhiên, tiêu đề cửa sổ chính xác là những gì bạn đã đưa ra ở đây, mà nó có lẽ không phải là hầu hết thời gian). Nhưng nó sẽ không hoạt động đối với các ứng dụng có nhiều cửa sổ cấp cao nhất, trừ khi chúng được thiết kế đặc biệt để đóng toàn bộ ứng dụng sau khi đóng một cửa sổ cấp cao nhất. Nếu không, bạn cần gửi 'WM_CLOSE' đến * mỗi * của các cửa sổ cấp cao nhất để đảm bảo ứng dụng bị đóng. –
Ngoài ra, các ứng dụng có thể chọn trả lời 'WM_CLOSE' theo ý muốn. Ví dụ: một số chương trình chọn giảm thiểu chính mình xuống vùng thông báo của thanh tác vụ khi nhận được thông báo này, thay vì thực sự đóng. Vì bạn không thể kiểm soát cách ứng dụng đáp ứng với thông báo, bạn cần phải thử nghiệm phương thức này một cách rộng rãi và nhận ra khả năng nó dễ vỡ khi xử lý các ứng dụng chưa biết và chưa được kiểm tra. –
Có đúng như thế này 'CloseWindow (windowPtr)'? –
Bạn đang cố gắng để đóng cửa sổ thuộc quá trình khác. Đó không phải là một cái gì đó bạn có thể giả định sẽ đi đáng tin cậy. Đối với một điều, bạn không sở hữu những cửa sổ để bạn không thực sự có bất kỳ quyền tự động để đi và lộn xộn với các cửa sổ các quá trình khác.
Như câu trả lời khác cho thấy, bạn có thể thử gửi WM_CLOSE đến cửa sổ nhưng nó đi kèm với cảnh báo rằng quy trình khác không thực sự có quyền tôn vinh nó. Câu trả lời cho WM_CLOSE có thể là bất cứ điều gì để chấp nhận và tắt máy hoàn toàn để từ chối hoàn toàn. Trong trường hợp sau, bạn thực sự không có tùy chọn. Nó không phải là quá trình của bạn. Ở giữa, như bạn đã thấy, có thể có bất kỳ loại cửa sổ trung gian, hộp thoại nào, v.v mà bạn phải tranh luận.
Vì vậy, bạn đang cố gắng đạt được điều gì ở đây? Tại sao bạn cố gắng đóng cửa sổ thuộc các quy trình khác? Nó có thể giúp làm rõ mục đích là gì.
- 1. Làm thế nào để chạy chức năng của cửa sổ cha khi cửa sổ con đóng?
- 2. Làm thế nào để chạy chức năng của cửa sổ cha khi cửa sổ con đóng?
- 3. Làm thế nào để đóng cửa sổ trong awt?
- 4. Làm thế nào để hiển thị một cửa sổ trong Qt và xóa nó ngay sau khi nó đóng cửa?
- 5. Tại sao đóng cửa sổ con cuối cùng giảm thiểu cửa sổ chính của nó?
- 6. Cách đóng cửa sổ cha mẹ khỏi con của nó?
- 7. làm mới cửa sổ mẹ khi đóng cửa sổ con
- 8. Làm thế nào để hiển thị lại cửa sổ chính sau khi đóng cửa trong Cocoa?
- 9. Làm thế nào để bạn thay đổi trạng thái của nút đóng cửa sổ trong Cocoa?
- 10. Đặt cửa sổ lỗi đóng theo cú pháp
- 11. Làm thế nào tôi có thể nhận được các cửa sổ con của một cửa sổ cho HWND của nó?
- 12. Cửa sổ đăng ký Javascript/tab đóng sự kiện trước cửa sổ/tab đóng
- 13. Làm thế nào để ngăn chặn hàng loạt cửa sổ đóng khi xảy ra lỗi?
- 14. Đóng cửa sổ kendoui bằng nút Đóng tùy chỉnh trong cửa sổ
- 15. Làm thế nào tôi có thể đóng băng trên một cửa sổ của JTabbedPane?
- 16. Làm thế nào để làm gián đoạn cơ chế đóng cửa sổ trong scala swing
- 17. Cách đóng cửa sổ Kendo trong nội dung cửa sổ?
- 18. Làm thế nào để kích hoạt cửa sổ trong Java?
- 19. Làm thế nào để đóng cửa sổ GLUT mà không chấm dứt ứng dụng?
- 20. Làm thế nào để mở cửa sổ Console trong Eclipse?
- 21. EXTJS đóng một cửa sổ
- 22. Làm cách nào để đóng tất cả các cửa sổ trong tab hiện tại của vim
- 23. Làm thế nào để Đóng một cửa sổ trong WPF trên một lối thoát chính
- 24. Nút HTML Đóng Cửa sổ
- 25. JavaScript - Cửa sổ trình duyệt tham chiếu theo tên?
- 26. Đóng cửa sổ xoay jfreechart đóng toàn bộ ứng dụng
- 27. Móc cửa sổ - Làm thế nào để chúng hoạt động?
- 28. Tôi làm cách nào để đặt các thuộc tính đối tượng javascript của IntelliJ theo tên trong cửa sổ xem?
- 29. Làm cách nào để gọi một hàm JavaScript sau khi chọn tệp từ cửa sổ Chọn Tệp và đóng nó?
- 30. Cửa sổ Haskell SOEGraphics sẽ không đóng
http://www.codeproject.com/Articles/22257/Find-and-Close-the-Window-using-Win-API ... google rox bạn biết – m0s
Có thể trùng lặp. http://stackoverflow.com/questions/116090/how-do-i-kill-a-process-using-vb-net-or-c – Lloyd
@Lloyd: Không phải là một bản sao, giết chết một quá trình không giống như đóng cửa sổ. –