Hàm shellExecute() trong C++

Bài viết đăng tại: https://programming.laptrinh.site

Hướng dẫn lập trình nhỏ này sẽ thảo luận về hàm thư viện ShellExecute() trong C++. Chức năng thư viện này chủ yếu được sử dụng để mở hoặc thực thi bất kỳ tệp nào (ví dụ: tệp tập lệnh) thông qua chương trình C++.

Hàm ShellExecute() trong C++

ShellExecute() là một hàm thư viện được cung cấp trong thư viện chuẩn C++ và được sử dụng để mở hoặc chạy bất kỳ tệp thực thi nào từ chương trình C++. Bạn không cần quan tâm đến chương trình sẽ mở tệp cần thiết; bạn chỉ cần cung cấp đường dẫn hoặc tên của tệp bạn cần mở.

Nó tương tự như hành động nhấp chuột vào một biểu tượng của windows và nó sẽ được mở ra. Điều này được sử dụng để tự động hóa hành động này bằng cách sử dụng lập trình C++.

Một trong những lý do chính mà ShellExecute() rất được yêu thích là hầu hết mọi thứ đều có thể được chạy bằng lệnh gọi API này.

Nếu tệp được cung cấp không thể thực thi được, API ShellExecute sẽ tìm kiếm trong sổ đăng ký một chương trình thích hợp để khởi chạy tệp đã cho. Chẳng hạn, nếu bạn cung cấp tên tệp có phần mở rộng .txt , nó có thể sẽ khởi chạy Notepad với tệp được tải.

Chữ ký của hàm là:

 HINSTANCE ShellExecute ( HWND hwnd, LPCTSTR lpOperation, LPCTSTR lpFile, LPCTSTR lpParameters, LPCTSTR lpDirectory, INT nShowCmd);

Hãy xem chi tiết các tham số:

  • hwnd : Nó là một tay cầm để lưu tham chiếu đến cửa sổ chính
  • lpOperation : Đây là tên của hành động cần được thực hiện trên tệp. Sau đây là danh sách các hành động có thể được sử dụng:
    • open hoặc NULL – Tệp lpFile được mở bằng hàm. Tệp có thể là tệp tài liệu hoặc tệp thực thi. Chúng tôi cũng có thể chỉ định một tên thư mục để mở.
    • print – Nếu tệp được chỉ định bởi lpFile là tệp tài liệu, chức năng sẽ gửi tệp đó đến máy in để in.
    • explore – Nếu tệp được chỉ định bởi lpFile là tên của thư mục, hàm sẽ khám phá thư mục đó.
  • lpFile : Đây là tên của một tệp, thư mục hoặc tệp thực thi.
  • lpParameters : Điều này được sử dụng để cung cấp bất kỳ tham số dòng lệnh bổ sung nào.
  • lpDirectory : Điều này được sử dụng để chỉ định đường dẫn của thư mục mặc định.
  • nShowCmd Nó cho biết cách mở tệp được chỉ định trong hàm. Giá trị của nó có thể là bất kỳ giá trị nào sau đây:
    • SW_HIDE – Hiển thị cửa sổ ứng dụng mới sau khi ẩn cửa sổ hiện tại.
    • W_MAXIMIZE – Nó hiển thị cửa sổ được chỉ định ở dạng tối đa.
    • SW_MINIMIZE – Nó hiển thị cửa sổ được chỉ định ở dạng thu nhỏ và hiển thị cửa sổ cấp độ tiếp theo.
    • SW_SHOW – Nó kích hoạt cửa sổ được chỉ định ở kích thước và vị trí mặc định của nó
    • SW_SHOWMAXIMIZED – Đầu tiên, nó kích hoạt cửa sổ và hiển thị ở dạng phóng to.
    • SW_SHOWMINIMIZED – Đầu tiên, nó kích hoạt cửa sổ và hiển thị ở dạng thu nhỏ.
    • SW_SHOWNORMAL – bật và hiển thị cửa sổ. Windows trả lại cửa sổ về kích thước và vị trí ban đầu nếu nó được thu nhỏ hoặc phóng to. Khi một cửa sổ được hiển thị lần đầu tiên, một ứng dụng phải cung cấp cờ này.
    • Nếu lpFile là một tệp tài liệu được chỉ định, thì giá trị nShowCmd phải được đặt thành 0.

Khi thành công, ShellExecute() trả về giá trị lớn hơn 31; mặt khác, giá trị trả về của nó có thể là:

  • 0 : Nếu hệ điều hành không cung cấp bộ nhớ hoặc tài nguyên.
  • ERROR_FILE_NOT_FOUND – Không tìm thấy tệp được chỉ định tại vị trí.
  • ERROR_PATH_NOT_FOUND – Đường dẫn được chỉ định sai hoặc không tìm thấy.
  • ERROR_BAD_FORMAT – Có một tệp .exe không hợp lệ được cung cấp.

Cũng có thể có nhiều mã lỗi khác, nhưng chúng tôi đã thảo luận về một số lỗi phổ biến.

Chúng ta hãy xem ví dụ viết mã của hàm ShellExecute() :

#include <bits/stdc++.h>
#include <windows.h>
using namespace std;
int main () { ShellExecute( NULL , "open" , "MyTextFile.txt" , NULL , NULL , SW_SHOWMAXIMIZED); return 0 ; }

Sau khi mã được chạy, MyTextFile sẽ được mở trong chương trình Notepad. Tương tự, chúng tôi cũng có thể cung cấp một URL sẽ được mở trong trình duyệt như thế này:

#include <bits/stdc++.h>
#include <windows.h>
using namespace std;
int main () { char webUrl[ 100 ] = "www.google.com" ; ShellExecute( NULL , "open" , webUrl, NULL , NULL , SW_SHOWNORMAL); return 0 ; }

Có nhiều ưu điểm và nhược điểm khi sử dụng hàm ShellExecute() , đó là:

Ưu điểm của việc sử dụng hàm ShellExecute()

Lệnh gọi API này có thể mở, in hoặc duyệt các tệp hoặc thư mục bằng cài đặt Windows tiêu chuẩn. Bạn cũng sẽ có thể thay đổi các giá trị mặc định đó.

Không phải tất cả các thông số phải được điền vào; một vài trong số chúng có thể là NULL (nghĩa là dễ sử dụng).

Nhược điểm của việc sử dụng hàm ShellExecute()

Không thể chạy phần mềm 16-bit qua ShellExecute . Có thể so sánh với WinExec về độ phức tạp.

Nó không thể cho biết khi nào chương trình được tạo đã được hoàn thành.

URL Link

https://laptrinh.site/ham-shellexecute-trong-c/

Viết bởi Duy Mạnh. Đã đăng ký bản quyền tác giả tại Creativecommons và DMCA