Tôi viết chương trình nghe nhạc, sử dụng hàm Command để lấy tham số và chơi file nhạc. Nhưng có một vấn đề: Khi chọn 2 hoặc nhiều bài nhạc rồi nhấn Enter, chương trình chạy những 2,3,4... lần. Như vậy chương trình chỉ nhận được duy nhất 1 tham số, do đó phải chạy nhiều lần? Có cách nào nhận được tất cả tham số để play một lượt (như Playlist) không?


" />
  • Thứ Hai, 05/04/2010 16:18 (GMT+7)

    Lập trình lấy tham số hàng loạt

    Câu hỏi :

    Tôi viết chương trình nghe nhạc, sử dụng hàm Command để lấy tham số và chơi file nhạc. Nhưng có một vấn đề: Khi chọn 2 hoặc nhiều bài nhạc rồi nhấn Enter, chương trình chạy những 2,3,4... lần. Như vậy chương trình chỉ nhận được duy nhất 1 tham số, do đó phải chạy nhiều lần? Có cách nào nhận được tất cả tham số để play một lượt (như Playlist) không?




    Trả lời :

    Để giải quyết được vấn đề bạn đề cập, trước hết bạn phải nắm vững cơ chế kích hoạt ứng dụng của tiện ích Windows Explorer mỗi khi bạn chọn nhiều file rối nhấn phím Enter: Windows Explorer sẽ tập hợp các file được chọn thành 1 danh sách rồi duyệt từng file dữ liệu trong danh sách, tìm thông tin về ứng dụng cần dùng để xử lý file đó trong Registry, nếu tìm được nó sẽ kích hoạt ứng dụng tương ứng chạy và truyền cho ứng dụng đường dẫn của file dữ liệu. Như vậy, nếu bạn chọn 2 hay nhiều file bài hát rồi nhấn Enter, Windows Explorer sẽ kích hoạt ứng dụng của bạn nhiều lần, mỗi lần xử lý 1 file nhạc duy nhất.

    Bây giờ, vấn đề là làm sao được kích hoạt nhiều lần mà ứng dụng chỉ chạy 1 lần đầu, còn các lần kích hoạt sau thì chỉ truyền cho ứng dụng đường dẫn file cần chơi, chứ không hiển thị và chạy như lần đầu? Bạn có thể gọi hàm API FindWindow() để kiểm tra xem cửa sổ của ứng dụng đã chạy chưa, nếu ứng dụng đã chạy rồi thì bạn gửi đường dẫn file cần chơi cho nó rồi dừng, nếu chưa chạy thì tiếp tục chơi file nhạc được truyền sang bằng tham số commandline và chờ các file khác được truyền tới nếu có (bởi các lần chạy kế tiếp).

    Chuyên mục: Lập trình