Mở Paint + File : thì dùng ShellExecute đi :
C++ Code:
#include <windows.h> int main () { ShellExecute(NULL,"Open","mspaint.exe","C:\\0000.jpg",NULL,SW_SHOWNORMAL); return 0; }
Change Wallpaper thì dùng IActiveDesktop đi .
Mình đang viết một chương trình View Image đơn giản. Việc xem ảnh đã hoàn thành, nay mình muốn khi người dùng click_RightMouse thì hiện ra ContextMenuStrip và cho tùy chọn:
- Set as Background.
(Chức này mình đã dùng hàm API systemParameterInfo để set background nhưng ngoài file bmp thì toàn thấy màn hình màu xanh thôi.)
- Mở file ảnh bằng Paint.
(Chỉ biết cách mở chương trình Pain nhưng không biết mở Paint + File)
Tuy nhiên mình không biết dùng hàm API nào. Bạn nào biết xin chỉ giùm (ghi rõ ý nghĩa tham số nếu có nhé)
Cám ơn nhiều.
Mở Paint + File : thì dùng ShellExecute đi :
C++ Code:
#include <windows.h> int main () { ShellExecute(NULL,"Open","mspaint.exe","C:\\0000.jpg",NULL,SW_SHOWNORMAL); return 0; }
Change Wallpaper thì dùng IActiveDesktop đi .
Để mình thử xem sao
Thank trước.
Sao khi tui về thử thì thấy như sao:
- IActiveDesktop : tui không thể tìm thấy trong MSDN (đang dùng Visual Studio 2005 c#)
=> nếu có dùng COM thì xin chỉ dùm là COM nào. Thank.
- ShellExecute : đã sử dụng nhưng chỉ mở được với đường dẫn file không có ký tự trắng '[space]'. Với đường dẫn có khoảng trắng thì phần sau khoảng trắng bị bỏ đi -> sai đường dẫn.
=> xin chỉ cách khắc phục. Thank.
Giờ mình đã khắc phục được việc Set as Background.
Cảm ơn đã góp ý.
Bọc lại đường dẫn tới file bằng quote : "\"file_path\""
Ví dụ :
C++ Code:
#include <windows.h> int main () { char szFileName[_MAX_PATH + 1] = "\"F:\\App Workspace\\IMG_3098.jpg\""; ShellExecuteA(NULL,"Open","mspaint.exe",szFileName,NULL,SW_SHOWNORMAL); return 0; }
Đã được chỉnh sửa lần cuối bởi Tab : 22-07-2008 lúc 06:07 AM.
Để mở file thì trong C# cậu dùng cái này: ProcessStartInfo
Ví dụ nhé:
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = @"filename";
startInfo.UseShellExecute = false;
Process process = new Process();
process.StartInfo = startInfo;
process.start();
Tớ nhớ thế cậu coi lại thử. Học C# thì cũng ko quá phụ thuộc vào API đâu.
Hiện giờ mình đã hoàn thành xong 2 chức năng trên.
Cảm ơn đã nhiệt tình giúp đỡ. Thank all