2010-03-14 22 views
10

Tôi đã ấn tượng rằng khi bạn nhấp đúp chuột vào một tập tin (hoặc chọn 'Open With' từ menu chuột phải), Windows sẽ gọi ứng dụng đó với tên tệp là tham số. Một cái gì đó như thế này:Windows '' Open with 'hoạt động như thế nào?

C: \> App.exe file.abc

Tuy nhiên, tôi chỉ nhấp đúp file .xls và sau đó kiểm tra các PEB của instance Excel mà mọc lên. Trước sự ngạc nhiên của tôi, dòng lệnh đã làm không chứa tên tệp làm thông số.

Vì vậy, điều đó khiến tôi băn khoăn. Chính xác thì cơ chế Windows sử dụng để có một tệp được mở bởi một ứng dụng có liên quan là gì? Có một API đặc biệt nào mà mỗi ứng dụng hỗ trợ cơ sở đó phải phơi bày không?

+6

Đối với những người bỏ phiếu để đóng cửa, tôi tự hỏi làm thế nào một câu hỏi về nội bộ (và đó là từ khóa) hoạt động của một hệ điều hành không liên quan đến lập trình? –

+3

@Frederick: nếu bạn không lập trình nó, thì nó không liên quan đến lập trình. –

+1

Nhưng * ai đó * đang lập trình nó, phải không? –

Trả lời

6

Cách Windows chuyển tệp vào chương trình thay đổi từ ứng dụng này sang ứng dụng khác. Hành vi này là controlled by the registry.

Trong trường hợp Excel, họ sử dụng những gì được gọi là DDE cho mục đích này. Đó là lý do tại sao bạn không thấy gì trên dòng lệnh.

-1

tên tệp không phải lúc nào cũng được truyền dưới dạng tham số trong thực tế.

bạn có với chính mình danh sách các chương trình được liên kết với một số loại tệp cụ thể trong hệ thống đăng ký ur.hệ thống kiểm tra phần mở rộng của tệp, sau đó bắt đầu quá trình liên kết với.but luôn chuyển nó thành tham số không đúng. Hệ điều hành có kiến ​​trúc riêng của nó để gọi một chương trình từ assembly của nó.

Các vấn đề liên quan