Mở 1 file bằng 1 ứng dụng mặc định của hệ thống ví dụ như file ảnh với Windows Viewer hay file âm thanh với Windows Media Player, đặc biệt là đường dẫn web với trình duyệt mặc định là 1 trong những việc thường hay gặp trong phát triển phần mềm.
Win32 API cung cấp 1 phương thức khá hay gọn gàng để thực hiện điều này, đó là ShellExecute()
.
1 số nhu cầu cụ thể có thể sử dụng ShellExecute()
là:
- Mở trình duyệt web về trang web cần quảng bá khi cung cấp 1 ứng dụng miễn phí.
- Mở file log cho user khi ứng dụng crash hoặc cần cung cấp thông tin thêm.
- ...
Sử dụng hàm ShellExecute()
Để sử dụng ShellExecute()
cần #include <Windows.h>
, prototype của hàm có dạng như sau:
ShellExecute(HWND hwnd, LPCTSTR lpOperation, LPCTSTR lpFile, LPCTSTR lpParameters, LPCTSTR lpDirectory, INT nShowCmd);
hwnd
: đại diện cho handle của cửa sổ window đang thao tác, có thể truyềnNULL
vào.lpOperation
: đại diện cho câu lện muốn thực thi dưới dạng 1 chuỗi:"open"
: mở 1 file theo đường dẫn được cài đặt tại vếlpFile
."explore"
: mở thư mục theo đường dẫn được cài đặt ởlpFile
."edit"
: thử mở 1 file theo đường dẫn tạilpFile
bằng 1 editor. Ví dụ với ảnh .bmp thì đó là Paint hay file text .txt thì đó là Notepad."find"
: mở công cụ tìm kiếm mặc định của hệ thống theo đường dẫn cài đặt tạilpDirectory
."print"
: in file tài liệu được cài đặt tạilpFile
. Nếu đường dẫn tạilpFile
không phải là 1 file tài liệu (document) thì hàm này thực thi thất bại.NULL
: câu lệnh mặc định sẽ được sử dụng, nếu không thực thi được, câu lệnh"open"
sẽ được sử dụng kế tiếp.
lpFile
: đại diên cho đường dẫn muốn câu lệnh này thực thi, nó có thể là đường dẫn bất kỳ đến 1 file, 1 thư mục hay 1 trang web.lpParameters
: vế này nên được đặt làNULL
.lpDirectory
: đường dẫn đến thư mục muốn dùng để tìm kiếm nếu câu lệnhlpOperation
được gán là"find"
.nShowCmd
: 1 con số Command được định nghĩa nhằm ra lệnh cho hệ thống, các command thường dùng là:SW_SHOWNORMAL
: hiển thị cửa sổ ở mức bình thường.SW_SHOWMAXIMIZED
: hiển thị cửa sổ phóng lớn toàn màn hình.SW_SHOWMINIMIZED
: hiển thị cửa sổ được thu nhỏ ở dưới thanh taskbar.SW_SHOW
: hiển thị cửa sổ với kích thước mặc định.
Code demo sử dụng ShellExecute()
Giả sử có các file ở thư mục gốc của project và thư mục F:\NguyenPhan
như sau:
#include <Windows.h> int main() { ShellExecute(NULL, "open", "image.png", NULL, NULL, SW_SHOWNORMAL); ShellExecute(NULL, "edit", "image.png", NULL, NULL, SW_SHOWNORMAL); ShellExecute(NULL, "edit", "F:/NguyenPhan/text.txt", NULL, NULL, SW_SHOWNORMAL); ShellExecute(NULL, "open", "F:/NguyenPhan/", NULL, NULL, SW_SHOWNORMAL); ShellExecute(NULL, "open", "https://www.stdio.vn/", NULL, NULL, SW_SHOWMAXIMIZED); return 0; }