2011-08-16 24 views
5

Tôi cần làm cho một ứng dụng GUI cửa sổ có thể chạy trong bảng điều khiển, vì vậy tôi đính kèm giao diện điều khiển vào quá trình khi ứng dụng được gọi với một dòng lệnh. Tuy nhiên, sau khi thoát ứng dụng, dấu nhắc giao diện điều khiển với đường dẫn không hiển thị trừ khi nhấn phím ENTER. Có cách nào mà lời nhắc với đường dẫn có thể hiển thị trực tiếp mà không cần nhấn phím enter? Cảm ơn.Vấn đề của attachconsole

+0

http://blogs.msdn.com/b/oldnewthing/archive/2009/01/01/9259142.aspx –

+1

Nó đã hiển thị lời nhắc, ngay khi chương trình của bạn bắt đầu chạy. Bạn sẽ phải đợi nó. Sử dụng start/wait yourapp.exe. Nếu đó không phải là những gì bạn muốn thì bạn sẽ cần phải sử dụng AllocConsole(). –

Trả lời

4

Câu trả lời ngắn gọn: Điều này là không thể.

Câu trả lời dài: Vâng, có thể là nếu bạn sẵn sàng thư giãn các yêu cầu của mình một chút. Về cơ bản, bạn có ba tùy chọn:

  1. Bạn đã làm gì rồi. Bạn có thể đính kèm ứng dụng GUI vào bàn điều khiển nhưng cmd.exe sẽ không chờ ứng dụng của bạn thoát.
  2. Tạo ứng dụng GUI và mở bàn điều khiển trong ứng dụng GUI. Bảng điều khiển sẽ chỉ kéo dài miễn là bạn đăng ký.
  3. Hoặc bạn có thể cấu trúc lại ứng dụng/nguồn của mình một chút và cung cấp hai tệp thực thi, GUI thực thi trực tiếp GUI, một giao diện khác có thể thực thi được.
+0

Cảm ơn câu trả lời của bạn. Trong khi nghiên cứu này tôi tìm thấy một tùy chọn khác, nơi bạn khởi động ứng dụng bằng cách sử dụng [lệnh bắt đầu] (http://www.computerhope.com/starthlp.htm). ví dụ. 'paramaters application.exe start/wait'. – Dennis

1

Trong C#, tôi sử dụng SendKeys.SendWait("{ENTER}"); để làm điều đó. Tôi nghĩ rằng trong C + +, các chức năng keybd_event làm một cái gì đó tương tự.

+0

Làm việc cho tôi. :) – Alexandru

1

Giống như Autodesk Maya với MayaBatch, bạn có thể xây dựng một ứng dụng giao diện điều khiển nhỏ về cơ bản chạy ứng dụng GUI của bạn với CreateProcess và đợi với WaitForSingleObject.

Bạn sẽ phải sử dụng phiên bản "batch" này của ứng dụng trong bảng điều khiển.