Tôi không tìm thấy trong sự giúp đỡ một lời giải thích đầy đủ về sự khác biệt giữa Shellexec và Exec. LàShellexec vs Exec vs Shellexec tập tin batch của tôi
Shellexec('','program.exe',params,'',SW_HIDE,ewWaitUntilTerminated,ResultCode)
tương đương với
Exec('program.exe',params,'',SW_HIDE,ewWaitUntilTerminated,ResultCode)
khi làm việc với các tập tin exe? Tất nhiên, khi tôi muốn thực hiện một tập tin khác với exe hoặc batch, sử dụng Shellexec.
Đôi khi, tuy nhiên, tôi không thể làm cho istruction hoạt động chính xác, không phải bởi Shellexec cũng như Exec. Giải pháp duy nhất luôn hoạt động là viết một tập tin batch và chạy nó qua shellexec. Cá nhân tôi không thích giải pháp này bởi vì tôi phải đối phó với một tập tin tạm thời và tôi không tin tưởng các resultcode thu được. Bây giờ tôi sẽ phải quay lại giải pháp tập tin batch, bởi vì tôi không biết làm thế nào để lệnh này hoạt động: (lỗi là nó làm tăng chỉ lệnh nếu tập tin đích chưa có, trong khi lệnh nhắc lệnh chỉ hoạt động ngay cả khi tệp đích không tồn tại).
mysqldump := 'C:\Program Files (x86)\MySQL\MySQL Server 5.0\bin\mysqldump.exe';
params := '-uroot -ppassword myschema>C:\myappdir\backup\newbackup.sql';
//the destination folder exists, the file newbackup.sql does not exist
Shellexec('',mysqldump,params,'',SW_HIDE,ewWaitUntilTerminated,ResultCode);
tôi đang làm việc trên Windows 7 64 bit, chương trình (một Inno Setup cài đặt) được chạy với quyền quản trị
Chắc chắn gõ '{}' pf32 liên tục thay vì 'C: \ Program Files (x86)'. Nó sẽ trả về cho bạn đường dẫn chính xác đến thư mục tệp chương trình 32 bit. Tôi nghĩ rằng nó có thể là nguyên nhân của vấn đề của bạn, nhưng khó nói. Bạn cũng có thể kiểm tra xem tệp có tồn tại với hàm 'FileExists' trước khi bạn cố thực hiện nó hay không. – TLama